Pik*_*ikk 7 nginx logging file-permissions
在/var/log/nginx/我有访问和错误日志。有些是.log错误,有些是.gz
我想我搞砸了权限。有些文件是由root/root创建的,其他文件是使用nginx.conf 中配置的用户创建的,等等。
小智 8
在 /var/log/nginx/ 中的文件上,规则随着时间的推移而改变(至少以我的经验)。然而,在没有更多数据的情况下,我不愿意给出明确的建议。但我会努力的。
NGINX 本身以“root”身份运行 NGINX 进程以 /etc/nginx/nginx.conf 中指定的用户身份运行,通常是“www-data”(等等,继续阅读)
您可以使用此命令来确定 NGINX 的运行方式:
ps -eo "%U %G %a" | grep nginx
Run Code Online (Sandbox Code Playgroud)
您的输出应如下所示:
root root nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data www-data nginx: worker process
Run Code Online (Sandbox Code Playgroud)
你没有说的是你为什么要问这个问题。假设,假设您正在使用 ELK 堆栈运行 OSSEC。如果您使用的是 Ubuntu 16.04,那么您的第二个问题是哪些进程可以读取和写入文件。如果您使用 logrotate,那么您需要编辑 logrotate 文件以及更改日志文件夹的权限。
第 1 步 - 在 logrotate 中更新 nginx 文件:
nano /etc/logrotate.d/nginx
Run Code Online (Sandbox Code Playgroud)
在该文件中,在最新版本的 nginx 和 ubuntu 上,我发现按如下方式更改所有权行将允许它工作。这是在 /etc/logrotate/nginx 中的文件中,它在文件旋转时设置文件权限。
create 0640 nginx nginx
Run Code Online (Sandbox Code Playgroud)
或者:
create 0640 www-data www-data
Run Code Online (Sandbox Code Playgroud)
尽管在实践中 nginx:nginx 的工作更加一致,并且在授予 nginx web 进程对日志文件的权限与将它们设置为 root 之间取得了平衡。
要继续,对于您的旧日志文件(例如由 logstash 读取),您可能需要重置权限(假设我意识到我们大多数人实际上并不使用默认文件位置。)
chmod nginx:nginx /var/log/nginx/*
Run Code Online (Sandbox Code Playgroud)
或(再次)替代
chown www-data:www-data /var/log/nginx/*
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助。我发现有关 nginx 适当权限的数据在日志记录方面充其量是令人困惑的,我将其归因于他们令人惊叹的软件的发展。我欢迎其他了解更多的人对我的回复提供反馈。
| 归档时间: |
|
| 查看次数: |
11435 次 |
| 最近记录: |