如何在不使用sudo的情况下将nginx日志共享给其他用户?


10

我的服务器上有2个用户。一个带有sudo的访问权限,另一个没有。我如何授予对Nginx日志的访问权限

/var/log/nginx/error.log

给另一个sudo未经许可的用户使用cat /var/log/nginx/error.log?我可以创建类似符号链接的东西来登录他的/ home / username目录吗?

所以我的问题是- sudo未经许可的用户如何检查nginx日志?


sudo访问什么?从您的问题尚不清楚。我知道有些人将“ sudo访问”表示为“根访问”,但这在技术上并不准确。请ellaborate。
dawud 2014年

1
是的,您sudo实际上可以根据自己的配置方式向他授予权限。
gparent 2014年

您可以使用ACL。例如setfacl -m 'user:someuser:r' /var/log/nginx/error.log。我不确定logrotate如何工作。sudo无论如何,访问cat / tail / etc日志可能是一个更好的选择。”
Greg Bowser

@GregBowser恕我直言,在不了解ACL的情况下使用ACL是解决问题的方法。
保罗

Answers:


16

例如,像这样:

chmod 755 /var/log/nginx && chmod 644 /var/log/nginx/*.log && chmod 644 /var/log/nginx/*.gz

这样,任何人都可以cwd并读取/ var / log / nginx目录的内容并读取* .log文件。

您还应该检查日志轮换配置,以免再次更改权限。对于Nginx的最后几个版本(包括1.6.2及以下),文件在轮换日志时/etc/logrotate.d/nginx使用该行create 0640 www-data adm设置权限。应该将其更改为create 0644 www-data adm。应该注意的是,该解决方案允许服务器上的所有用户读取所有Nginx日志。

更新: logrotate配置也应更新为包括,su www-data adm以允许logadm实用程序正常工作而不会抱怨目录权限不正确。


3
中的默认Nginx配置/etc/logrotate.d/nginxcreate 0640 www-data adm。那是在1.6.2中,但我认为这行代码在相当长的时间内没有改变。
保罗

1
编写此答案是为了使它具有通用性和通用性,而不是特定于ubuntu-nginx-1.6.2-20141110。
drookie 2014年

1
logrotate d中的nginx配置将其重置。通过更改对其进行了修复。
sdkks

没有其他方法可以解决此问题,例如,当其他用户尝试启动nginx时,它使用了不同的日志路径吗?我试着将它添加到我的新nginx.conf文件,但运行的nginx -c newnginx.conf在这个新的用户,但它仍然试图访问在/ var时/日志/ nginx的...
波尔K.索伦森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.