我希望能够以普通用户身份查看 apache 的日志文件。我已将这些文件设置为 777 作为 root,但仍然无法以普通用户身份查看它们,这是为什么?
#I have set permissions for everyone
root@senior:/var/log/apache2# ls -l
total 200
-rwxrwxrwx 1 root root 1951 Feb 27 23:07 access.log
-rwxrwxrwx 1 root root 89508 Feb 27 23:07 error.log
-rwxrwxrwx 1 root root 101601 Feb 27 23:06 other_vhosts_access.log
#I have also set directory permission
root@senior:/var/log# ls -l
drw-rw-r-- 2 root adm 4096 Feb 27 23:08 apache2
但仍然无法查看文件
kubi@senior:$ ls -l /var/log/apache2/
ls: cannot access /var/log/apache2/other_vhosts_access.log: Permission denied
ls: cannot access /var/log/apache2/error.log: Permission denied
ls: cannot access /var/log/apache2/access.log: Permission denied
total 0
-????????? ? ? ? ? ? access.log
-????????? ? ? ? ? ? error.log
-????????? ? ? ? ? ? other_vhosts_access.log
kubi@senior:/$ ls /var/log/apache2/error.log
ls: cannot access /var/log/apache2/error.log: Permission denied
我正在运行 Debian
答案1
目录应该是750
,而不是664
。另外,您应该将用户添加到adm
组中。这实际上是该组的主要目的adm
:读取日志。
目录的权限与文件的权限略有不同。简单来说,目录是名称和地址的列表:名称是文件名,地址是文件的实际位置。权限x
控制对此列表的访问:为了查找特定文件的地址,您需要其父目录的执行位以及该目录的父目录的执行位等。r
然后权限控制清单文件:如果您有--x
,您可以在知道文件名称的情况下访问文件,但您不能ls
。最后,w
控制创建、重命名和删除文件。因此,为了访问文件,您总是需要位x
。
另外:不要将日志文件设置为 777。它们应该是 644 或 640,两者之一。两个原因:第一,它们不可执行,因此位x
应该关闭。其次,更重要的是,普通用户应该绝不写入 Apache 日志文件,仅读取。这是服务器中潜在的安全漏洞。
答案2
您需要在目录上设置执行标志,以允许列出其中包含的文件。
但更好的解决方案不是改变文件权限,而是将用户添加到管理员组(adm)