CentOS 上 NGINX 的正确日志权限应该是什么?

CentOS 上 NGINX 的正确日志权限应该是什么?

/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

据我所知,根据提供的信息:

  1. 您的服务器的日志文件由 logrotate 守护进程管理(将其视为日志的存档引擎)

  2. 这解释了为什么你会看到一些 .tar.gz 格式的文件

  3. 我敢打赌,这些文件是拥有 root 权限的文件(点击此处了解更多信息http://linuxcommand.org/man_pages/logrotate8.html)。这取决于为日志轮换过程指定的用户。

  4. 其他文件归 nginx 所有,并且对其具有 rw 权限

如果是这样,那么一切都很好

相关内容