
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
그대로 잘 작동합니다.