初始化脚本有权限问题,但用/ bin / sh运行解决它们?

有人能告诉我这里发生了什么事吗? 据我所知,这些执行初始化脚本的方法是相同的。

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