我已经在这里找到了一些解决方案:AWStats:无法访问 /var/log/apache2/access.log,但这是“锤子方法”,例如更改所有权等。我不喜欢。
我想了解发生了什么(可能我会用其中一把锤子)
场景是什么样的:我有一个用户“myapp”(在我的情况下是我的 rails 应用程序使用的用户)
myapp@myapp-pre ~/appdir$ id
uid=1000(myapp) gid=100(users) groups=100(users),4(adm),27(sudo)
如您所见,该用户属于“adm”组。让我们看一下日志文件
myapp@myapp-pre ~/appdir$ sudo ls -l /var/log/apache2/error.log
-rw-r----- 1 root adm 17503 Apr 28 17:05 /var/log/apache2/error.log
这里我们看到,error.log 属于 root:adm - root(rw) - adm(r)
但不是“sodoed”:
myapp@myapp-pre ~/appdir$ ls -l /var/log/apache2/error.log
ls: cannot access /var/log/apache2/error.log: Permission denied
如果我看一下父目录:
myapp@myapp-pre ~/appdir$ ls -l /var/log
...
-rw-r--r-- 1 root root 347 May 26 2017 alternatives.log.7.gz
-rw-r--r-- 1 root root 419 Mar 14 2017 alternatives.log.8.gz
-rw-r--r-- 1 root root 369 Feb 14 2017 alternatives.log.9.gz
dr-xr--r-T 2 root adm 4096 Apr 28 06:05 apache2
-rw-r----- 1 root adm 4013282 Apr 28 17:22 auth.log
-rw-r----- 1 root adm 4467467 Apr 23 06:05 auth.log.1
-rw-r----- 1 root adm 269469 Apr 15 06:05 auth.log.2.gz
...
我发现许多文件具有相同的 root:adm 权限,并且用户 myapp 可以读取它们。
尝试读取文件
myapp@myapp-pre ~/appdir$ cat /var/log/apache2/error.log
cat: /var/log/apache2/error.log: Permission denied
同样的结果......
那么为什么我的用户“myapp”不允许阅读?