在Apache根目录中,文件的权限为770,仍然可见。

56 浏览
0 Comments

在Apache根目录中,文件的权限为770,仍然可见。

在这里,我看到了很多关于LAMP权限导致文件不可访问的问题,但没有关于使用权限使文件对HTTP客户端不可见的内容。我在我的Apache2根目录中有一些文件和文件夹,我不希望人们能通过浏览器或其他外部方式访问它们。我将权限设置为770,但似乎还不够。外部用户是以apache用户的身份访问文件吗?我在Ubuntu服务器上运行LAMP,对默认设置几乎没有进行修改,因此我的apache用户是www-data,组是:www-data,apache根目录是/var/www。我有一个/var/www/_private文件夹,它具有770权限,并且其中的文件也具有相同的权限。然而,如果我通过浏览器访问这些文件,它们仍然是可见的。客户端是以www-data用户的身份访问我的文件吗?如果是这样,我该如何纠正这个问题?在托管设置中,将\"其他\"权限设置为0就足以阻止外部直接访问文件。我需要安装额外的模块来获得这个功能吗?注意:我仍然需要我的可访问客户端的PHP脚本通过包含、fopen等方式访问这些文件...

0
0 Comments

在这个问题中,出现的原因是文件的权限设置为770,这意味着文件的所有者和用户组都可以读取、写入和执行它。猜测Apache是该文件的所有者,因此允许它访问并向世界开放。

解决方法是使用一个.htaccess文件,而不是修改服务器上的权限,以免对文件的可访问性造成伤害。.htaccess文件可以指示Apache在某些情况下采取操作,比如拒绝访问某个文件。只需要在网站根目录中创建.htaccess文件,内容如下:

<Files {你的文件名}>
deny from all
</Files>

这样就可以用Apache拒绝任何人访问该文件了。如果想要拒绝整个目录,可以使用以下代码:

<Directory /var/www/_private>
   Order Deny,allow
   Deny from all
</Directory>

尝试了上述的部分后,重新启动了Apache服务,但仍然可以从浏览器中访问_private目录中的文件。我对.htaccess文件还不太了解,需要在文件中加入其他内容吗?另外,.htaccess文件应该具有什么权限?我将所有者设置为www-data。我认为Apache不应该对文件具有写入权限,这样外部用户就无法覆盖它了。

服务器上的权限是针对服务器上的其他用户的,并不适用于Apache。你可能没有太多修改这些权限的需求。可能有其他因素导致.htaccess文件无法正常工作,可以参考stackoverflow上的一些指引:stackoverflow.com/questions/12202387/…

好的,我解决了。我将这行代码添加到了apache2.conf文件中,而不是使用.htaccess文件。我的AllowOverride可能是关闭的,这对我来说可能更好,因为我是服务器的唯一用户,并且可以访问apache2.conf文件。不过这需要一些时间来适应。当我使用托管的cPanel服务时,Apache基本上模拟了服务器上的Linux权限,将http客户端视为"其他",但将服务器端操作(例如PHP)作为Apache用户运行。

是的,apache2.conf是另一个可能放置.htaccess文件的位置,而且由于你是唯一的用户,长期来看可能会起作用。另外,在Stack Overflow上表示感谢最好的方式是点赞或接受答案!

我已经接受了答案,但显然我的声望还不够高,无法点赞 🙁 不过非常感谢你的帮助。

实际上,我应该额外感谢你。直到现在,我一直通过Google在Stack Overflow上潜水寻找答案,我认出你的名字,之前我就在你的解决方案中找到了答案。先生,你非常有才华。所以非常非常感谢你。

哇!Steven,这解决了我的问题。我还使用了和正则表达式来禁止访问特定的文件类型/扩展名。我给你点了赞..谢谢。

0