duf*_*uff 31 linux permissions ubuntu
我正在创建一个网站,部分功能是用 php 写出用户生成的数据。我在 Ubuntu 13.04 上使用 nginx。在我只是测试的那一刻,一切都是通过 locahost 上的 nginx 提供的。
我的 php 脚本无法写入文本文件(尽管我可以手动执行此操作),我认为这是写入我的 /var/www/example.com/public_html 目录的权限问题。
目前我(iain)拥有这个目录,但似乎将 /var/www 目录的所有权以及其中的所有内容转移到 www-data 用户(或者应该是组?)并将我自己添加到www-data 组。以下是正确的方法吗?
useradd -G www-data iain
chown -R www-data:www-data /var/www/example.com
chmod 775 /var/www
Run Code Online (Sandbox Code Playgroud)
那么这是否意味着 www-data 组中的任何人现在都可以在 /var/www 中读取、写入和执行?
Cal*_*imo 62
首先,useradd创建一个新用户。由于您 (iain) 已经存在,您想改为调用usermod。所以那将是:
sudo usermod -aG www-data iain
addgroup www-data
Run Code Online (Sandbox Code Playgroud)
(请注意-a基于 Debian 的服务器(包括 Ubuntu)会将您添加到该组,并将您的成员资格保留在其他组中。忘记它,您将只属于 www-data 组 - 如果其中一个,可能是一种糟糕的体验他们是轮子。在 SUSE 类型的服务器上,该选项-A不是-aG所以请man usermod仔细阅读以使其正确。)
其次,您不希望 apache 拥有对 的完全 rw 访问权限/var/www:这可能是一个重大的安全漏洞。作为一般规则,只允许您需要的东西,仅此而已(最小特权原则)。在这种情况下,您需要 apache ( www-data) 和您(www-data组)来写入(和读取)/var/www/example.com/public_html,所以
sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 770 /var/www/example.com/public_html
Run Code Online (Sandbox Code Playgroud)
编辑:回答你原来的问题,是的,任何成员www-data现在都可以读取和执行/var/www(因为你的最后一位权限是 5 = read + exec)。但是因为您没有使用该-R开关,所以它仅适用于/var/www,而不适用于它包含的文件和子目录。现在,他们是否可以写是另一回事,取决于/var/www您尚未设置的 组。我想它通常是root:root,所以不,他们(可能)不能写。
2014 年 6 月 22 日编辑:添加了一条说明,该-aG选项在基于 Debian 的服务器上有效。它显然随发行版而变化,因此man在执行前请仔细阅读。
| 归档时间: |
|
| 查看次数: |
242838 次 |
| 最近记录: |