Aqui está o que eu tenho em ls -al /etc/nginx
:
total 52
drwxr-xr-x. 4 root root 4096 Jul 28 04:16 .
drwxr-xr-x. 78 root root 8192 Jul 28 03:37 ..
drwxr-xr-x. 2 root root 26 Jul 28 03:55 conf.d
drwxr-xr-x. 2 root root 6 May 10 09:21 default.d
-rw-r--r--. 1 root root 1034 May 10 09:21 fastcgi.conf
-rw-r--r--. 1 root root 964 May 10 09:21 fastcgi_params
-rw-r--r--. 1 root root 2837 May 10 09:21 koi-utf
-rw-r--r--. 1 root root 2223 May 10 09:21 koi-win
-rw-r--r--. 1 root root 3957 May 10 09:21 mime.types
-rw-r--r--. 1 root root 1033 Jul 28 03:43 nginx.conf
-rw-r--r--. 1 root root 596 May 10 09:21 scgi_params
-rw-r--r--. 1 root root 623 May 10 09:21 uwsgi_params
-rw-r--r--. 1 root root 3610 May 10 09:21 win-utf
Isto é o que vejo /var/log/nginx/error.log
depois sudo service nginx start
:
[emerg] 20360#0: open() "/etc/nginx/conf.d/foo.conf" failed
(13: Permission denied) in /etc/nginx/nginx.conf:33
Isto é o que eu tenho em ls -al /etc/nginx/conf.d/
:
$ ls -al /etc/nginx/conf.d/
total 8
drwxr-xr-x. 2 root root 26 Jul 28 03:55 .
drwxr-xr-x. 4 root root 4096 Jul 28 04:16 ..
-rw-r--r--. 1 root root 230 Jul 28 03:50 foo.conf
O que há de errado?
ls -lZ
mostra? Experimentesetenforce 0
e veja se funciona.setenforce 0
ajudou. Por favor, envie-o como uma resposta, eu vou aceitá-loRespostas:
Quando você está recebendo
permission denied
erros no acesso a arquivos, etc. por razões desconhecidas, isso pode estar relacionado ao SELinux. Especialmente quando você vê um período seguindo as permissõesdrwxr-xr-x.
mostradas porls -l
para o arquivo / diretório em questão, elas podem ser rotuladas incorretamente (você pode vê-lols -Z
) e causar o problema.Você deve primeiro verificar o modo SELinux atual executando
getenforce
. Se for o casoEnforcing
, defina temporariamente o modo paraPermissive
executandosetenforce 0
e verifique se seu aplicativo funciona posteriormente.Consulte o guia da sua distribuição no SELinux para correção permanente, incluindo a configuração do modo SELinux na inicialização, a remarcação de arquivos ou diretórios, a atualização de políticas, etc. Veja o Howto for CentOS .
fonte
Alterar todo o SElinux nem sempre é a resposta certa. Eu não sou especialista, mas compararia com a desativação do firewall se uma porta não estiver acessível.
Outra solução rápida poderia ser "restaurar o contexto SE" dos arquivos, especialmente se eles forem copiados de algum lugar.
Consulte https://www.thegeekstuff.com/2017/05/restorecon-examples/ para obter mais detalhes.
Esses são comandos que vale a pena experimentar antes de desativar o SElinux
fonte
Full path required for exclude: net:[...].
Uma maneira melhor do que desativar o selinux é usar o comando
Isso permitirá que o serviço toe nginx passe sem desativar completamente o selinux
Mais informações em https://www.nginx.com/blog/using-nginx-plus-with-selinux/
No entanto, para mim, executando o
command chcon -v --type=httpd_sys_content_t /etc/nginx/*
e funcionou corretamente, sem a necessidade de exceder httpd_tfonte