www-data权限?

所以我在/ var / www目录下有一个目录(叫做cake),我需要允许www-data写入,但是我也想写入(不必使用sudo)。 如果我的机器(或黑客)上的其他用户试图修改该目录中的文件,恐怕会将权限更改为777。 我如何只允许我自己和Apache的www数据访问?

sudo chown -R yourname:www-data cake 

然后

 sudo chmod -R g+s cake 

第一个命令改变所有者和组第二个命令添加s属性,这将保持具有相同组权限的蛋糕内的新文件和目录

正如Slicehost的一篇文章所述:

用户设置

所以,让我们开始将主要用户添加到Apache用户组:

 sudo usermod -a -G www-data demo 

这将用户“演示”添加到“www-data”组。 请确保使用上面显示的usermod命令同时使用-a和-G选项。

您需要注销并重新login才能启用组更改。

现在检查组:

 groups ... # demo www-data 

所以现在我是两个组的成员:我自己的(demo)和Apache组(www-data)。

文件夹设置

现在我们需要确保public_html文件夹由主用户(demo)拥有,并且是Apache组(www-data)的一部分。

我们来设置一下:

 sudo chgrp -R www-data /home/demo/public_html 

正如我们正在讨论的权限,我将添加一个关于sudo命令的快速注释:如上所示,使用绝对path(/ home / demo / public_html)而不是相对path(〜/ public_html)是一个好习惯。 它确保sudo正在正确的位置使用。

如果你有一个带有符号链接的public_html文件夹,那么要小心这个命令,因为它将遵循符号链接。 在工作的public_html文件夹的情况下,手动更改每个文件夹。

SETGID

目前为止还不错,但请记住我们刚才给出的命令只影响现有的文件夹。 什么新东西呢?

我们可以设置所有权,因此在“www-data”组中也有新的东西。

第一个命令将更改public_html目录的权限以包含“setgid”位:

 sudo chmod 2750 /home/demo/public_html 

这将确保任何新文件都被赋予组“www-data”。 如果你有子目录,你需要为每个子目录运行这个命令(这种types的权限不能和'-R'一起工作)。 幸运的是,新的子目录将会自动设置“setgid”位。

如果我们需要允许对Apache的写入访问权限,例如对于上传目录,则设置该目录的权限如下所示:

 sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads 

权限只需要设置一次,因为新文件将被自动分配正确的所有权。