Troubleshooting di programmi e permessi sui file

Tutti i programmi su un sistema Unix hanno i permessi di lettura e scrittura sul file system corrispondenti a quelli dell'utente di sistema, così come indicato in /etc/passwd, con cui vengono eseguiti.
Può capitare, provando a installare e lanciare programmi diversi, che questi non riescano ad essere eseguiti o non funzionino correttamente.
Come sempre, in caso di problemi, un controllo dei log è la prima operazione da compiere.
Relativamente spesso la causa è proprio la mancanza di permessi per poter leggere o scrivere file (configurazione, log, dati, librerie condivise ecc.).
A volte il programma cerca determinati file in posizioni dove non si trovano (in questi casi un link può rapidamente, e in modo un po' "sporco" risolvere il problema), a volte non ha i permessi di lettura su file di configurazione o di dati, o sulle directory che li contengono, in altri casi può cercare di scrivere (tipicamente log e dati) su directory o file dove l'utente che ha lanciato il programma (può essere anche un utente di sistema, che lo esegue automaticamente al boot) non ha permessi di scrittura.

Un esempio ricorrente è la configurazione di Apache per gestire siti web, aggiornati via ftp da diverse persone.
In questo caso l'utente con cui gira Apache (di solito nobody o apache) deve poter avere permessi di lettura sui file che compongono il sito web (e di esecuzione sulle relative directory).
Contemporaneamente gli utenti che si collegano via ftp, devono poter scrivere sulle loro home directory, che sono anche le home dei relativi server web.
Spesso, su Linus e su altri Unix, le home directory degli utenti sono in /home e sono leggibili solo dai rispettivi owner:
ls -l /home/  | grep bacco
drwx------    2 bacco    bacco       18384 Aug 24 04:02 bacco
Se Apache fosse configurato per avere il dominio www.bacco.it con le proprie pagine in /home/bacco, non riuscirebbe a visualizzare il sito Web per mancanza di permessi.
Questi andrebbero allargati all'utente con cui viene eseguito da Apache:
chmod -R 750 /home/bacco
chgrp -R apache /home/bacco

Ottenendo un funzionale:
drwxr-x---    2 bacco    apache       18384 Aug 24 04:02 bacco
A volte, in preda a pigrizia o vittime dell'inconsapevolezza, si può avere la tentazione di allargare al massimo i permessi sui file che servono al programma che vogliamo far funzionare a tutti i costi:
chmod -R 777 /home/bacco
Ottiene un funzionale ma poco sicuro:
drwxrwxrwx    2 bacco    bacco       18384 Aug 24 04:02 bacco
In questo modo Apache potrebbe tranquillamente visualizzare il sito di bacco, ma avrebbe anche permessi di scrittura non necessari, condivisi anche con tutti gli altri utenti del sistema, che avrebbero l'indebita possibilità di modificare le pagine di sito in /home/bacco.

Privacy Policy