因此,我在/ var / www中有一个目录(称为cake),我需要允许www-data对其进行写入,但我也想对其进行写入(而不必使用sudo)。如果我的计算机(或黑客)上的其他用户试图修改该目录中的文件,恐怕会将权限更改为777。如何只允许我自己和Apache的www-data访问?
sudo chown -R yourname:www-data cake
然后
sudo chmod -R g+s cake
第一个命令更改所有者和组。
第二个命令添加了s属性,它将使cake中的新文件和目录具有相同的组权限。
用户设置
因此,首先将主要用户添加到Apache用户组:
sudo usermod -a -G www-data demo
将用户'demo'添加到'www-data'组。确保使用上面显示的usermod命令同时显示了-a和-G选项。
您需要注销并重新登录才能启用该组更改。
立即检查组:
groups ... # demo www-data
所以现在我是两个小组的成员:我自己的(演示)和Apache小组(www-data)。
文件夹设置
现在,我们需要确保public_html文件夹归主要用户所有(演示),并且是Apache组(www-data)的一部分。
让我们进行设置:
sudo chgrp -R www-data /home/demo/public_html
我们在讨论权限时,我会在以下内容中添加简短说明:sudo命令:使用绝对路径是一个好习惯(/ home / demo / public_html)而不是相对路径(〜/ public_html)。它可以确保正确使用sudo位置。
如果您在public_html文件夹中放置了符号链接,请小心该命令,因为它将遵循符号链接。在那些如果有工作中的public_html文件夹,请手动更改每个文件夹。
Setgid
到目前为止,还不错,但是请记住,我们刚刚给出的命令只会影响现有文件夹。那有什么新东西吗?
我们可以设置所有权,因此“ www-data”中也包含任何新内容组。
第一个命令将更改public_html的权限目录中包含“ setgid”位:
sudo chmod 2750 /home/demo/public_html
这将确保所有新文件都具有“ www-data”组。如果您有子目录,则需要为每个子目录运行该命令子目录(这种权限不适用于'-R')。幸运的是,将使用“ setgid”位创建新的子目录自动设置。
如果需要允许对Apache的写访问权限,请访问上载目录例如,然后按如下所示设置该目录的权限:
sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads
[权限只需设置一次,因为新文件将自动分配正确的所有权。