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

Fir*_*rze 4 linux ssh sftp file-permissions umask

我一直在试图找出文件权限有什么问题。当我使用 FileZilla 上传文件时,所有文件都获得权限 -rw-r--r--。我希望他们有 -rwxr-xr-x。我曾尝试使用 umask 来修复权限,但出了点问题。我读过您可以像这样使用 umask 更改权限,例如:

在 /etc/ssh/sshd_config 中,更改以下内容:

Subsystem sftp /usr/lib/openssh/sftp-server -u 002
Run Code Online (Sandbox Code Playgroud)

通过此更改,我将使用 -rw-rw-r-- 获取文件。据我所知 0 应该赋予所有权利?但我只得到 rw。

怎么了?我正在使用 Debian。

Mar*_*ryl 10

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

这是硬编码的,您无法更改它。参见OpenSSH 中的process_open()函数sftp-server.c。甚至,如果没有明确指定,0666 仍然是文件的 *nix 默认值,您不能只用 umask 更改它(通常情况下是这样,不仅适用于 OpenSSH)。

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

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

FileZilla 从不指定上传文件的权限。是什么导致了您正在经历的行为。


要获得所需的权限:

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

    在 FileZilla 中更改权限

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

    例如 WinSCP 允许这样做。

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

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

    (我是 WinSCP 的作者)

  • 我切换到 WinSCP 并按照您的指示进行操作,现在一切正常。 (2认同)