bitlvl
IT

Calcolatore chmod

Spunta le caselle o scrivi un numero ottale, una stringa rwx o una modifica simbolica come u+x,go-w. Il comando e il significato si aggiornano man mano.

Permessi
Lettura (4)
Scrittura (2)
Esecuzione (1)
Proprietario
Gruppo
Altri

I risultati e i messaggi di questo strumento sono mostrati in inglese.

Come funzionano i permessi Unix

Ogni file ha tre gruppi di tre bit di permesso: per il proprietario del file, per il suo gruppo e per tutti gli altri. Ogni gruppo può consentire la lettura (r, valore 4), la scrittura (w, 2) e l’esecuzione (x, 1). Somma i valori di ogni gruppo e ottieni una cifra ottale, ed è per questo che i permessi si scrivono con tre cifre: rwxr-xr-x è 4+2+1, 4+1, 4+1 = 755.

Per le directory gli stessi bit significano cose leggermente diverse: la lettura elenca le voci, la scrittura crea ed elimina voci, e l’esecuzione permette di entrare nella directory e raggiungere i file al suo interno. Una directory senza x è inutilizzabile anche con r.

I bit speciali

Una quarta cifra iniziale contiene altri tre bit. setuid (4) fa girare un eseguibile come il suo proprietario, che è il modo in cui passwd può modificare un file di root. setgid (2) fa lo stesso per il gruppo, e su una directory fa ereditare ai nuovi file il gruppo della directory, che è ciò che vogliono le cartelle di progetto condivise. sticky (1) su una directory impedisce agli utenti di cancellare i file degli altri; /tmp è 1777.

Modalità simbolica

chmod accetta anche modifiche invece di valori assoluti: u+x aggiunge l’esecuzione per il proprietario, go-w toglie la scrittura a gruppo e altri, a=r imposta tutti in sola lettura. X (maiuscola) aggiunge l’esecuzione solo alle directory e ai file che già ce l’hanno da qualche parte, il che rende chmod -R a+rX il modo sicuro di aprire un albero in lettura.

umask

I nuovi file partono da 666 e le directory da 777, meno la umask. La umask comune 022 dà 644 e 755; 077 dà 600 e 700 (privato). umask senza argomenti mostra il valore corrente.

Valori comuni

OttaleSimbolicoUso
644rw-r--r--File ordinari, contenuti web
755rwxr-xr-xEseguibili, script, directory
600rw-------Chiavi private, .env, file di password
700rwx------~/.ssh e altre directory private
664 / 775rw-rw-r-- / rwxrwxr-xFile / directory condivisi nel gruppo
2775rwxrwsr-xDirectory condivisa con ereditarietà del gruppo
1777rwxrwxrwt/tmp
4755rwsr-xr-xProgrammi setuid come passwd, sudo

Domande

Cosa significa chmod 755?

Il proprietario può leggere, scrivere ed eseguire; gruppo e altri possono leggere ed eseguire. È la modalità normale per programmi, script e directory.

Cosa fa chmod 777, e perché è sbagliato?

Permette a ogni utente del sistema di leggere, scrivere ed eseguire il file. Su una macchina condivisa o esposta a Internet significa che chiunque, compreso un servizio compromesso, può modificarlo. Non è quasi mai la soluzione giusta a un errore di permessi; di solito lo sono la proprietà (chown) o un 755/644.

Perché il mio script dice «permission denied»?

Gli manca il bit di esecuzione. Esegui chmod +x script.sh (o 755). Se si trova su un filesystem montato noexec, o la riga shebang punta a un interprete mancante, ricevi lo stesso messaggio.

Cosa significano la s o la t in ls -l?

Una s minuscola nella posizione di esecuzione del proprietario o del gruppo significa che setuid o setgid è impostato insieme all’esecuzione; una S maiuscola significa che il bit speciale è impostato senza esecuzione (di solito un errore). t e T sono lo stesso per il bit sticky. Incolla la stringa nella casella simbolica per decodificarla.

Che differenza c’è tra chmod e chown?

chmod cambia i bit di permesso; chown cambia quale utente e gruppo possiedono il file. Molti problemi di «permission denied» sono problemi di proprietà: i bit sono giusti ma per l’utente sbagliato.

Come imposto i permessi ricorsivamente?

chmod -R. Per evitare di rendere eseguibile ogni file, usa chmod -R u=rwX,go=rX dir, dove la X maiuscola applica l’esecuzione solo alle directory e ai file già eseguibili.