日志文件的权限被拒绝

日志文件的权限被拒绝

我希望能够以普通用户身份查看 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)

相关内容