www-data权限?

时间:2012-02-03 17:43:03

标签: apache permissions sudo

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

3 个答案:

答案 0 :(得分:145)

sudo chown -R yourname:www-data cake

然后

sudo chmod -R g+s cake

第一个命令更改所有者和组 第二个命令添加了s属性,该属性将使蛋糕中的新文件和目录保持相同的组权限

答案 1 :(得分:42)

an article by Slicehost中所述:

  

用户设置

     

让我们首先将主用户添加到Apache用户组:

sudo usermod -a -G www-data demo
     

将用户'demo'添加到'www-data'组。确保你使用   -a和-G选项都带有上面显示的usermod命令。

     

您需要退出并重新登录才能启用该群组   变化

     

立即检查群组:

groups
...
# demo www-data
     

所以现在我是两个小组的成员:我自己的(演示)和Apache小组   (WWW的数据)。

     

文件夹设置

     

现在我们需要确保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
     

只需将新文件设置为权限即可   自动分配正确的所有权。

答案 2 :(得分:0)

假设您想通过 sftp 进入一个与 www-data 共享读取、写入和执行权限的目录,这就是您应该做的:

1 - 将自己添加到 www-data 组

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

2 - 为您的文件夹和文件递归设置所需的用户:组所有权

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

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

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