Unix设置整个文件夹的权限

这是一个菜鸟问题。

我在一个名为图像的文件夹中 – 没有一个出现在我的网站上。 我相信权限设置不正确。

我该如何正确设置它们才能显示出来。 我给了什么权力,我该怎么做,我先上升到一个水平? 我可以一次性设置它们吗?

谢谢。

我会推荐find命令来设置权限:

为了让每个人都可以search到所有的目录,并且每个人都可以读取这些目录(参见Unix目录权限的链接 ,权限与文件有不同的含义):

sudo bash -c "find /var/www/root/images -type d -print0 | xargs -0 chmod oga+rx" 

对于这些文件:

 sudo bash -c "find /var/www/root/images -type f -print0 | xargs -0 chmod oga+r" 

并确保没有任何组员都不能写任何东西:

 sudo bash -c "find /var/www/root/images -type f -print0 | xargs -0 chmod aw" 

我设置所有者,组和所有权的原因是因为即使所有者都具有读权限,如果所有者不具有权限,所有者将不能读取该文件。

执行权限“x”通常在与目录一起使用时被称为“search”权限。 您还需要从上面的目录权限链接中获取根目录中所有目录的search权限:

许多常见情况下都需要search权限。 考虑命令“cat / home / user / foo”。 这个命令显然需要文件foo的读取权限。 但是,除非在/,/ home和/ home / user目录上有search权限,否则cat无法findfoo的inode,因此无法读取它! 您需要每个祖先目录的search权限才能访问任何文件(或目录)的索引节点,除非能够访问其inode,否则无法读取文件。

所以在我的例子中,你需要在/ var,/ var / www,/ var / www / root等等上search(+ x)​​权限。


不要使用+ rX ,抱歉把它放在post中,但我需要编码标签不知道如何在评论中使用它们。 以下不仅影响目录,而且如果用户已经具有执行权限,它也可以影响文件。

  chmod -R a+rX images 

例:

 [kbrandt@kbrandt-opadmin: ~/scrap/X] touch XnotOnlyDirectories [kbrandt@kbrandt-opadmin: ~/scrap/X] ls -l total 0 -rw-rw-r-- 1 kbrandt kbrandt 0 2009-08-11 06:29 XnotOnlyDirectories [kbrandt@kbrandt-opadmin: ~/scrap/X] chmod u+x XnotOnlyDirectories [kbrandt@kbrandt-opadmin: ~/scrap/X] ls -l total 0 -rwxrw-r-- 1 kbrandt kbrandt 0 2009-08-11 06:29 XnotOnlyDirectories [kbrandt@kbrandt-opadmin: ~/scrap/X] cd .. [kbrandt@kbrandt-opadmin: ~/scrap] chmod -R a+rX X [kbrandt@kbrandt-opadmin: ~/scrap] ls -l X total 0 -rwxrwxr-x 1 kbrandt kbrandt 0 2009-08-11 06:29 XnotOnlyDirectories 

从chmod手册页面:

仅在文件是目录或已经具有对某个用户的执行权限的情况下执行/search(X)


谈到Apache:
没有确切的正确的方法,我知道,你可以使用我设置的权限,运行Apache作为用户nobody,或者你可以用户的组或用户的Apache如“Apache”或“WWW数据”。 看到这个链接 。 如果走无人路线,确保没有人有正确的用户名:

 [kbrandt@kbrandt-opadmin: ~/scrap] id nobody uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup) 

使用以下命令

  chmod -R a+rX images 

-R :使命令recursion运行,遍历下面的所有目录。

a + rX :使每个人都可读的文件,以及每个人都可以进入的目录。 首字母X只给目录执行权限,而不是普通文件。 ( 编辑 :除非文件已经有一些用户的执行权限)

图像 :文件夹的名称,您可以提供像/home/user/public_html/images的完整path

顺便说一句,你不能chown一个文件,除非你是根( 编辑 :或chown二进制suid根)

使用带有-R参数的chmod命令recursion执行该操作。 man chmod命令会显示你的帮助。

不要忘记将文件发送到正确的网站所有者帐户/组。 如果您使用root帐户进行复制,则Web服务器很可能无法访问这些文件。 使用chmod将映像文件权限设置为644。

使用-R terecursion子目录。

(我会试着解释为什么,而不仅仅是如何)

你有两个问题需要处理:所有权和权限。

有两种所有权:用户和组。 良好的networkingpipe理使得由“无人”(或等同物)所拥有的networking服务器以及它所显示的文件被networkingpipe理员所拥有。 群组的所有权,并成为Webpipe理组,如果不止一个人,或只是Webpipe理员用户的默认组。

有三种权限:用户,组和世界。 ls -l命令中的每个RWX首先给出用户的读,写和执行权限,然后是组,然后是世界。

如果您为所有人和任何人提供图片,设置世界读取访问您的图像目录和图像本身将解决您的问题,而不必打扰所有权。 如果图像仅限于login成员,则应closuresworld r / w / x(在ls -l中显示为

Webpipe理员用户至less应该具有对图像或rwx的读/写访问权限。 (有locking,托pipe网站的例外,但我有一种感觉,情况并非如此)。

完成后,您的所有权权限应如下所示:

 chmod 774 *.jpg rwxrwxr-- webadmin webgroup # Allow web admin and group to modify, everyone to view chmod 744 *.jpg rwxr--r-- webadmin webgroup # Allow only web admin to modify, everyone to view chmod 740 *.jpg rwxr----- webadmin webgroup # Allow only web admin to modify, only him and webgroup to view, this means web server must be in webgroup. chmod 740 *.jpg chgrp nobody *.jpg rwxr----- webadmin nobody # If apache user is nobody/nobody, this is better 

你可能想看看chown而不是chmod。 Chown == C更改应该使用的OWN ership和提供服务的用户的权限的文件。 httpd通常运行在www-datahttpd用户和大多数现代Linux发行版组上。

如果您经常将文件添加到此文件夹,则不提。

我发现如果一个文件夹经常被添加到然后设置组粘贴位的文件夹纠正的事情没有想到。

例如,将组的所有权设置为Web服务器组,并对该文件夹的组读/粘性权限意味着将新文件设置为该组并且可读。 如果有一个团队pipe理文件夹,那么组写也有帮助。

将文件移动到文件夹时并不总是工作。