我想让 www-data(运行 Web 服务器的用户)可以读取 apache 访问日志文件,这样我就可以通过 HTTPS 提供它,省去了每次想要检查时都要通过 SSH 连接到服务器的麻烦。
我试过了chmod o+r access.log
,但似乎权限自动重置为-rw-r----- 1 root adm
。
答案1
如果您正在运行 logrotate,它还会设置新日志文件的权限,那么这可能是进行更改的好地方。例如,这是 Ubuntu 服务器上的默认 apache2 logrotate。
andreas@halleck:~$ sudo cat /etc/logrotate.d/apache2
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
dateext
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
endscript
}
如您所见,有一个名为 create 的设置。您可以随意将其更改为您希望新日志文件具有的任何模式和所有权。此外,以下是 logrotate(8) 手册文件中对 create 选项的描述。
创建模式所有者组
旋转后(运行 postrotate 脚本之前)立即创建日志文件(与刚刚旋转的日志文件同名)。mode 以八进制指定日志文件的模式(与 chmod(2) 相同),owner 指定拥有日志文件的用户名,group 指定日志文件所属的组。可以省略任何日志文件属性,在这种情况下,新文件的这些属性将使用与原始日志文件相同的值作为省略的属性。可以使用 nocreate 选项禁用此选项。
答案2
我通过更改文件所有权(似乎不会自动重置)来实现这一点。这是正确的方法吗?