如何为Ubuntu服务器设置SFTP的默认权限?


16

我们有一个Ubuntu 10.04服务器。如何设置它,以便通过SFTP或SSH创建(或复制)的新文件具有g + rw和g + rwx权限(在适当的情况下)?

我还使用setgid(chmod g + s),以便它们继承适当的组所有者。

Answers:


12

在/ etc / ssh / sshd_config中,您可以像下面这样在(-u 0002)中传递标志和值来设置umask值:

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

将-u 0002附加到配置文件的现有Subsystem sftp行中。

之后,您将需要重新启动ssh才能使更改生效:

service ssh restart

这仅适用于较新版本的OpenSSH,但应尽可能成为首选解决方案。
Andrew B

2
仅当您需要的限制权限比客户端设置的限制更多时才有效,而不是更加宽松。
Joost

如Joost所说,这无助于强制进行组写权限。我会帮助禁止小组写作。
航班

根据最新文档,相同的选项可以与一起使用Subsystem sftp internal-sftp
underscore_d 2015年

10

在/ etc / ssh / sshd_config中,更改以下内容:

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

至:

Subsystem sftp /bin/sh -c 'umask 0002; exec /usr/libexec/openssh/sftp-server'

来源:http//jeff.robbins.ws/articles/setting-the-umask-for-sftp-transactions


1
最好exec在决赛前放置/usr/.../sftp-server,这样您就不会有无用的sh过程了。
user1686 2010年

而且,umask只是一个数字;0002可以写成更短的02
user1686 2010年

我以为umask是八进制的,但是感谢exec部分。
wag2639 2010年

2
是的,umask 八进制的。这并不意味着您需要三个前导零-一个就足够了。(实际上,该umask命令不需要任何前导零,它始终将参数读取为八进制数。)...但是,从第二个角度考虑,也许0002更容易理解。
user1686 2010年

2
这对我不起作用。它不会强制执行g + w权限。
航班
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.