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.
Commenti recenti