Calcolatore Chmod

Calcolatore interattivo di permessi di file Linux/Unix.

Nessun dato lascia il tuo dispositivo
Lettura (4)
Scrittura (2)
Esecuzione (1)
Proprietario
Gruppo
Altri
Numerico
Simbolico ---------
chmod 000 filename

Permessi comuni

Come usare

  1. Spunta le caselle per definire i permessi di lettura, scrittura ed esecuzione per il Proprietario, il Gruppo e gli Altri.
  2. Oppure digita direttamente un valore numerico a 3 cifre (per es. 755).
  3. La notazione simbolica e il comando chmod si aggiornano in tempo reale.
  4. Clicca su Copia il comando per copiare il comando chmod completo.

Riferimento dei permessi

Numero Permesso Simbolo
0Nessun permesso---
1Solo esecuzione--x
2Solo scrittura-w-
3Scrittura + esecuzione-wx
4Solo letturar--
5Lettura + esecuzioner-x
6Lettura + scritturarw-
7Lettura + scrittura + esecuzionerwx

Domande frequenti

Cosa significa chmod 755?

755 significa che il proprietario può leggere, scrivere ed eseguire (7), mentre il gruppo e gli altri possono leggere ed eseguire ma non scrivere (5). È il permesso più comune per cartelle e script.

Qual è la differenza tra 644 e 755?

644 (rw-r--r--) autorizza il proprietario a leggere/scrivere e tutti a leggere solo · tipico per i file. 755 (rwxr-xr-x) aggiunge il permesso di esecuzione · tipico per cartelle e script.

Funziona anche per le cartelle?

Sì. I permessi numerici funzionano allo stesso modo. Per le cartelle, «esecuzione» significa poter entrare nella cartella e accedere al suo contenuto.

Il modello dei permessi Unix in 9 bit

Ogni file e directory su un sistema di tipo Unix porta con sé una «modalità», un piccolo numero intero che registra chi può fare cosa. Il modello è essenzialmente invariato dalla Sixth Edition Unix (maggio 1975), con le prime voci di manuale di chmod comparse in Version 1 Unix (novembre 1971). Codifica nove bit di permesso disposti come tre terne di lettura / scrittura / esecuzione, una terna ciascuna per il proprietario del file, il suo gruppo e tutti gli altri:

Owner    Group    Others
r w x    r w x    r w x
4 2 1    4 2 1    4 2 1

Ogni gruppo di tre bit è esattamente una cifra ottale perché tre bit codificano 2³ = 8 valori distinti (0-7). I pesi 4, 2, 1 sono 2², 2¹, 2⁰. Sommare qualsiasi combinazione di lettura (4) + scrittura (2) + esecuzione (1) produce le otto cifre possibili per classe senza collisioni, ed è l'intera mappatura da ottale a simbolico. chmod 755 significa quindi rwx (4+2+1=7) per il proprietario, r-x (4+1=5) per il gruppo, e r-x per tutti gli altri.

La stringa di 10 caratteri che vedi in ls -l sono gli stessi dati più una colonna extra all'inizio per il tipo di file: - per un file regolare, d per una directory, l per un link simbolico, c per un dispositivo a caratteri, b per un dispositivo a blocchi, p per una pipe con nome, s per un socket. I restanti nove caratteri sono le terne di permessi.

Notazione simbolica: chmod u+x file

Le modalità ottali sovrascrivono tutti e nove i bit in una volta. Le modalità simboliche non sono distruttive, invertono solo i bit che nomini. La grammatica è chi + op + perm:

Esempi utili:

Le modalità numeriche sono esplicite e idempotenti (chmod 755 significa sempre gli stessi nove bit). Le modalità simboliche sono chirurgiche (chmod g+w inverte solo un bit). Gli script di produzione tendono a preferire la forma numerica per chiarezza nei log di audit; gli operatori che digitano alla shell tendono a preferire quella simbolica per modifiche incrementali.

Modalità comuni e a cosa servono

ModalitàSimbolicoUso tipico
755rwxr-xr-xEseguibili pubblici e directory standard, /usr/bin/*, docroot web, alberi di lavoro Git
644rw-r--r--File regolari standard, configurazioni, codice sorgente, documenti
700rwx------Directory privata, ~/.ssh, documenti personali che nessun altro dovrebbe vedere
600rw-------File privato, ~/.ssh/id_rsa, ~/.gnupg/*, file di password
444r--r--r--Di sola lettura per tutti, dati di riferimento fissi, indici del registro Cargo
750rwxr-x---Proprietario completo, gruppo lettura/attraversamento, altri nulla, directory di servizio condivisa dal gruppo
777rwxrwxrwxQuasi sempre sbagliato. Vedi sotto.

Perché chmod 777 è quasi sempre sbagliato

Impostare un file a 777 lo rende leggibile, scrivibile ed eseguibile da tutti. Qualsiasi utente sulla macchina (compresi gli account di servizio senza privilegi e qualsiasi processo che venga mai compromesso) può leggere il contenuto del file, modificarlo ed eseguirlo. Il consiglio standard dei tutorial «basta chmod 777 finché non funziona» è un antipattern di sicurezza che è stato responsabile di innumerevoli violazioni reali: file di configurazione scrivibili da tutti che vengono manomessi, directory web scrivibili da tutti che diventano vettori di defacement, file di log scrivibili da tutti che permettono la falsificazione dei log, directory eseguibili da tutti che permettono l'esecuzione di codice arbitrario.

Se un errore di permessi ti sta bloccando, la soluzione giusta è quasi sempre cambiare il proprietario del file (con chown) o il suo gruppo (con chgrp) così che l'utente che ha bisogno dell'accesso possieda o sia comproprietario effettivamente del file, non rimuovere i controlli di accesso per tutti.

Bit speciali: setuid, setgid, sticky

Una quarta cifra ottale anteposta alla modalità sblocca tre bit speciali, tutti reliquie del progetto Unix originale:

La visualizzazione di ls -l scambia il carattere di esecuzione con s, S, t o T quando questi bit sono impostati (le lettere maiuscole indicano che il bit è impostato ma il bit di esecuzione sottostante non lo è).

umask: l'inverso di chmod

chmod imposta i permessi sui file esistenti. umask determina i permessi predefiniti sui file che crei, agendo come una maschera sottrattiva. L'aritmetica: un nuovo file regolare sarebbe 666 (rw-rw-rw-), una nuova directory 777, meno qualunque cosa sia impostata nell'umask. Valori comuni:

Digitare umask senza argomenti mostra il valore corrente. Impostarlo nell'init della tua shell (~/.bashrc, ~/.zshrc) o in /etc/login.defs si applica all'intera sessione.

File contro directory, significati diversi di x

Gli stessi bit r/w/x hanno significati leggermente diversi sulle directory rispetto ai file:

chmod ricorsivo e il pattern find

chmod -R 755 /var/www applica la stessa modalità a ogni file e directory nell'albero, il che è quasi sempre sbagliato perché file e directory vogliono modalità diverse (ad es., 644 per i file, 755 per le directory). L'idioma corretto usa find:

find /var/www -type f -exec chmod 644 {} +
find /var/www -type d -exec chmod 755 {} +

Oppure, in modo equivalente, con il chmod di GNU e la sua X maiuscola: chmod -R u=rwX,go=rX /var/www concede l'esecuzione solo sulle directory e sui file che avevano già l'esecuzione da qualche parte, esattamente il risultato che di solito vuoi.

Link simbolici, ACL e come Linux estende il modello

Due perfezionamenti che vale la pena conoscere:

Altre domande

Perché la mia chiave SSH viene rifiutata con «permissions are too open»?

Perché il client OpenSSH si rifiuta di usare una chiave privata leggibile dal gruppo o da tutti, partendo dal presupposto che qualsiasi cosa altre persone possano leggere non dovrebbe essere una credenziale. La soluzione è chmod 600 ~/.ssh/id_rsa (e chmod 700 ~/.ssh sulla directory stessa). Stessa logica per ~/.gnupg/ e la maggior parte degli altri archivi di credenziali.

Qual è la differenza tra chmod e chown?

chmod cambia i bit di modalità, ciò che proprietario/gruppo/altri possono fare. chown cambia chi è il proprietario. Spesso servono entrambi: un file che «l'utente sbagliato non riesce a leggere» di solito non ha bisogno che i suoi permessi vengano aperti; ha bisogno di essere posseduto dall'utente che necessita dell'accesso. Prova prima chown myuser:mygroup file.

Dovrei usare 666 per i file di log?

Quasi mai. I file di log scrivibili da tutti permettono a qualsiasi processo (compreso un servizio compromesso in esecuzione come utente a basso privilegio) di falsificare voci di log o cancellare il log. Lo schema standard è rendere la directory di log scrivibile da un gruppo di log specifico (adm su Debian, wheel su BSD, ecc.) e aggiungere i servizi pertinenti a quel gruppo, oppure usare logrotate + un demone di logging (rsyslog, systemd-journald) che gestisce la proprietà dei file al posto tuo.

Questo calcolatore tiene conto dei bit speciali?

No, copre i nove bit di permesso di base (la modalità standard a 3 cifre). Per setuid (4xxx), setgid (2xxx) o sticky (1xxx) anteporresti manualmente la cifra iniziale. La stragrande maggioranza del lavoro quotidiano con chmod usa modalità a 3 cifre e non tocca mai i bit speciali.

Viene inviato qualcosa a un server?

No. La conversione interruttore ↔ ottale ↔ simbolico è pura aritmetica, calcolata nel tuo browser. La pagina funziona offline una volta caricata.

Strumenti correlati

Generatore .htaccess Generatore di espressioni Cron Calcolatore di hash per file gratuito