Linux
強制 SFTP/SCP 以遠端目錄的權限複製文件
我在使用 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 僅適用於組。我相信您可以編寫一個遞歸設置權限的工作,但這就是我能想到的所有內容,除非我誤解了這個問題,否則會導致您所描述的內容。