Ssh

使用 OpenSSH sftp 命令放置文件時如何指定文件權限

  • September 13, 2021

我正在使用各種 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 客戶端概述:

請參閱https://winscp.net/eng/docs/ui_transfer_custom

WinSCP 傳輸設置

(我是WinSCP的作者)

  • FileZilla:不允許您為上傳的文件設置權限。伺服器的預設值 (umask) 適用。

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