Come funzionano i permessi dei file
Ogni file ha tre gruppi di permessi: per il proprietario (u), il gruppo (g) e gli altri (o). Ciascun gruppo ha lettura (r = 4), scrittura (w = 2) ed esecuzione (x = 1). I valori si sommano: rwx = 7, r-x = 5, r-- = 4. Così rwxr-xr-x diventa 755.
Sulle directory i bit significano altro: r permette di elencare i nomi, x di entrare nella directory e raggiungere le voci, w (insieme a x) di creare, rinominare ed eliminare voci. Una directory senza x è in pratica inutilizzabile.
La quarta cifra, quella iniziale, contiene i bit speciali: setuid (4) e setgid (2) fanno girare un programma con i diritti del proprietario o del gruppo; su una directory, sotto Linux, setgid fa sì che i nuovi file ereditino il gruppo della directory. Lo sticky bit (1) fa sì che in una directory solo il proprietario del file, il proprietario della directory e root possano eliminare o rinominare le voci — come in /tmp (1777).
Valori tipici per server e Nextcloud
- 644 per i file normali, 755 per directory e script — la configurazione abituale per i contenuti web.
- 600 per chiavi private e file con credenziali, 700 per
~/.ssh. OpenSSH rifiuta di usare una chiave privata leggibile dagli altri. - Nextcloud: la data directory è di solito 750,
config/config.php640 (contiene la password del database e i segreti), gli altri file della web root 644 e le directory 755. Conta altrettanto il proprietario: data directory e configurazione devono appartenere all'utente con cui gira PHP (spessowww-data) o al suo gruppo. - 664 / 775 solo se un gruppo deve davvero scrivere insieme — allora abbinali a setgid sulla directory (
2775).
Errori frequenti
chmod -R 777“risolve” ogni problema di permessi dando tutto a tutti. È un problema di sicurezza; la causa è quasi sempre il proprietario sbagliato — servechown, non un chmod più aperto.chmod -R 755o644su un intero albero: con 755 anche i file normali diventano eseguibili, con 644 le directory perdono laxe non si possono più aprire. Directory e file vogliono valori diversi; lo fa il comandofindqui sopra (-type dper le directory,-type fper i file).xmancante su una directory superiore: il file può essere 644 ed essere comunque irraggiungibile se una directory padre non è attraversabile.- setuid/setgid sugli script: sotto Linux il kernel ignora setuid sugli script di shell; sui programmi è un rischio di sicurezza. Impostalo solo se sai esattamente perché.
- Una S o T maiuscola nella notazione simbolica significa che il bit speciale è impostato ma manca la
xcorrispondente — di solito non voluto.
umask e domande
I nuovi file partono da 666, le nuove directory da 777. La umask toglie dei bit: con umask 022 i file ottengono 644 e le directory 755, con umask 077 600 e 700. L'aiuto qui sopra lo calcola per qualsiasi umask.
Che cosa significa lo 0 iniziale in 0755? È la posizione dei bit speciali; 0755 e 755 sono uguali. Perché 777 è pericoloso? Qualsiasi utente del sistema può modificare o sostituire il file — per script e contenuti web può portare all'esecuzione di codice. Vale anche per i symlink? No: i permessi di un collegamento simbolico non vengono valutati, conta quelli della destinazione.
Privacy
Gira interamente nel tuo browser; non viene inviato né salvato nulla.