我有user1
,是该小组的成员www-data
。
$ groups user1
> user1 : user1 www-data
我无法在 /var/www/test 下添加或删除任何内容
/var/www/test
归 www-data所有
$ ls -l /var/www/test
> drwxr-sr-x 2 www-data www-data 4096 aug 11 12:02 subtest
如何允许user1
管理创建的文件和目录www-data
?
我已经尝试过
- 将主要组更改
user1
为www-data
- 退出/登录
答案1
请尝试以下操作:
sudo chgrp -R www-data /var/www/test
sudo chmod -R g+w /var/www/test
此外:
sudo find /var/www/test -type d -exec chmod 2775 {} \;
sudo find /var/www/test -type f -exec chmod ug+rw {} \;
我希望您理解上述命令的意义,因为它们非常清楚。
不要忘记注销/登录。
答案2
我终于找到了更干净的东西
在用户个人目录中添加 Web 目录
mkdir -p /home/user1/websites/appOfUser1
chown -Rf user1:user1/home/devone/websites
chmod -Rf 770 /home/user1/websites
然后在/etc/fstab中添加这一行(之前安装bindfs)
bindfs#/var/www/application1 /home/user1/websites/appOfUser1 fuse force-user=user1,force-group=user1,create-for-user=www-data,create-for-group=www-data,create-with-perms=0770,chgrp-ignore,chown-ignore,chmod-ignore 0 0
最后安装它!
mount /home/user1/websites/appOfUser1
它解决了并发问题,因为等式中的每个用户(每个开发人员和 Web 服务器)都看到了他正确安全地操作所需的权限;
它解决了不渗透性问题,因为如果您需要一个开发人员访问某个特定的应用程序,那么您必须在其主目录中添加一个挂载点,但相反,如果您需要一个开发人员不访问某个特定的应用程序,那么您只需要不在其主目录中添加这样的挂载点。
它解决了稳定性问题,因为开发人员永远无法更改应用程序文件上设置的文件权限,而这是 Web 服务器正常安全地运行所必需的。
最重要的是,它易于理解和设置!