我正在使用各种SFTP客户端上传文件到SFTP服务器,并且在放置文件时使用默认权限时遇到问题。
当请求放置文件时,如WinSCP或Filezilla的SFTP客户端将发送SSH_OPEN命令,而不要求任何明确的文件权限。
另一方面,Linux(Red Hat和Ubuntu)上的OpenSSH sftp命令看起来正在等待'640'模式的SSH_OPEN命令。
我怎样才能configurationOpenSSH命令不明确设置文件模式,或者如何configuration它发送模式,而不是640?
非常感谢!
更新:
我检查了OpenSSH sftp客户端源代码,看起来像OpenSSH sftp将始终尝试保留文件模式,即使-P未设置: http : //www.koders.com/c/fidD3B20680F615B33ACCB42398FAAFEE1C007DF942.aspx? s=rsa#L986
为了解决这个问题,我使用了Putty SFTP客户端。
如果SFTP客户端未指定上传文件的权限,则OpenSSH SFTP服务器将0664权限分配给新创build的文件。 这是默认的umask 0002,您可以使用-u
开关作为@JimB显示的答案进行更改。
如果SFTP客户端指定权限,则OpenSSH服务器使用指定的权限(umask不适用)。
一些stream行的SFTP客户端的概述:
PSFTP:不允许您为上传的文件设置权限。 (但是Unix版本保留源本地文件的文件)
OpenSSH sftp
:不允许你设置上传文件的权限。 保留源本地文件的文件。 有关-P
开关的详细信息,请参阅OPENSSH SFTP服务器在使用put命令(chrooted环境)之后是否使用umask或保留客户端权限?
WinSCP:您可以设置上传文件的权限
请参阅https://winscp.net/eng/docs/ui_transfer_custom
(我是WinSCP的作者)
FileZilla:不允许你设置上传文件的权限。 服务器的默认(umask)适用。
sftp服务器将使用用户的默认umask创build新文件。 这可以用-u umask
选项覆盖sftp-server
SFTP-SERVER(8) -u umask Sets an explicit umask(2) to be applied to newly-created files and directories, instead of the user's default mask.
客户端(OpenSSH sftp)可以通过使用-p
选项来保留本地权限,该选项将发送文件,然后适当地修改它。
SFTP(1) -p Preserves modification times, access times, and modes from the original files transferred.
如果您严格要求如何设置sftp客户端的强制文件模式, 你不能(至less用openssh sftp-client)。 发送文件后,您将不得不发送一个chmod。
我相信sftp服务器将使用用户configuration文件的默认umask,除非它已经用明确的umask(man 8 sftp-server了解详情)启动。