设置用户创建新文件时的默认组?


37

当我通过SSH创建文件时,通常会发现它们属于自己jm:jm,例如,这些文件归所有者所有。

然后,要允许Apache访问它,我需要例如执行do chown jm:www-data

我确定我可以在创建文件时指定,而不是使用我的名字下的组,而是指定另一个?

还是有更好的方法来管理用户/组?

Answers:


73

如果要使特定目录中的所有新文件归特定组所有,只需setgid在其上应用位:

chgrp www-data /some/dir
chmod g+s /some/dir

如果您已有要应用此行为的目录树,则可以使用find

find /some/dir -type d -exec chgrp www-data {} +
find /some/dir -type d -exec chmod g+s {} +

(如果目录已由相关组拥有,则在这两个示例中都可以省略第一个命令)。


1
好答案!您能否说明这些符号... {} +是什么意思?
亚历山大·洛米亚

3
它们是find命令的参数,在手册页中有介绍。对于第一次调用,它将运行命令chgrp www-data,并附加多个结果作为参数(而不是像那样对每个结果调用一次命令{} \;)。
詹姆斯·亨斯特里奇

6
为什么不使用chmod g+s /some/dir -R?刚刚测试,它似乎可以工作。
Cragmonkey

13
@Cragmonkey:这也会在常规文件上设置setgid位。如果它们中的任何一个恰好是可执行的,这将允许系统上的另一个用户获得拥有该文件的组的特权。
James Henstridge
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.