Linux

強制 SFTP/SCP 以遠端目錄的權限複製文件

  • February 8, 2018

我在使用 SFTP 和 SCP 時遇到問題,其中複製的文件沒有繼承遠端父目錄的權限。我在修改 SFTP/SCP 會話的 serverfault 上看到了類似的問題umask,但是,這並不一定能解決我的問題,因為某些目錄需要與其他目錄具有不同的權限。因此,我沒有預設umask設置。

因此,我想強制複製的文件具有遠端系統上父目錄設置的權限。基本上,我希望 SCP/SFTP 的工作方式與cp沒有選項的-p工作方式相同。目前 SFTP/SCP 正在模仿cp -p行為。

這是我想要發生的事情:

1.)使用者想要複製foo.txt具有權限的文件:

-rw--------。1 個使用者使用者 0 Feb 29 09:08 foo.txt

2.)使用者使用SCP複製foo.txt到目錄下的伺服器/bar/bar有權限(setgid 已設置):

drwxrws---+ 3 root 使用者組 4096 Feb 28 12:19 bar

3.)/bar具有以下 facl 的集合:

使用者::rwx
組::rwx
組:使用者組:rwx
預設值:使用者::rwx
預設值:組::rwx
預設值:組:使用者組:rw-

4.)foo.txt 具有以下權限(和 facl):

-rw-rw----+ 1 個使用者使用者組 0 Feb 29 09:33 foo.txt
使用者::rw-
group::rwx #有效:rw-
組:使用者組:rw-

5.) 相反,foo.txt具有以下權限:

-rw-------+ 1 個使用者使用者組 0 Feb 29 09:36 foo.txt
使用者::rw-
組::rwx #有效:---
組:使用者組:rw- #有效:---

有沒有一種簡單的方法可以讓文件獲得上述預期權限?

另外,我的facl有意義嗎,還是多餘的?

**編輯:**修復文章以正確顯示。(Serverfault 的程式碼和編號不能很好地工作。我需要將東西包裝在 pre 標籤中。)

從手冊頁:“當 scp 複製文件時,目標文件是使用某些文件屬性創建的。預設情況下,文件權限遵循目標主機上的 umask,修改和上次訪問時間將是複制的時間. 或者,您可以告訴 scp 複製原始文件的權限和時間戳。-p 選項可以完成此操作。

例如:

sftp user@server:backup <<< $'put -rp mysoftware/mysqldump'

根據上面的資訊,如果不使用 cronjob 設置權限,我不確定你想要什麼。umask 選項僅適用於正在創建的文件。Setgid 僅適用於組。我相信您可以編寫一個遞歸設置權限的工作,但這就是我能想到的所有內容,除非我誤解了這個問題,否則會導致您所描述的內容。

引用自:https://serverfault.com/questions/364882