Alguém pode me dizer o que está acontecendo aqui? Tanto quanto eu sabia, essas formas de executar um script de inicialização são idênticas.
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 ]
Não entendo por que isso funcionou e por que o problema de permissão existe em primeiro lugar. O script de inicialização está sendo executado como root e deve ter acesso ao arquivo pid.
Atualização 1: algum histórico
Eu tentei a sua solução de problemas padrão de "problemas de permissão", indo tão longe a ponto de tornar o arquivo pid de leitura / escrita no mundo. Anteriormente, eu estava recebendo o mesmo erro de permissão no log de erros, que estava em um local personalizado: em uma montagem. Eu tentei desmontar / remontar sem sucesso. Depois disso, usei o método "sh" que funcionava. Depois disso, pareceu fazer com que o erro de permissões de log desaparecesse, embora agora eu esteja vendo o mesmo erro no arquivo pid (como você pode ver).
Atualização 2: em resposta aos comentários
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
Atualização 3: esse é definitivamente um problema do SELinux
Desativar o SELinux resolve o problema. Eu preciso ler sobre os contextos de segurança do 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