Nginx dice che open () "/etc/nginx/conf.d/foo.conf" non è riuscito (13: autorizzazione negata)


11

Ecco cosa ho in 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

Questo è quello che vedo /var/log/nginx/error.logdopo sudo service nginx start:

[emerg] 20360#0: open() "/etc/nginx/conf.d/foo.conf" failed
(13: Permission denied) in /etc/nginx/nginx.conf:33

Questo è quello che ho in 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

Cosa c'è che non va?


2
SELinux applicato? Cosa ls -lZmostra? Prova a setenforce 0vedere se funziona.
Yaegashi,

Anzi, setenforce 0aiutato. Per favore,
invialo

Risposte:


19

Quando si verificano permission deniederrori nell'accesso ai file, ecc. Per motivi sconosciuti, potrebbe essere correlato a SELinux. Soprattutto quando vedi un periodo dopo le autorizzazioni come drwxr-xr-x.mostrato ls -lper il file / dir in questione, potrebbero essere etichettati erroneamente (puoi vederlo da ls -Z) e causare il problema.

Dovresti prima controllare la modalità SELinux corrente eseguendo getenforce. In questo caso Enforcing, imposta temporaneamente la modalità su Permissiveeseguendo setenforce 0e vedi se l'applicazione funziona in seguito.

Consultare la guida della propria distribuzione su SELinux per la correzione permanente, inclusa l'impostazione della modalità SELinux all'avvio, la rietichettatura dei file o delle directory, l'aggiornamento delle politiche, ecc. Ecco Howto per CentOS .


2

Modificare l'intera SElinux non è sempre la risposta giusta. Non sono un esperto ma lo confronterei con la disabilitazione del firewall se una porta non è accessibile.

Un'altra soluzione rapida potrebbe essere quella di "ripristinare il contesto SE" dei file, specialmente se copiati da qualche parte.

Vedi https://www.thegeekstuff.com/2017/05/restorecon-examples/ per maggiori dettagli.

Questi sono i comandi che vale la pena provare prima di disabilitare SElinux

sudo restorecon  /etc/nginx/conf.d/
sudo restorecon  /etc/nginx/conf.d/*

Questo comando mi dàFull path required for exclude: net:[...].
Nakilon il

0

Un modo migliore di disabilitare selinux è usare il comando

semanage permissive -a httpd_t

Ciò consentirà il passaggio del servizio toe nginx senza disabilitare completamente selinux

Maggiori informazioni su https://www.nginx.com/blog/using-nginx-plus-with-selinux/

Tuttavia per me command chcon -v --type=httpd_sys_content_t /etc/nginx/*eseguo il e ha funzionato correttamente senza la necessità di exceptpt httpd_t

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.