在 EC2 实例上,我已将 Apache 的日志位置更改为与默认目录不同的目录。这样我就可以将日志保存在(非启动、仅数据)EBS 上。
但是,我无法cd
进入日志目录。它属于我的用户,并且每个人都有读取权限。我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。
答案1
如果您想要切换到某个目录,则需要在目录上设置执行位。(文件系统类型实际上并不重要。)
chmod u+x ./apache
答案2
http://www.albany.edu/faculty/gms/homepage101/unix_permissions.html说
表 1. UNIX 目录权限
谁拥有哪些权限 用户读取(r)帐户所有者可以列出目录中的文件。 写入 (w) 账户所有者可以创建或删除 目录。 执行(x)按名称访问该目录中的文件(例如 Web 页面文件)。 组读取 (r) 指定组中的每个人都可以列出文件 目錄。 写入 (w) 组中的每个人都可以创建或删除文件 目录。 执行 (x) 小组中的每个人都可以改变 (cd) 为 目录并通过名称访问该目录中的文件 (例如网页文件)。 其他 读取(r) 任何人都可以列出目录中的文件。 写入 (w) 任何人都可以创建或删除目录中的文件。 执行 (x) 任何人都可以更改 (cd) 进入目录并访问 按名称在该目录中的文件 (例如网页文件)。
这维基百科文章值得一读,并说
对目录(而不是文件)设置权限的效果是“最常被误解的文件权限问题之一”(Hatch 2003)。