Ssh
使用 OpenSSH sftp 命令放置文件時如何指定文件權限
我正在使用各種 SFTP 客戶端將文件上傳到 SFTP 伺服器,並且在放置文件時使用的預設權限存在問題。
當請求放置文件時,WinSCP 或 Filezilla 等 SFTP 客戶端將發送 SSH_OPEN 命令,而無需請求任何明確的文件權限。
另一方面,看起來 Linux(Red Hat 和 Ubuntu)上的 OpenSSH sftp 命令正在等待 SSH_OPEN 命令以及“640”模式。
如何將 OpenSSH 命令配置為不顯式設置文件模式,或者如何將其配置為發送模式,而不是 640?
非常感謝!
更新:
我檢查了 OpenSSH sftp 客戶端原始碼,看起來即使未設置 -P,OpenSSH sftp 也會始終嘗試保留文件模式: http ://www.koders.com/c/fidD3B20680F615B33ACCB42398FAAFEE1C007DF942.aspx?s=rsa#L986
為了解決這個問題,我使用了 Putty SFTP 客戶端。
如果 SFTP 客戶端沒有為上傳的文件指定權限,OpenSSH SFTP 伺服器會為新創建的文件分配 0664 權限。這是預設的 umask 0002,您可以使用
-u
開關更改它,就像@JimB 顯示的答案一樣。如果 SFTP 客戶端指定了權限,OpenSSH 伺服器使用指定的權限(umask 不適用)。
一些流行的 SFTP 客戶端概述:
- PSFTP:不允許您為上傳的文件設置權限。(但 Unix 版本保留源本地文件的文件)
- OpenSSH
sftp
:不允許您為上傳的文件設置權限。保留源本地文件的文件。有關-P
交換機的詳細資訊,請參閱OpenSSH SFTP 伺服器是否使用 umask 或在 put 命令後保留客戶端權限(chroot 環境)?- WinSCP:您可以設置上傳文件的權限
請參閱https://winscp.net/eng/docs/ui_transfer_custom
(我是WinSCP的作者)
- FileZilla:不允許您為上傳的文件設置權限。伺服器的預設值 (umask) 適用。