不能进入我自己的目录吗?


10

在EC2实例上,我已将Apache的日志位置更改为与默认目录不同的目录。这样,我就可以将日志保存在(非引导,仅数据)EBS上。

但是,我无法cd进入logs目录。它属于我的用户,并且对所有人都有读取权限。我也不能cat记录日志(尽管使用sudo可以工作,并且我可以看到Apache记录的很好)。

$ ls -lh
total 4.0K
drw-rw-rw- 2 ubuntu ubuntu 4.0K 2011-05-15 14:52 apache
$ ls -lh apache/
ls: cannot access apache/error.log: Permission denied
ls: cannot access apache/access.log: Permission denied
total 0
-????????? ? ? ? ?                ? access.log
-????????? ? ? ? ?                ? error.log
$ cd apache
-bash: cd: apache: Permission denied
$ sudo ls -lh apache/
total 2.4M
-rw-r--r-- 1 ubuntu ubuntu 2.4M 2011-05-15 15:04 access.log
-rw-r--r-- 1 ubuntu ubuntu  27K 2011-05-15 15:00 error.log

这对我来说没有任何意义。救命?

编辑:文件系统是ext4。

Answers:


13

如果要切换到目录,则需要在目录上设置执行位。(文件系统类型并不重要。)

chmod u+x ./apache

7

http://www.albany.edu/faculty/gms/homepage101/unix_permissions.html

表1. UNIX目录权限

谁允许
用户已读(r)帐户所有者可以列出目录中的文件。
       写入(w)帐户所有者可以在以下位置创建或删除文件: 
                        目录。
       按名称(例如Web)执行(x)访问该目录中的文件 
                        页面文件)。

组读取(r)指定组中的每个人都可以列出文件 
                        目录。
       写入(w)组中的每个人都可以在其中创建或删除文件 
                        目录。
       执行(x)组中的每个人都可以将(cd)更改为 
                        目录并按名称访问该目录中的文件 
                        (例如网页文件)。

其他阅读(r)任何人都可以列出目录中的文件。
       写入(w)任何人都可以在目录中创建或删除文件。
       执行(x)任何人都可以更改(cd)进入目录并访问 
                        该目录中的文件名 
                        (例如网页文件)。

维基百科的文章值得一读和说

在目录(而不是文件)上设置权限的结果是“最常被误解的文件权限问题之一”(Hatch 2003)。


因此,您必须具有executeCD进入目录的权限?@RedGrittyBrick
AJP

是的,您需要对目录具有执行权限才能“遍历”该目录,即对其内容进行任何处理。如果没有执行权限,您仍然可以看到目录,并且可以stat,但不能ls或根本不能访问目录的内容。
Blacklight Shining
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.