如何给所有权而不是根? (需要Apache)

我有一个PHP脚本,在我的服务器上创build一个文件夹。 这个文件夹应该通过Apache访问,用户可以在线查看。

现在,如果我在创build这个文件夹的时候一切正常,我可以在网站上查看html / php。

如果我在用户Apache(或者运行我的脚本)时创build这个文件夹,我可以创build文件夹,把所有的文件放到里面,但是当我login到我的网页时,它会显示:

You don't have permission to access / on this server. 

现在我不太了解Apache,但对我来说,最简单的解决scheme是将我的文件夹的所有权归给root。 我尝试input:

 chown root:root /blabla/myfolder 

它写道:

 chown: changing ownership of 'myfolder/': Operation not permitted 

这是为什么 ?

谢谢

你不需要改变所有者和组在根目录上,也不需要。 但是,您可以通过以下方式为组和其他人授予读取权限:

 chmod go+r foldername 

例:

 yvaine:~ rilindo$ ls -la | grep test drw------- 2 rilindo staff 68 Dec 5 01:10 test yvaine:~ rilindo$ chmod go+r test yvaine:~ rilindo$ ls -la | grep test drw-r--r-- 2 rilindo staff 68 Dec 5 01:10 test 

但是,如果它是一个空文件夹,则默认情况下可能会在Apache中禁用目录浏览。 在这种情况下,您可以在节中添加或修改某处:

 Options +Indexes 

请注意,除非有充分的理由,否则通常最好禁用目录浏览。

其他人似乎在回答你“我该如何解决这个问题?”这个隐含的问题,并且做得很好,所以我想我会回答你的“为什么?”的实际问题。

通过chown声明一个文件,也就是说,将其声明给某个其他用户,对于所有非root用户来说都是被禁止的。 考虑以下顺序:

 cp /bin/bash ~/naughty 

现在,您的主目录中有一个bash副本。 你拥有它。 没什么大不了。

 chmod 4755 ~/naughty 

现在你有一个可以被任何人运行的bash副本,任何运行它的人都会成为你,因为你已经在二进制文件上设置了SUID位,并且你拥有了这个文件。 不太好。

 chown root:root ~/naughty 

恭喜,你刚刚植根于你的系统; 你有一个SUID的shell的副本,可以由任何人运行。

还有其他一些原因,为什么放弃一个文件的权力是不好的,例如,如果任何人可以创build一个大文件,然后把它交给另一个用户,它会混淆光盘配额。 但是杀手的原因就是上面的那个,要堵住这个洞(唯一的办法就是不要去掉SUID,这个想法很好但很难做),就是说不是root的人可以把文件给另一个用户。