如何用SFTP放置所需的umask?


23

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

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

我已经尝试过为sftp-server使用一个包装,该包装在调用sftp-server之前更改了umask,没有运气。

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

Answers:


25

我认为从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.

真好!!我将尽快查看一下并报告我的发现:)
mat_jack1 2010年

5
对于不带-u选项的用户,此方法有效:Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
Steve Clay

1
好的解决方案。它解决了客户端外壳程序和应用程序(例如Cyber​​Duck)的问题,这些客户端外壳程序和应用程序设置了其默认权限,而与系统umask无关。我发现确保每个客户端应用程序设置正确的权限以使我的用户在组文件上一起工作非常有用。还可能需要添加此设置,如果用户愿意,它不会阻止用户自定义文件权限。
gerlos 2014年

最后要添加的一件事:如果只需要sftp功能并且不需要授予用户外壳程序访问权限,则可以考虑也使用rssh而不是bash作为其外壳程序,并在/etc/rssh.conf中为他们设置默认umask 。这可能会使您的服务器更安全
gerlos 2014年

7

我希望这可以节省别人的挫败感...

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

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


^^是的,很长一段时间以来,我一直在通过制作类似于Weboide解决方案的脚本在sftp连接上设置umask。最近,我想弄清楚为什么这种方法似乎不像过去那样有效。显然,在某个时候,对我的SFTP客户端进行了更新,使其在与ssh连接后显式设置了umask,因此,如图。
Jared Kipe

不只是GUI。甚至没有客户。我花了很长时间才发现我上传的测试文件有0600,客户端(OpenSSH sftp)将其复制到了远程。
xebeche

谢谢!花了这么长时间玩,没有任何权限。
塔尼亚·拉斯西亚

2

经过数小时的尝试,应用各种技巧和修复程序后,我找到了合适的解决方案!

有一个SSH修补程序,允许您选择要用于SFTP的umask。您可以在这里下载:http : //sftpfilecontrol.sourceforge.net/

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


2
只是要注意,从5.4p1开始,用于设置umask的选项“ -u”在OpenSSH中可用,请查看我的答案。
Weboide

2

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

ForceCommand internal-sftp -u 0022   

0

引用此消息

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

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


2
感谢您的回答,但是我已经在ssh umask 002中(我也尝试了0002),但它不起作用:(也没有考虑bashrc,因为与外部SFTP客户端一样,我不认为使用了bash。如果我直接用ssh登录,一切都很好,我的问题仅在于SFTP客户端,谢谢!
mat_jack1

糟糕,您是对的。我不知道我为什么要考虑参与Bash。
暂停,直到另行通知。

0

请参考此问题以找到不需要特定的openssh版本或自定义补丁的简单解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.