CentOS + nginx web server: Problema failed (13: Permission denied)

Spread the love
nginx web server logo
nginx logo
CentOS logo
CentOS logo

Un fastidioso errore 404 mi risultava dalla visita di uno dei miei siti (che utilizzano come http server nginx su sistema operativo CentOS), e mi sembrava che l’attribuzione dei permessi fosse corretta.

L’errore HTTP 404 viene emesso dal server web quando non trova nel file system la risorsa (file o cartella) corrispondente all’URI che gli viene passato dal client (ad esempio Google Chrome o Firefox): il famoso errore di Pagina non trovata.

Questo errore si verifica anche se il file c’è ma si verifica una di queste condizioni:

  • l’utente sotto il quale sta girando il server non ha permessi di lettura sul file desiderato né come utente né come gruppo
  • non ha la possibilità di raggiungere quella risorsa percorrendo il grafo della directory da / al file desiderato

In realtà basta infatti che una directory della catena di “cd command” (change directory) che il servizio web deve fare non sia leggibile e si verifica l’errore. Il modo più efficiente di vedere lo stato di tutta la gerarchia di directory è utilizzare il comando namei:

namei - follow a pathname until a terminal point is found
[root@websrv01 site]# namei -om /usr/share/nginx/html/
f: /usr/share/nginx/html/
 dr-xr-xr-x root     root       /
 drwxr-xr-x root     root       usr
 drwxr-xr-x root     root       share
 drwxr-xr-x root     root       nginx
 drw-rwSr-- www-data developers html

Qui è evidente il problema: tutta la catena di directory ha l’opzione x (eXecute) tranne la directory contenente la DocRoot del web server (la directory html) ragion per cui è sufficiente aggiungere questo permesso:

[root@websrv01 site]# chmod a+x /usr/share/nginx/html/
[root@websrv01 site]# namei -om /usr/share/nginx/html/
f: /usr/share/nginx/html/
 dr-xr-xr-x root      root       /
 drwxr-xr-x root      root       usr
 drwxr-xr-x root      root       share
 drwxr-xr-x root      root       nginx
 drwxrwsr-x www-data  developers html
[root@websrv01 site]# 

Il problema è risolto.

Un commento a latere dell’utilizzo del web server

Dare a root la directory pubblica del web server non è una buona prassi.

Dare indistintamente permessi di esecuzione al web server in una directory di root non è a maggior ragione una buona prassi.

Le cartelle sotto il dominio del web server vanno assegnate ad un utente specifico e a questo va dato il permesso di x.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.