Www-data 权限?

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

259495 次浏览
sudo chown -R yourname:www-data cake

那么

sudo chmod -R g+s cake

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

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

Slicehost 的一篇文章所述:

用户设置

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

sudo usermod -a -G www-data demo

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

您需要注销并重新登录才能启用该组 改变。

Check the groups now:

groups
...
# demo www-data

So now I am a member of two groups: My own (demo) and the Apache group (www-data).

文件夹设置

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

我们来安排一下:

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

在我们讨论权限时,我将添加一个关于 Sudo 命令: 使用绝对路径是一个好习惯 (/home/demo/public _ html) ,而不是相对路径 (~/public _ html) 位置。

如果您有一个带有符号链接的 public _ html 文件夹,那么 请小心使用该命令,因为它将遵循符号链接 例如,一个可工作的 public _ html 文件夹,手动更改每个文件夹。

赛吉德

目前为止一切正常,但是请记住我们刚刚下达的命令只是影响 现有的文件夹,有什么新的吗?

We can set the ownership so anything new is also in the 'www-data' 小组。

第一个命令将更改 public _ html 的权限 目录中包含“ setgid”位:

sudo chmod 2750 /home/demo/public_html

这将确保任何新文件都被分配给组“ www-data” 如果你有子目录,你需要为每个子目录运行命令 子目录(此类权限不适用于’-R’)。 幸运的是,新的子目录将使用“ setgid”位创建 自动设定。

如果我们需要允许对 Apache 的写访问,那么就需要对上传目录进行写访问 for example, then set the permissions for that directory like so:

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

The permissions only need to be set once as new files will 自动分配正确的所有权。

假设您想要 sftp 进入一个共享使用 www-data 的读取、写入和执行权限的目录,您应该这样做:

1-加入 www-data 组

sudo usermod -a -G www-data <your_user>

递归地设置所需用户: 文件夹和文件的组所有权

sudo chown -R <your_user>:www-data <your_folder>

3-为所有用户添加权限(读写执行)(a + rwx) ; 限制来自其他用户的权限(o-rwx) ; 为在该目录下创建的每个新文件(ug + s)设置相同的(继承的文件夹) user: group。这将递归地并且只在文件夹中执行(可能正是您想要的)

sudo find <folder_name> -type d -exec chmod a+rwx,o-rwx,ug+s {} +