在/var/log/nginx/我有访问和错误日志。其中一些是。日志错误和其他人有.gz
我认为我搞错了权限。有些文件是由根/根,其他文件是使用在配置的用户创建的nginx.conf, ETC。
- 哪个用户/组应该创建这些文件?为什么?可以是 root 吗?我可以看到现在新的 .log 文件是由 root 创建的,但不确定这是否是正确的方法。
- 另外我想问一下在哪里可以更改创建这些文件的用户?
答案1
在位于 /var/log/nginx/ 中的文件中,规则会随时间而变化(至少根据我的经验)。然而,如果没有更多数据,我不太愿意给出明确的建议。但我会尝试。
NGINX 本身以“root”身份运行,NGINX 进程以 /etc/nginx/nginx.conf 中指定的用户身份运行,该用户通常是“www-data”(请稍等,继续阅读)
您可以使用此命令来确定 NGINX 的运行情况:
ps -eo "%U %G %a" | grep nginx
你的输出看起来应该像这样:
root root nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data www-data nginx: worker process
你没有说你为什么要问这个问题。假设你正在使用 ELK 堆栈运行 OSSEC。如果你使用的是 Ubuntu 16.04,那么你的第二个问题是哪些进程可以读取文件以及写入文件。如果你正在使用 logrotate,那么你需要编辑 logrotate 文件并更改日志文件夹的权限。
步骤 1-在 logrotate 中更新 nginx 文件:
nano /etc/logrotate.d/nginx
在该文件中,在较新版本的 nginx 和 ubuntu 上,我发现按如下方式更改所有权行将使其正常工作。这是在 /etc/logrotate/nginx 中的文件中,该文件设置了文件旋转时的文件权限。
create 0640 nginx nginx
或者:
create 0640 www-data www-data
尽管在实践中 nginx:nginx 的工作更加一致,并且在授予 nginx web 进程对日志文件的权限与将其设置为 root 之间取得了平衡。
要继续,对于您的旧日志文件(例如,由 logstash 读取),您可能需要重置权限(假设默认文件位置,我意识到我们大多数人实际上并不使用。)
chown nginx:nginx /var/log/nginx/*
或者(再次)
chown www-data:www-data /var/log/nginx/*
希望这能有所帮助。我发现有关 nginx 正确权限的数据在日志记录方面最多令人困惑,我认为这是他们 AMAZING 软件的发展所致。我欢迎其他了解更多的人对我的回复提供反馈。
答案2
据我所知,根据提供的信息:
您的服务器的日志文件由 logrotate 守护进程管理(将其视为日志的存档引擎)
这解释了为什么你会看到一些 .tar.gz 格式的文件
我敢打赌,这些文件是拥有 root 权限的文件(点击此处了解更多信息http://linuxcommand.org/man_pages/logrotate8.html)。这取决于为日志轮换过程指定的用户。
其他文件归 nginx 所有,并且对其具有 rw 权限
如果是这样,那么一切都很好