www-data权限?

问题描述 投票:102回答:2

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

apache permissions sudo
2个回答
159
投票
sudo chown -R yourname:www-data cake

然后

sudo chmod -R g+s cake

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

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


47
投票

an article by Slicehost中所述:

用户设置

因此,首先将主要用户添加到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

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

© www.soinside.com 2019 - 2024. All rights reserved.