Linux
SFTP 伺服器上傳的文件有錯誤的權限
我一直在試圖找出文件權限有什麼問題。當我使用 FileZilla 上傳文件時,所有文件都獲得權限 -rw-r–r–。我希望他們擁有-rwxr-xr-x。我曾嘗試使用 umask 來修復權限,但出現了問題。我讀過您可以使用 umask 更改權限,例如:
在 /etc/ssh/sshd_config 中,更改以下內容:
Subsystem sftp /usr/lib/openssh/sftp-server -u 002
通過此更改,我將使用 -rw-rw-r– 獲取文件。據我所知 0 應該賦予所有權利?但我只得到rw。
怎麼了?我正在使用 Debian。
如果 SFTP 客戶端沒有為上傳的文件指定權限,OpenSSH SFTP 伺服器會為新創建的文件分配 0666 權限(減去 umask 0002 會得到 0664)。
這是硬編碼的,您無法更改它。參見OpenSSH
process_open()
中的功能。sftp-server.c
甚至,如果沒有明確指定,0666 仍然是文件的 *nix 預設值,您不能只使用 umask 更改它(這通常是正確的,不僅適用於 OpenSSH)。另請參閱OpenSSH SFTP 伺服器是否使用 umask 或在 put 命令後保留客戶端權限(chroot 環境)?
請注意,您的 umask 實際上是錯誤的。如果您想要 0644,請使用 umask 0022,而不是 0002。
FileZilla 從不指定上傳文件的權限。是什麼導致了您正在經歷的行為。
要獲得所需的權限:
- 使用 FileZilla,您只能在上傳後使用遠端文件上下文菜單中的文件權限命令手動更改文件權限。
- 使用允許為上傳文件指定權限的 SFTP 客戶端。
例如 WinSCP 允許這樣做。
請參閱https://winscp.net/eng/docs/ui_transfer_custom
(我是WinSCP的作者)