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

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

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

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

我已经尝试使用 sftp 服务器的包装器,在调用 sftp 服务器之前更改 umask,但没有成功。

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

答案1

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

Subsystem sftp /usr/lib/openssh/sftp-server -u 022

从手册页中:

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

答案2

我希望这可以让别人免于数小时的沮丧......

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

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

答案3

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

ForceCommand internal-sftp -u 0022   

答案4

去引用这条信息

通过在 /etc/init.d/ssh 中添加“umask 007”行,我使其正常工作。

Bash 使用.profile进行交互式登录 shell。我认为不算一个。如果上面的提示不起作用或者您想要更细粒度的控制,sftp您可能能够在/etc/bash.bashrc或中设置 umask。~/.bashrc

相关内容