Il comando Chmod in Linux viene utilizzato per modificare o assegnare autorizzazioni su file e directory. Nei sistemi Linux/Unix, l'accessibilità a file e directory è determinata dalla proprietà e dalle autorizzazioni dei file. In un articolo precedente, abbiamo visto come gestire la proprietà di file e directory utilizzando il comando chown. In questo tutorial, esaminiamo il comando chmod.
Il comando chmod, abbreviazione di modalità di modifica, viene utilizzato per gestire i permessi di file e directory e determina chi può accedervi. Entriamo ora ed esploriamo la natura dei permessi di file e directory e come possono essere modificati.
Autorizzazioni Linux
Per capire meglio come funziona il comando chmod, è prudente studiare il modello dei permessi dei file di Linux.
In Linux, abbiamo 3 tipi di autorizzazioni per i file:leggere (r), scrivere (w) ed eseguire (x). Queste autorizzazioni determinano quali utenti possono leggere, scrivere o eseguire i file. Puoi assegnare queste autorizzazioni utilizzando la notazione testuale o ottale (numerica), come vedremo in seguito in questo tutorial.
I file e le directory possono appartenere al proprietario del file (u), al gruppo (g) o ad altri (o)
- u – Proprietario del file
- g – Gruppo
- o – Altri
I permessi dei file sono elencati usando il comando ls -l. Il flag -l elenca i permessi del file. I permessi sono organizzati in tre set:rispettivamente l'utente, il gruppo e altri
Per avere una migliore comprensione dei permessi dei file, elencheremo il contenuto della nostra directory come mostrato:
$ ls -l
Partendo dall'estrema sinistra, il primo carattere/simbolo indica il tipo di file. Un trattino (-) indica che il file è un file normale. Il simbolo d indica che si tratta di una directory. Il simbolo l indica che si tratta di un collegamento simbolico.
I restanti nove caratteri sono segmentati in 3 triplette, ciascuna con tre simboli r(leggi), w(scrivi) e x(esegui). Come sottolineato in precedenza, il primo segmento punta alle autorizzazioni del proprietario, il secondo indica le autorizzazioni del gruppo e l'ultima parte specifica le autorizzazioni che altri utenti hanno sul file o sulla directory.
Dall'output, possiamo vedere che abbiamo 2 file (hello.txt e report.zip) e una singola directory.
Esaminiamo il primo file
-rw-rw-r-- 1 linuxtechi linuxtechi 35 Aug 17 15:42 hello.txt
Per il primo file, i permessi -rw-rw-r– implicano che il proprietario del file ha i permessi di lettura e scrittura, il gruppo possiede anche i permessi di lettura e scrittura, mentre gli altri utenti hanno solo i permessi di lettura. Le stesse autorizzazioni si applicano anche al file compresso report.zip.
Diamo un'occhiata ai permessi della directory:
drwxrwxr-x 2 linuxtechi linuxtechi 4096 Aug 17 15:43 sales
Possiamo vedere che il proprietario della directory e del gruppo ha tutti i permessi (lettura, scrittura ed esecuzione) mentre gli altri utenti hanno solo i permessi di lettura ed esecuzione.
I simboli del triplo trattino indicano che non sono state concesse autorizzazioni né per il proprietario del file, né per il gruppo né per altri utenti.
Utilizzo del comando chmod per impostare i permessi di file e directory
Dopo aver esaminato le autorizzazioni dei file e come visualizzarle, non concentriamoci su come modificare queste autorizzazioni.
Il comando chmod in Linux viene utilizzato per modificare i permessi di file e directory utilizzando la notazione testuale (simbolica) o numerica (ottale). Richiede la seguente sintassi:
$ chmod [OPZIONI] MODALITÀ nome file
Solo l'utente root o un utente normale con privilegi sudo può modificare i permessi di file o directory. Puoi passare più di un file o directory separati da spazi nella sintassi del comando.
Ora analizziamo e vediamo diversi esempi di comando chmod.
Esempio 1) Assegnare autorizzazioni utilizzando la notazione numerica
Quando si impostano le autorizzazioni utilizzando lo stile/la notazione numerica, utilizzare la sintassi mostrata di seguito:
$ sudo chmod [OPZIONI] valore_numerico nomefile
Il valore numerico può assumere 3 o 4 numeri. Tuttavia, nella maggior parte dei casi, vengono utilizzati 3 numeri. Le autorizzazioni di lettura, scrittura ed esecuzione assumono i seguenti valori:
- permesso di lettura => 4
- permesso di scrittura => 2
- autorizzazione di esecuzione => 1
La somma totale dei valori delle autorizzazioni, ovvero lettura, scrittura ed esecuzione in ciascuno dei tre segmenti, rappresenta le autorizzazioni complete di un determinato file o directory.
Cosa intendiamo con questo?
Supponiamo che il proprietario abbia i permessi di lettura, scrittura ed esecuzione, il gruppo abbia i permessi di lettura ed esecuzione e gli altri utenti abbiano solo i permessi di lettura, questo può essere suddiviso come segue:
- u : rwx =7
- g : r-x =5
- o : r– =4
Pertanto, arriviamo al valore di 754 come valore numerico per i permessi dei file del file specificato.
Per assegnare autorizzazioni di lettura, scrittura ed esecuzione al proprietario e autorizzazioni di lettura solo al gruppo e ad altri utenti, esegui il comando:
$ chmod 744 devops.txt
Per assegnare tutte le autorizzazioni al proprietario del file, leggere ed eseguire autorizzazioni per il gruppo e nessuna autorizzazione per altri utenti, eseguire:
$ chmod 750 coders.txt
Per assegnare tutte le autorizzazioni al proprietario del file, leggere e scrivere le autorizzazioni al gruppo e agli altri utenti, eseguire il comando:
$ chmod 755 sysadmin.txt
Esempio 2) Assegnazione ricorsiva di autorizzazioni alle directory
Quando si assegnano autorizzazioni alle directory, utilizzare il flag -R per assegnare in modo ricorsivo le autorizzazioni ai relativi file e sottocartelle. Ad esempio:
$ chmod 755 -R nome_directory
$ chmod 755 -R /home/linuxtechi/data
Esempio 3) Assegna autorizzazioni utilizzando la notazione di testo
Un altro modo per assegnare le autorizzazioni consiste nell'usare la notazione di testo. In questo metodo, il comando chmod accetta flag o simboli che rappresentano il proprietario, il gruppo, gli altri o tutti gli utenti ( u, g e o) nella sintassi.
Il metodo non è così semplice come il metodo precedente ed è necessario prestare attenzione per evitare di assegnare autorizzazioni errate.
Ecco come appare la sintassi
$ chmod [OPZIONI] [ u g o a ] [ – + =] [ r, w, x ] file
Analizziamolo.
Il primo gruppo di parametri [ u g o a] specifica la categoria di utenti le cui autorizzazioni verranno modificate
- u:utente
- g :gruppo
- o :altro
- a:tutto (Questo include tutto quanto sopra)
Se questo set viene omesso, l'opzione predefinita è l'opzione a.
Il secondo set di opzioni – opzioni operatore [ – + =] – determina se le autorizzazioni verranno aggiunte o rimosse dalla categoria di utenti. L'opzione rimuovi
- – :il flag rimuove i permessi del file da un utente specificato.
- + :aggiunge/aggiunge autorizzazioni a un utente specificato.
- = :assegna agli utenti specificati autorizzazioni distinte e rimuove le autorizzazioni precedenti del segmento utente.
Diamo un'occhiata ad alcuni esempi:
Esempio 4) Assegnare i permessi di lettura a un file
$ chmod o=r nomefile
Il comando precedente assegna ad altri utenti indicati dal simbolo 'o' i permessi di lettura solo al file e rimuove i permessi precedenti assegnati al segmento 'altri'. Prendi un file1.txt che abbia le seguenti autorizzazioni
Per assegnare i permessi di lettura del segmento "altri ( o )" esegui solo
$ sudo chmod o=r file1.txt
Dall'output, possiamo vedere che al segmento "altri" sono stati assegnati i permessi di lettura mentre allo stesso tempo ha perso i permessi di esecuzione. Ciò implica che l'operatore =assegna nuove autorizzazioni e allo stesso tempo cancella le autorizzazioni precedenti.
Esempio 5) Assegnare autorizzazioni di esecuzione al proprietario di file e gruppi
$ sudo chmod ug+x nomefile
Il comando precedente aggiunge le autorizzazioni di esecuzione al proprietario e al gruppo del file. Usando il nostro file, questo diventa:
$ sudo chmod ug+x file1.txt
Esempio 6) Assegna autorizzazioni diverse a file, gruppi e altri
$ sudo chmod u=rwx,g=rw,o=r nomefile
Il comando precedente assegna tutte le autorizzazioni al proprietario del file, le autorizzazioni di lettura e scrittura al gruppo e solo le autorizzazioni di lettura ad altri utenti.
NOTA: Se non ci sono autorizzazioni specificate dopo l'operatore =, tutte le autorizzazioni del segmento utente vengono rimosse.
Esempio 7) Rimuovere tutte le autorizzazioni per altri utenti
$ sudo chmod o=nomefile
Il comando sopra rimuove tutte le autorizzazioni dal segmento utente "altri" per il file specificato.
Il comando ha lo stesso effetto del comando seguente:
$ sudo chmod o-rwx nomefile
Esempio 8) Assegna autorizzazioni utilizzando un file di riferimento
Un altro modo pratico e conveniente per assegnare i permessi ai file è utilizzare un file di riferimento. In questo metodo, si utilizza l'opzione –reference=ref_file per impostare i permessi di un file in modo che siano gli stessi di un altro file di riferimento. Usa la sintassi qui sotto
$ sudo chmod –reference=file_ref nomefile
Ad esempio, per impostare i permessi dei file di file2.txt in modo che siano gli stessi di file1.txt, eseguire il comando:
$ sudo chmod --reference=file1.txt file2.txt
Il file di riferimento è file1.txt mentre file2.txt è il file che occuperà i permessi del file per il file di riferimento.
Esempio 9) Assegna il permesso di esecuzione solo alle directory
Supponiamo di avere una directory che contiene file e sottodirectory e desideriamo assegnare il permesso di esecuzione solo alle directory senza toccare i file. Quindi, questo può essere ottenuto usando il seguente comando chmod,
$ chmod a+X *
Se hai notato attentamente, abbiamo utilizzato la X maiuscola per l'autorizzazione di esecuzione, il comando sopra imposterà l'autorizzazione di esecuzione su tutte le directory della nostra directory di lavoro corrente.
Conclusione
Questo tira il sipario sul nostro argomento. Abbiamo esaminato il comando chmod e visto vari esempi in cui il comando può essere utilizzato per modificare i permessi dei file.