Как скопировать файлы с удаленного компьютера на локальный с определенной активной группой?

Как скопировать файлы с удаленного компьютера на локальный с определенной активной группой?

Это вопрос о копировании в Linux в целом, а не только в Singularity. Я пытаюсь рекурсивно скопировать из удаленного каталога в локальный. В моем файле определения есть:

scp -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b 

Проблема в том, что мне нужна группа, abcчтобы иметь доступ /a/b/cк $USER@$HOST_MACHINE. У меня есть эта группа, но ее нет в моих активных группах на удаленной машине. Я пробовал некоторые варианты , sgно все они потерпели неудачу. Например:

sg abc scp -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b 

Не получается, потому что у меня есть abcтолько в $HOST_MACHINE, а не локально. Я также пытался использовать ssh, но мне нужно копировать в локальный каталог, а не в удаленный каталог.

Я искал в документации rsync и scp, но не смог найти способ добавить группу в мои активные группы на удаленных машинах перед копированием. В общем, я ищу способ сделать:

scp -active_group abc -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b 

Как скопировать файлы с удаленного компьютера на локальный с помощью специальной группы?

По сути, я мог бы сделать следующие шаги:

  • Подключитесь к удаленной машине по SSH.
  • Помойте или используйте sgкоманду.
  • Копировать с удаленного на локальный.
  • выйти из удаленной машины.

Но скрипт должен быть автоматическим, поэтому он его ломает. Я также предполагаю, что есть способ сделать это, но я просто его упускаю.

решение1

Ваши локальные имена UID/GID не обязательно будут соответствовать удаленным именам UID/GID.

Но именно значения UID/GID важны при межмашинных передачах. Единственное гарантированное значение UID — root с UID=0.

Если это одноразовая копия, то вам понадобится root-доступ для создания группы на удаленной машине. Так что вы можете -с большой осторожностью- запустите свой скрипт от имени пользователя root - просто чтобы создать новую группу.

Вам необходимо создать группу с GID, совпадающим на обеих машинах [имя группы выбирается вами]; предположительно, у нее должен быть одинаковый набор UID на обеих машинах - [имена пользователей выбирается вами].

В идеале, «для простоты», имена групп и имена пользователей должны быть одинаковыми на двух машинах.

/etc/groupпредставляет собой файл с разделителями, содержащий список 'groupname':'x':GID:user1,user2,...

/etc/passwdдает известную перекрестную ссылку имя пользователя,UID

Однако эта процедура, по-видимому, сопряжена с очень высоким риском — даже если вы провели ее в тестовом режиме и тщательно проверили результаты.

решение2

Если возможно, вы можете просто установить set GID bitна удаленной машине:

$chmod g+s abc -R /a/b/c 

(или начать с /a- в зависимости от ваших потребностей). Это единоразовое изменение конфигурации.

Таким образом, все, что делается на удаленной машине, будет abcустановлено в качестве основной группы, и все scpбудет работать нормально.

Связанный контент