什么CHMOD设置,以防止用户查看目录?

我有一个“包含”目录,我的Web服务器应该能够完全交互,但我不希望用户能够看到它的内容。

Linux上的权限(这是我假设你正在使用)的顺序是:

uuu|ggg|ooo rwx|rwx|rwx 

U是用户,文件的所有者。 G是特定组的组访问权限,O是其他权限。

如果用户不在可以访问它的组中,并且他们不是目录的所有者,则它们属于其他类别,因此只需修改最后3个字段。

最简单的方法来做到这一点:

 chmod dir or 

要么

 chmod dir 770 

770将给所有者和组完全访问,但从“其他”访问。 它没有意义的给他们写和执行访问,虽然他们不能读取它(需要查看内容),所以你可以使用770 chmod而不是776等。

您需要find运行该服务器的用户或组,然后将目录切换到该用户和/或组,然后

 chmod -R 660 directory 

或类似的东西。

这假定你的意思是本地用户:)如果你的意思是networking用户,那么你必须记住,匿名networking用户必须和你的networking服务器具有完全相同的权限。

您可能想要使用htaccess文件来限制该文件夹的查看权限,但请阅读关于该主题的Apache文档以获取其他更好的替代方法。

将includes目录放在您的网站根目录之外。 您不需要在您的内容目录下,因为Web服务器可以将其提供给站点用户。 所以,如果你的网站的根目录是/var/www/html一个并行的/var/www/includes目录。

chmod不会做你想要的,因为httpd进程是访问你所有的文件,而不是真正的shell帐户。 您可以使用.htaccess来限制访问,但这是一个劣质的解决scheme,只是将您的includes目录移出内容区域。

@jeremy(因为我没有代表他的回答评论):你不想chmod 660一个目录,因为这会给所有者和组权限拒绝错误和/或奇怪的输出。

eg`

ls -l testingjunk
ls:无法访问testingjunk /东西:权限被拒绝

总计0

– ????????? ? ? ? ? ? 某物

我忘了显示这部分。

ls -ld testingjunk [16:32]
drw-rw---- 2 wjenkin2 itstaff 4096 2009-07-02 16:30 testingjunk/

`

假设您希望Web服务器进程能够读取和写入目录中的文件(但不提供其中的内容),那么您希望

  • 在文档根目录之外创build一个目录
  • 将此目录的所有权更改为您的Web服务器运行的用户和组
  • 改变这个目录的模式为0700

如果您的Web服务器以nobody身份运行(某些发行版运行多个服务器进程的非特权用户),请记住以该用户身份运行的其他进程也可以在该目录中运行。 如果这是一个问题,您可能需要为您的Web服务器创build一个专用的用户。 这将需要更改Web服务器configuration和/或启动脚本,除了创build用户和组。

由于我推荐0700模式,这个组在技术上并不重要,但是您必须记住,如果Web服务器用户的umask设置为,则web服务器可以在此目录内创build具有更宽权限(664或775)的文件002而不是更常用的022.专用组将确保这样的文件不会被无意中打开,以便共享组中的其他成员可以写入Web服务器用户。

确保您的Web服务器作为具有有限权限的用户以及受限制的组作为其组来运行。 然后确保文件只能由用户和/或组访问,通过删除公共读取和执行访问(几乎从不授予公共写入访问)。

那些维护网站的人也需要访问资料 – 最好不要通过超级用户权限。 这可能会改变你做事的方式。

考虑ACL是否合适 – 这将允许您为Web服务器组提供对文件的读访问权限,具有读写权限的维护组,并且仍然拒绝普通公众访问。 没有ACL,您只能拥有一组组权限。

如果您删除读权限,他们将无法看到有什么文件。 (如果你删除执行权限,那么他们不能cd到它。)

Linux / Unix目录中的“x”(执行)位是控制是否可以列出它的内容的位。