我正在创建一个网站,该功能的一部分是用php写出用户生成的数据。我在Ubuntu 13.04上使用nginx。当时,我仅进行测试,一切都通过locahost上的nginx提供。
我的php脚本无法写入文本文件(尽管我可以手动执行此操作),并且我认为这是写入/var/www/example.com/public_html目录的权限问题。
目前,我(自己)拥有这个目录,但是将/ var / www目录的所有权以及其中的所有内容转让给www-data用户(或者应该是group?)并添加到我的目录中似乎更有意义。 www数据组。以下是执行此操作的正确方法吗?
useradd -G www-data iain
chown -R www-data:www-data /var/www/example.com
chmod 775 /var/www
那么,这是否意味着www-data组中的任何人现在都可以在/ var / www中进行读取,写入和执行?
首先,useradd
创建一个新用户。由于您(现有)已经存在,因此您想打电话usermod
。因此将是:
sudo usermod -aG www-data iain
addgroup www-data
(请注意-a
基于Debian的服务器(包括Ubuntu),它将把您添加到该组中,并保留您对其他组的成员身份。算了,您将仅属于www-data组-如果以下情况之一可能是不好的体验:在SUSE类型的服务器上,该选项-A
不是-aG
这样,因此请man usermod
仔细阅读以使其正确。)
其次,您不希望apache拥有对rw的完全访问权限/var/www
:这可能是一个重大的安全漏洞。作为一般规则,只允许您需要的内容,别无其他(最低特权原则)。在这种情况下,您需要使用apache(www-data
)和(www-data
group)来在中写入(和读取)/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
编辑:回答您的原始问题,是的,www-data
现在任何成员都可以读取和执行/var/www
(因为您的权限的最后一位是5 =读取+执行)。但是,因为您尚未使用该-R
开关,所以该开关仅适用于/var/www
,而不适用于它包含的文件和子目录。现在,他们是否可以写是另一回事,并且取决于/var/www
您尚未设置的。我猜通常是root:root
这样,所以不,他们(大概)不会写。
在2014-06-22上编辑:添加了一个注释,该-aG
选项在基于Debian的服务器上有效。它显然随分布而变化,因此man
在执行之前请仔细阅读。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句