
這是一個關於 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
將按原樣正常工作。