有人能告诉我这里发生了什么事吗? 据我所知,这些执行初始化脚本的方法是相同的。
box:~# whoami root box:~# /etc/init.d/nginx restart nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied) nginx: configuration file /etc/nginx/nginx.conf test failed box:~# service nginx restart nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied) nginx: configuration file /etc/nginx/nginx.conf test failed box:~# head -1 /etc/init.d/nginx #!/bin/sh box:~# /bin/sh /etc/init.d/nginx restart Stopping nginx: [ OK ] Starting nginx: [ OK ]
我不明白为什么这个工作,为什么权限问题首先存在。 init脚本以root用户身份运行,应该可以访问pid文件。
更新1:一些背景
我试过你的标准“权限问题”的疑难解答,甚至使pid文件世界读/写。 以前,我在自定义位置的错误日志上得到了相同的权限错误:在一个mount上。 我尝试卸载/重新安装没有成功。 之后,我使用了工作的“sh”方法。 之后,它似乎使日志权限错误消失,虽然现在我看到在pid文件上的相同的错误(你可以看到)。
更新2:回应评论
box3:~# ls -alZ /var/run/nginx.pid -rw-rw-rw-. root root unconfined_u:object_r:var_run_t:s0 /var/run/nginx.pid box3:~# ls -alZ /etc/init.d/nginx -rwxr-xr-x. root root system_u:object_r:httpd_initrc_exec_t:s0 /etc/init.d/nginx
更新3:这绝对是一个SELinux问题
closuresSELinux解决了这个问题。 我需要阅读SELinux安全上下文。
box:~# setenforce 0 box:~# getenforce Permissive box:~# /etc/init.d/nginx restart Stopping nginx: [ OK ] Starting nginx: [ OK ] box:~# setenforce 1 box:~# /etc/init.d/nginx restart nginx: [emerg] open() "/mnt1/logs/nginx-error.log" failed (13: Permission denied) nginx: configuration file /etc/nginx/nginx.conf test failed