如何使用 SFTP 放置所需的 umask?

mat*_*ck1 25 ssh sftp

我有一个 SFTP 服务器(openssh/sftp-server),我想为使用此服务的用户设置 umask 002。我尝试为每个用户设置 PAM (pam.d/common-session) 和 .profile,但没有运气。

使用 SSH 登录一切正常,但是当我尝试使用 SFTP(使用 gFTP)时,我设置了 022 umask。

我已经尝试为 sftp-server 使用一个包装器,它在调用 sftp-server 之前更改了 umask,但不走运。

有什么帮助吗?非常感谢!

Web*_*ide 30

我认为从 OpenSSH 5.4p1 开始,您可以使用“-u”选项,例如:

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

从手册页:

 -u umask
         Sets an explicit umask(2) to be applied to newly-created files
         and directories, instead of the user's default mask.
Run Code Online (Sandbox Code Playgroud)

  • 对于那些没有 -u 选项的人,这是有效的:`Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'` (6认同)

小智 7

我希望这可以为其他人节省数小时的挫败感...

如果您使用的是 GUI SFTP 应用程序,请检查其首选项以设置上传权限。

我已经尝试了上述所有解决方案,结果发现应用程序只是覆盖了它们。


小智 6

在 ssh 配置文件中,您还可以使用它来专门设置文件的模式(覆盖客户端可能尝试设置的任何 chmod)。这里我使用的是内部 sftp,但我想 sftp-server 也是一样的:

ForceCommand internal-sftp -u 0022   
Run Code Online (Sandbox Code Playgroud)


mat*_*ck1 2

经过几个小时尝试应用各种技巧和修复后,我找到了正确的解决方案!

有一个 SSH 补丁,允许您选择 SFTP 所需的 umask。您可以在这里下载: http: //sftpfilecontrol.sourceforge.net/

对我来说(OpenSSH_5.2p1+sftpfilecontrol-v1.3,OpenSSL 0.9.8g 2007 年 10 月 19 日)它工作得很好!

  • 只是要注意,自 5.4p1 起,用于设置 umask 的选项“-u”在 OpenSSH 中可用,请参阅我的答案。 (2认同)