Jor*_*ril 14 server permissions apache2 logging
我在新的 Ubuntu Lucid 服务器上安装了 awstats,但是当 cron 尝试以 user 身份运行它时www-data
,它会抱怨cannot access /var/log/apache2/access.log: Permission denied
.
在/usr/share/doc/awstats/README.Debian
有这一段:
默认情况下,Apache 存储(自版本 1.3.22-1 起)带有 uid=root 和 gid=adm 的日志文件,因此您需要...
1) 更改 /etc/logrotate.d/apache 中日志文件的权限,以便 www-data 至少具有读取权限。
2) 与 1) 一样,但更改为特定用户,并使用 Apache 的 suEXEC 功能以同一用户身份运行(并更改 /var/lib/awstats 的权限或使用其他目录)。这更复杂,但是服务器通常无法访问日志(这可能是 Apache 默认的点)。
3) 将 awstats.pl 更改为 group adm(但请注意,您将冒着允许 CGI 脚本访问机器上的管理内容的风险!)。
我会选择 1,但是推荐的授予权限是什么?
如果你选择第 1 点,并且它说 www-data 应该至少有读取权限,那么推荐的是只授予读取权限。
您可以更改该行(在 logrotate 文件中):
create 640 root adm
Run Code Online (Sandbox Code Playgroud)
到
create 644 root adm
Run Code Online (Sandbox Code Playgroud)
授予所有用户(包括 www-data)读取权限。
您需要更改 /var/log/apache2/ 中现有文件的权限以匹配此设置
chmod a+r /var/log/apache2/* #or whatever your path is
Run Code Online (Sandbox Code Playgroud)
那么所有文件都可以被所有用户读取,所有logrotate以后创建的文件都将拥有足够的权限
小智 7
在大多数设置中:
所有权和权限设置可以在文件/etc/logrotate.d/apache2 中找到 ,其内容为:
/var/log/apache2/*.log {
daily
missingok
rotate 60
compress
delaycompress
notifempty
dateext
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript }
Run Code Online (Sandbox Code Playgroud)最简单的解决方案是:
1)使用您喜欢的文本编辑器在/etc/logrotate.d/apache2中将“ create 640 root adm ”更改为“ create 644 root adm ”,或者,如果您必须编写所有脚本:
sudo sed -i 's/create 640 root adm/create 644 root adm/g' /etc/logrotate.d/apache2
Run Code Online (Sandbox Code Playgroud)
2) 将/var/log/apache2/access.log和/var/log/apache2/error.log的权限更改为644。
sudo chmod 644 /var/log/apache2/access.log /var/log/apache2/error.log
Run Code Online (Sandbox Code Playgroud)
3)重启apache。
sudo apachectl -k graceful
Run Code Online (Sandbox Code Playgroud)
我已经看到人们将 www-data 添加到 adm 用户组作为解决方案。这对于www-data 的权限比我所接受的要多得多。
其他更安全的选项包括为 awstats 创建一个新用户和组,并使 awstats 作为这个新用户/组运行/执行。
归档时间: |
|
查看次数: |
23328 次 |
最近记录: |