www 数据权限?

Posted

技术标签:

【中文标题】www 数据权限?【英文标题】:www-data permissions? 【发布时间】:2012-02-26 07:53:50 【问题描述】:

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

【问题讨论】:

【参考方案1】:

假设你想 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  +

【讨论】:

【参考方案2】:
sudo chown -R yourname:www-data cake

然后

sudo chmod -R g+s cake

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

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

【讨论】:

为什么 chmod g+s 是递归的? 不知道 g+s。非常非常方便! 用户可以对 cake 本身中 www-data 创建的文件以及 www-data 创建的目录中 www-data 创建的文件执行什么操作?例如,关于编辑、重命名、删除操作?据我了解,在 www-data 创建的目录中无法重命名和删除,用户根本无法编辑由 www-data 创建的文件。【参考方案3】:

如an article by Slicehost中所述:

用户设置

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

sudo usermod -a -G www-data demo

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

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

现在检查组:

groups
...
# demo www-data

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

文件夹设置

现在我们需要确保 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 文件夹的情况下,手动更改每个文件夹。

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

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

【讨论】:

这个解决方案对我有用。在此之前,我总是使用 root 用户从终端运行服务器。使用此解决方案,我可以将文件上传到具有 770 权限的目录。这很棒,因为在此之前我只能使用 777 权限上传文件。

以上是关于www 数据权限?的主要内容,如果未能解决你的问题,请参考以下文章

通用权限管理设计数据库结构设计

更改 Apache 的文件权限 - Django

数据级的权限管理和功能级的权限管理的区别,不使用框架(shiro,springsecurity)做权限设计的思考

MySQL数据库设置远程访问权限方法小结

/var/www 中的符号链接权限被拒绝

用户角色权限-数据库设计案例(转载)