
我有一個用戶 myuser,只允許透過 sftp 連接到 ssh。我希望該用戶始終使用 rwx-rwx-rx 建立文件,並且始終由 apache 群組擁有。我嘗試使用 umask 來完成檔案權限部分,但在 umask 中,檔案和目錄對同一 umask 取得不同的權限。感謝幫助。
答案1
背景
這是sftp
文件共享的一個長期存在的問題。這是因為產生的權限是基於用戶端檔案的原始權限的,而 umask( -u
) 參數並不是強制這樣的權限,而只是剝離不需要的權限。這意味著只有當使用者嘗試在具有權限的情況下上傳文件時0777
,才會應用該文件並將其剝離到0775
.否則就保持原樣。例如,如果使用者在其檔案系統上儲存了具有權限的文件0700
,則上傳後該文件也會顯示為0700
.
解決方案
最近,我們透過應用補丁在 Fedora 中解決了這個問題,該補丁使用-m
切換到sftp-server
.它是基於這個上游錯誤:
https://bugzilla.mindrot.org/show_bug.cgi?id=1844
這在目前可用CentOS 7.2。來自變更日誌:
- Add sftp option to force mode of created files (#1197989)
解決方法
cron
除了一些定期運行腳本(來自),修復錯誤的權限之外,沒有其他優雅的解決方案。這可能是 bash 中的一些俏皮話,但我想你可以想到一些。如果您有興趣,我可以詳細說明這一點。
或者您可以用來inotify
提前“捕獲”更改。
群組應該是從父目錄繼承的,不是嗎?