www数据权限?


108

因此,我在/ var / www中有一个目录(称为cake),并且需要允许www-data对其进行写入,但我也想对其进行写入(而不必使用sudo)。如果我的计算机(或黑客)上的其他用户试图修改该目录中的文件,恐怕会将权限更改为777。如何只允许我自己和Apache的www-data访问?

Answers:


168
sudo chown -R yourname:www-data cake

然后

sudo chmod -R g+s cake

第一个命令更改所有者和组。

第二个命令添加了s属性,该属性将使cake中的新文件和目录具有相同的组权限。


3
为什么chmod g + s是递归的?
Ben Rogmans 2014年

不知道g + s。非常非常方便!
FRAGA

1
用户如何处理蛋糕本身中由www-data创建的文件以及由www-data创建的目录中由www-data创建的文件?例如,关于编辑,重命名,删除操作?据我了解,重命名和删除是不可能在www-data创建的目录内进行的,而对www-data创建的文件的编辑完全不可能。
qdinar '17

49

正如Slicehost一篇文章中所述:

用户设定

因此,让我们从将主要用户添加到Apache用户组开始:

sudo usermod -a -G www-data demo

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

您将需要注销并再次登录以启用组更改。

现在检查组:

groups
...
# demo www-data

现在,我是两个小组的成员:我自己的小组(演示)和Apache小组(www-data)。

资料夹设定

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

让我们进行设置:

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

在讨论权限时,我将简要介绍一下sudo命令:使用上图所示的绝对路径(/ home / demo / public_html)而不是相对路径(〜/ public_html)是一个好习惯。这样可以确保在正确的位置使用sudo。

如果您有一个带有符号链接的public_html文件夹,则请谨慎使用该命令,因为它将跟随符号链接。在那些使用public_html文件夹的情况下,请手动更改每个文件夹。

塞吉德

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

我们可以设置所有权,因此“ 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

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


这个解决方案对我有用。在此之前,我总是使用root用户从终端运行服务器。使用此解决方案,我可以将文件上传到具有权限770的目录。这真棒,因为在此之前,我只能使用777权限来上传文件。
Ifan Iqbal 2015年
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.