如何使用特定的活動組將文件從遠端複製到本機?

如何使用特定的活動組將文件從遠端複製到本機?

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

相關內容