3 个用户,1 个文件夹。用户:vsftpd(FTP 服务器)、bobmarley(普通用户)、www-data(Apache 用户)
如何将它们统一起来,使得每个用户都可以修改这些用户的任何数据,而无需执行 CHMOD 777?
例如:bobmarley 创建了一个文件“settings.inc.php”,www-data 尝试访问该文件并成功。vsftpd 用户访问该文件并且也可以修改它。
答案1
创建一个组 ( groupadd
)...chgrp
将目录添加到该新组... 然后将每个用户添加到该组。这是最简单的方法。您可能还想chmod g+s
在目录中确保新文件与父目录属于同一组。
哒哒!
答案2
groupadd webapp
usermod -a -G webapp vsftpd (but I think it should be nobody)
usermod -a -G webapp bobmarley
usermod -a -G webapp www-data
chgrp -R webapp /path/to/folder
chmod -R g+w /path/to/folder
如果此文件夹中有现有数据,则可以使用以下命令为所有子文件夹设置 SGID:
find /path/to/folder -type d -print0 | xargs -0 chmod g+s /path/to/folder
记得将 vsftpd、Apache 和 bobmarley 设置umask
为 002。使用此配置,任何用户创建的所有文件都具有 664 权限,归webapp
组所有,并且其他用户可以修改。
答案3
将它们全部放在一个公共组中。chgrp
将文件放入该组中。chmod
将文件/目录放入 664/775 中。
答案4
将它们分组。这就是 POSIX 中有组的原因。创建一个组xyz
并将 vsftpd、bobmarley 和 www-data 放入其中。
然后将该组分配给带有的文件夹/文件chgrp
。