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权限分配给新创build的文件(减去umask 0002生成0664)。

这是硬编码的,你不能改变它。 请参阅OpenSSH的sftp-server.c中的process_open()函数。 甚至,如果没有明确指定,0666仍然是文件的* nix默认值,你不能只用umask(通常是这样,而不仅仅是OpenSSH)来改变它。

另请参见OpenSSH SFTP服务器在put命令(chrooted环境)后是否使用umask或保留客户端权限?

请注意,你的umask实际上是错误的。 如果你想要0644,使用umask 0022,而不是0002。

FileZilla从不指定上传文件的权限。 什么样的结果,你正在经历的行为。


为了达到你想要的权限:

  • 使用FileZilla,您只能在上传之后手动更改文件权限,使用远程文件上下文菜单中的文件权限命令。

    在FileZilla中更改权限

  • 使用允许指定上载文件权限的SFTP客户端。

    例如WinSCP允许。

    请参阅https://winscp.net/eng/docs/ui_transfer_custom

    在WinSCP中设置上传文件的权限

    (我是WinSCP的作者)