问题描述
我是系统管理的新手。在Ubuntu上安装nginx via puppet后,我得到以下输出:
[alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
[warn] 1898#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
[emerg] 1898#0: open() "/var/log/nginx/access.log" failed (13: Permission denied)
如何摆脱所有这些消息?
我不想直接使用命令行(chown /chmod)并在每次创建新服务器时重复它。因此,我在考虑必须添加到Puppet(木偶)清单中的内容。
在这种情况下,最好的系统管理员做法是什么:更改/var /log /nginx的所有者/权限或将日志存储在不同的位置?如果chown /chmod是要走的路,哪些特定权限可以确保最高级别的安全性?
我尝试了这个,但它没有帮助:
file { '/var/log/nginx':
ensure => directory,
mode => '0755',
owner => 'www-data',
group => 'www-data',
recurse => true
}
编辑:
vagrant@precise64:~$ ps aux | grep [n]ginx
root 1001 0.0 0.1 62908 1388 ? Ss 08:47 0:00 nginx: master process /usr/sbin/nginx
www-data 1002 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1003 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1004 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1005 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
最佳解决方案
确保以超级用户身份运行测试。
sudo nginx -t
或者测试不具备正确完成测试所需的所有权限。
次佳解决方案
如果我假设你的第二个代码是puppet配置,那么我有一个逻辑解释,如果之前创建了错误和日志文件,你可以尝试这个
sudo chown -R www-data:www-data /var/log/nginx;
sudo chmod -R 755 /var/log/nginx;
第三种解决方案
我在重启Nginx时遇到了类似的问题,并发现它是SeLinux的原因。在使用以下命令禁用SeLinux或临时将其设置为Permissive模式后,请务必尝试:
setenforce 0
我希望它有帮助:)
第四种方案
只是因为你没有权利获取文件,请使用
chmod -R 755 /var/log/nginx;
或者你可以改为sudo然后呢
第五种方案
查看日志文件的权限授予组adm中的用户。
要在命令行问题上将用户添加到此组:
sudo usermod -aG adm <USER>