我有一个 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