SFTP 服务器上传的文件具有错误的权限

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。

答案1

如果 SFTP 客户端没有为上传的文件指定权限,OpenSSH SFTP 服务器会为新创建的文件分配 0666 权限(减去 umask 0002 等于 0664)。

这是硬编码的,您无法更改它。请参阅OpenSSHprocess_open()中的函数sftp-server.c。即使没有明确指定,0666 仍然是文件的 *nix 默认值,您也不能仅使用 umask 来更改它(这通常是正确的,而不仅仅是 OpenSSH)。

也可以看看OpenSSH SFTP 服务器是否使用 umask 或在 put 命令(chrooted 环境)后保留客户端权限?

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

FileZilla 从不指定上传文件的权限。这会导致您遇到的行为。


要获得所需的权限:

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

    在 FileZilla 中更改权限

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

    例如 WinSCP 允许这样做。

    https://winscp.net/eng/docs/ui_transfer_custom

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

    (我是 WinSCP 的作者)

相关内容