In diverse situazioni è necessario impostare a mano i permessi di directory e file in Unix.
UTENTE APPLICATIVO
L’utente applicativo è l’utente di sistema che deve eseguire delle applicazioni: un web server, un database, ecc.
Questo utente deve essere proprietario di alcuni oggetti e utilizzatore di altri: per esempio l’utente che gestisce Apache (web-server) deve poter accedere al “suo” file-system /var/www come owner, ma come lettore per /usr/lib/libaprutil-1.so.0.4.1
Questa divisione di permessi garantisce l’ordien e la sicurezza del sistema ed è bene che sia mantenuta.
STRANI RISULTATI
Dopo aver installato qualche pacchetto software, capita qualcosa di strano: l’accesso a certe directory non è possibile. Poi verificando ecco qualche risultato strano:
$ ls -la /var/www/wp-content ls: cannot access /var/www/wp-content/themes: Permission denied ls: cannot access /var/www/wp-content/..: Permission denied ls: cannot access /var/www/wp-content/uploads: Permission denied ls: cannot access /var/www/wp-content/.: Permission denied ls: cannot access /var/www/wp-content/index.php: Permission denied ls: cannot access /var/www/wp-content/plugins: Permission denied total 0 d????????? ? ? ? ? ? . d????????? ? ? ? ? ? .. -????????? ? ? ? ? ? index.php d????????? ? ? ? ? ? plugins d????????? ? ? ? ? ? themes d????????? ? ? ? ? ? uploads
LA RAGIONE
L’origine di questa anomalia è dovuta alla errata scrittura delle ACL sul file-system. Un caso tipico è quello di una creazione di directory come root per poi assegnare in ricorsione la ownership ad un altro utente:
root@vps97297:/var/www# chown -R www-data:www-data /var/www/html/ root@vps97297:/var/www# chmod 666 -R /var/www/html
LA SOLUZIONE
Per risolvere l’impasse la soluzione è quella di assegnare, anche temporaneamente il permesso di esecuzione “x”:
root@vps97297:/var/www# chmod -R +x /var/www/html
e quindi il risultato è quello che vediamo di seguito.
PRIMA:
$ ls -la /var/www/html ls: cannot access /var/www/html/..: Permission denied ls: cannot access /var/www/html/.: Permission denied ls: cannot access /var/www/html/wp-content: Permission denied total 0 d????????? ? ? ? ? ? . d????????? ? ? ? ? ? .. d????????? ? ? ? ? ? wp-content $
DOPO:
$ ls -la /var/www/html total 12 drwxrwxrwx 3 www-data www-data 4096 Jan 25 17:48 . drwxr-xr-x 10 www-data www-data 4096 Jan 25 17:48 .. drwxrwxrwx 3 www-data www-data 4096 Jan 25 17:48 wp-content
CONCLUSIONE
Molti, specie alle prime armi, in casi di errori persistenti nella gestione dei permessi sul file-system, ricorrono alla “valanga” di permessi: tutto a tutti, e poi si vede. Purtroppo quel “poi” diventa “mai” e allora son guai!
Sono, o diventano guai perchè in caso di attacco (nell’esempio parlavo di web-server), la perdita di “filtro” che le ACL offrono, rischia di lasciare aperte tutte le porte con le conseguenze che possiamo facilmente immaginare.
Se non fosse chiaro, ditemelo e nel frattempo… buon web-server a tutti!