设置通过 SFTP 接收的文件的默认权限

设置通过 SFTP 接收的文件的默认权限

我正在接收通过 SFTP 从另一个系统推送到 Linux VM 上的目录的文件。这些文件获得了错误的权限u=rw g= o=。但是我需要这些文件具有像u=rw g=rw o=.

我读过很多文章建议/etc/ssh/sshd_conf像这样调整文件:Subsystem sftp internal-sftp -u 0002OR Subsystem sftp /usr/libexec/openssh/sftp-server -u 0002。我已经用 重新启动了服务器sudo systemctl restart sshd。但是,更改此设置不会影响接收文件的默认权限。我是否错过了什么?

答案1

sftp-server设置掩码对于服务器进程。 umask 影响服务器进程创建的文件的默认权限。 SFTP 客户端可以发送显式 SFTP 协议命令来覆盖权限并将其设置为客户端请求的内容。您可能正在看到这一点。

现代版本sftp-server有一个选项“-P”来禁用单个 SFTP 协议消息。您可以尝试使用它来禁用客户端发送的设置文件权限的命令。这两个消息是“setstat”和“fsetstat”。要禁用它们,请将其添加到sftp-serverinternal-sftp子系统行:

Subsystem sftp /usr/libexec/openssh/sftp-server -u 0002 -Psetstat,fsetstat
                                                        ^^^^^^^^^^^^^^^^^^

如果出现错误,请尝试运行“/usr/libexec/openssh/sftp-server -Q requests”以列出支持的请求类型。如果出现错误,则您的 SFTP 服务器软件可能太旧,无法支持“-P”选项。

进行更改后,您应该使用 SFTP 客户端(您的用户使用的同一客户端)进行测试,以确保更改达到预期效果,使 SFTP 客户端行为合理。

一些文档:

相关内容