我正在重新考虑我们的服务器的许可和组策略。 所以我试图检查Apache的当前设置需要什么权限才能访问这些文件。
我改变了index.php的权限为200(只写为用户)。 但是Apache仍然可以读取这个文件 ! 然后我重新启动了Apache,解决了这个问题。 Apache以root身份运行,还是需要重新启动以使权限生效?
使用apache,你以root身份启动它,但是apache在启动之后改变它的用户权限。 以下在Apacheconfiguration文件中设置将运行的用户:
User www-data Group www-data
它必须以root身份启动,因此它可以绑定到<1024端口。所以,运行ps aux来看看它是如何启动的,如果你想改变它运行的用户,就调整这些指令。
在许多Linux发行版上,默认情况下,apache是以www-data的forms运行的
如果不知道你的分布是很难说的
告诉进程权限的最好方法是用ps aux – 列出进程的UID。 现在你已经重新启动了这个过程,没有真正的方法来看看发生了什么事情,因为没有像BSD过程会计运行的东西。
Chmod 200将允许文件的所有者写入,但不能读取文件。
你想要做的是以下几点:
让用户“乔”拥有文件。 让组“www-data”读取它。 这样 – joe可以login和修改/上传文件,而Apache仍然可以读取它们(chown joe:www-data文件夹或文件)。
对于文件夹,Chmod * s应该被设置为类似于750(或740,如果你不想要目录列表的话)和640(或750如果它是CGI)。
我build议你学习如何chmod / chown交互,以及如何适用不同的权限。 请阅读Wikipeda: Chmod中有用的文章
我纠正了。 apache能够读取文件的实际原因将表明它已经以root身份运行。 其他的解释是,响应已经被caching在浏览器中。
我原本写道:“ 我认为apache在内存中有一个index.php的caching副本,这就是为什么看起来它仍然可以读取文件,尽pipe权限的变化。 ”