为什么在chown后/var/www/需要755权限?为什么不是700?

3
我的Apache文件存储目录是/var/www。
如果我运行,
sudo chown -R www-data:www-data /var/www

这使得www-data成为www文件夹的所有者。由于所有静态/动态文件都将由Apache用户提供,那么为什么现在需要赋予此文件夹755权限?只给予700权限应该就可以工作了,对吧?因为在700权限下,所有者(www-data)对该文件夹具有完全权限。

因此,我的问题是,为什么我需要运行:

sudo chmod -R 755 /var/www

替代

sudo chmod -R 700 /var/www

编辑:我没有遇到任何错误。我只是出于学习目的提出这个问题。很多人建议我在/var/www/文件夹上设置755权限。只想知道为什么不能使用700。


首先,只需检查“www-data”是否确实是您的Apache用户。运行此命令:echo $(ps axho user,comm | grep -E“httpd | apache” | uniq | grep -v“root” | awk 'END {if ($1) print $1}') - John Crawford
是的,这将输出“www-data”。 - Kanishk Dudeja
这很奇怪。请将“700”值放回文件夹中,并在您尝试查看网站时更新您的问题,附上您在error_log文件中获得的确切错误输出。 - John Crawford
@JohnCrawford:我没有错误。我只是为了学习而提出这个问题。很多人建议我在var/www/文件夹上放置755权限。只是想知道为什么700不行。 - Kanishk Dudeja
1
抱歉,我的话可能有些含糊。我是指如果你按照链接中提供的设置进行操作,那么应该只使用755权限。对于你的设置,700权限也可以工作。但是,你需要知道的是,你的设置并不安全。例如,由于整个文件夹都具有读取/写入/执行权限,我可以上传一个恶意脚本到你的服务器上并执行它。 - John Crawford
显示剩余3条评论
1个回答

4
最佳布局取决于几个因素。主要是安全问题。以下是需要考虑的一些事项:
1)您希望Web服务器能够写入DocumentRoot中的文件吗?大多数情况下答案是否定的......除了上传目录等情况。在这种情况下,您需要像755这样的权限,其中所有者/组不是Apache正在运行的用户。
2)您是否有本地用户帐户(如开发人员)可以访问内容?如果是,则可能需要类似于755、root:developers(权限),以"www-data"或"apache"运行的Apache,而不在组中(受#1的限制)。
3)这些开发人员需要编辑内容(进行代码推送)吗?在这种情况下,可能更好的是775 root:developers。
700的主要问题在于它要求所有者是Apache正在运行的用户,并且给它完全权限来修改DocumentRoot中的任何文件。这通常被认为是一种安全弱点,因为一般来说,Web服务器不应修改DocumentRoot中的文件,除非有很特殊的例外。
攻击者的一个常见利用方式是欺骗您的Web应用程序将类似恶意PHP脚本的东西上传到DocumentRoot中的某个位置,然后访问该页面。其中一种对策是通过文件系统权限禁止Apache通过这种方式写入DocumentRoot。

谢谢您的回答。我还有一个疑问。“在这种情况下,您需要像755这样的东西,其中所有者/组不是Apache正在运行的用户。”在文件上传的情况下,哪个用户将尝试进行文件上传?难道不应该是www-data吗? - Kanishk Dudeja
没错 - 这是 Apache 需要拥有该目录的情况。我意识到我表达得不太好。“在这种情况下”指的是前面的情况,其中未涉及上传。上传作为例外需要其他东西。 - jakem
感谢澄清。 :) - Kanishk Dudeja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接