이것은 Singularity뿐만 아니라 Linux 전반의 복제에 관한 질문입니다. 원격 디렉터리에서 로컬 디렉터리로 재귀적으로 복사하려고 합니다. 내 정의 파일에는 다음이 있습니다.
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 값은 루트(UID=0)입니다.
일회성 복사본인 경우 원격 시스템에 그룹을 생성하려면 루트 액세스 권한이 필요합니다. 그래서 당신은 할 수 있습니다 -주의하여- 새 그룹을 생성하려면 루트로 스크립트를 실행하세요.
두 시스템 모두에서 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
그대로 정상적으로 작동합니다.