Il comando Linux per modificare i permessi su un file o una directory è chmod, che ci piace leggere come modalità di modifica del file. chmod ha due modalità di funzionamento:
- Modalità simbolica
- Modalità numerica/ottale
Per modificare i permessi usando il comando Linux chmod dobbiamo seguire alcune sintassi e regole. Come discusso in precedenza, possiamo modificare l'autorizzazione utilizzando il modo numerico e alfabetico, qui ho spiegato entrambi i metodi con tutti i trucchi.
Via alfabetica
Per utilizzare questo metodo è necessario ricordare di seguito le regole e gli alfabeti per un uso corretto. Per modificare il permesso dell'utente devi usare l'alfabeto “u “. Come quello per il gruppo "g ” e per altri è “o “.
Come Utente, Gruppo e Altri dobbiamo ricordare alcuni alfabeti per dare il permesso di Lettura, Scrittura ed Esegui Come per il permesso di Lettura devi usare l'alfabeto “r “, per Scrivi “w " e per Esegui è "x “.
Quindi la formula per assegnare i permessi usando il comando chmod è mostrata di seguito:
- u – Utente
- g – Gruppo
- o – Altri
- r – Leggi
- w – Scrivi
- x – Esegui
Ad esempio, se si desidera concedere l'autorizzazione di lettura e scrittura all'utente/proprietario e l'autorizzazione di lettura a gruppo e altri utilizzando la modalità alfabetica, il comando sarebbe:
# chmod u+rw,g+r,o+r file_name
Via numerica
Per utilizzare questo metodo devi ricordare di seguito Regole e Numeri per un uso corretto.
- 4 – Per concedere l'autorizzazione di lettura
- 2 – Per concedere l'autorizzazione alla scrittura
- 1 – Per concedere l'autorizzazione all'esecuzione
Ad esempio, se desideri concedere l'autorizzazione di lettura e scrittura all'utente/proprietario e l'autorizzazione di lettura a gruppo e altri utilizzando il modo numerico, il calcolo del comando sarebbe:
4+2 =6 :Verrà aggiunta l'autorizzazione di Lettura e Scrittura a Utente/Proprietario.
4 :Verrà aggiunta l'autorizzazione di Lettura al Gruppo.
4 :Verrà aggiunta l'autorizzazione di Lettura ad Altro.
Quindi il comando sarebbe come:
# chmod 644 filename
Puoi controllare l'autorizzazione di qualsiasi file usando il comando seguente:
# ls -l file.txt -rw-rw-r-- 1 geeklab geeklab 0 Feb 20 06:16 file.txt
E usa il comando seguente per verificare l'autorizzazione di una directory:
# ls -ld data/ drwxrwxr-x 2 geeklab geeklab 4096 Feb 20 06:18 data/
Ora qui la domanda è:come identificare quali autorizzazioni sono state assegnate a un file o una directory. È abbastanza semplice. Sopra ho fornito due esempi. Ora identifichiamo il permesso di file.txt. Se noti che le proprietà del file iniziano con “-rw-rw-r–“. Qui possiamo identificare quale autorizzazione è stata assegnata a file.txt.
La sezione dei permessi è divisa in 10 bit di cui
“– ” :Il primo bit è responsabile di identificare se si tratta di un file, una directory o un collegamento simbolico. Fare riferimento ai simboli seguenti:
Simboli importanti:
- – :Autorizzazione assegnata a un file
- d :Autorizzazione assegnata a una Directory
- l :Permesso assegnato a un collegamento simbolico
- Il 2°, 3°, 4° bit sono per il permesso del Proprietario.
- I bit 5th, 6th, 7th sono per il permesso del gruppo.
- L'8°, il 9°, il 10° bit sono per il permesso di altri.
Per dare il permesso a qualsiasi file/directory devi usare “+ Simbolo. Per rimuovere il permesso da qualsiasi file/directory devi usare “– Simbolo.
Esempi di utilizzo del comando chmod
Assegna l'autorizzazione a un file
Qui ho un file chiamato file.txt. Diamo il permesso di lettura e scrittura all'utente/proprietario usando il comando chmod.
$ chmod u+rw file.txt
$ ls -l file.txt -rw------- 1 geeklab geeklab 0 Feb 20 06:16 file.txt
Per modo numerico usa il comando seguente:
$ chmod 600 file.txt
Assegna l'autorizzazione a una directory
Il comando seguente può essere utilizzato per concedere l'autorizzazione a una directory. Qui ho una directory denominata data. Quindi diamo l'autorizzazione completa (lettura, scrittura, esecuzione) all'utente/proprietario. Fare riferimento al comando seguente.
$ chmod u+rwx data/
$ ls -ld data/ drwx------ 2 geeklab geeklab 4096 Feb 20 06:18 data/
Via numerica:
$ chmod 700 data/
Rimuovi il permesso da un file/directory
Rimuovere l'autorizzazione da un file/directory utilizzando il comando chmod di Linux. Qui sto rimuovendo l'autorizzazione di lettura e scrittura dall'utente/proprietario.
$ chmod u-rw file.txt
$ ls -l file.txt ----rw-r-- 1 geeklab geeklab 0 Feb 20 07:18 file.txt
Concedi il permesso a tutti
Puoi usare il comando seguente per dare il permesso a tutti. Qui sto assegnando l'autorizzazione completa a tutti per accedere a file.txt. Ci sono due metodi per fare lo stesso.
Metodo 1
$ chmod a+rwx file.txt
$ ls -l file.txt -rwxrwxrwx 1 geeklab geeklab 0 Feb 20 06:44 file.txt
Metodo 2
Puoi anche usare il comando Linux chmod qui sotto per fare lo stesso.
$ chmod ugo+rwx file.txt
$ ls -l file.txt -rwxrwxrwx 1 geeklab geeklab 0 Feb 20 06:44 file.txt
Via numerica :
$ chmod 777 file.txt
Assegna autorizzazioni diverse a utenti, gruppi e altri utilizzando il comando chmod di Linux singolo
Qui sto rimuovendo l'autorizzazione di esecuzione dall'utente/proprietario e aggiungendo l'autorizzazione di esecuzione a gruppo e altri utilizzando un singolo comando.
$ chmod u-x,g+x,o+x file.txt
$ ls -l file.txt -rw-rwxrwx 1 geeklab geeklab 0 Feb 20 09:40 file.txt
Assegna il permesso a un file facendo riferimento a qualsiasi altro file
È possibile copiare l'autorizzazione da un file all'altro. Qui ho un file chiamato a1.txt il cui permesso è qualcosa del tipo “-rw-r–r– “.
$ ls -l a1.txt -rw-r--r-- 1 geeklab geeklab 0 Feb 20 07:21 a1.txt
Ora voglio assegnare la stessa autorizzazione al mio altro file chiamato a2.txt. Puoi farlo usando il comando chmod di Linux con l'argomento –reference. Fare riferimento al comando seguente.
$ chmod --reference=a1.txt a2.txt
$ ls -l a2.txt -rw-r--r-- 1 geeklab geeklab 0 Feb 20 07:22 a2.txt
Assegna l'autorizzazione in modo ricorsivo
Ho una directory denominata data, in cui ho così tanti file e voglio dare il permesso a tutti loro in una volta invece che manualmente uno per uno. Per fare ciò puoi usare il comando Linux chmod con l'argomento -R. Questo ti aiuterà a dare il permesso in modo ricorsivo.
$ chmod -R ugo+rwx data/
Via numerica :
$ chmod -R 777 data/
Assegna l'autorizzazione con output dettagliato
È possibile ottenere l'output dopo aver assegnato l'autorizzazione a qualsiasi file/directory utilizzando il comando chmod di Linux con l'argomento -v. Fare riferimento al comando seguente.
$ chmod -v 777 file.txt mode of 'file.txt' changed from 0664 (rw-rw-r--) to 0777 (rwxrwxrwx)
Assegna il permesso con l'output (questo comando darà l'output solo se ci sono modifiche)
Il comando chmod con argomento -c fa anche la stessa cosa dell'output dettagliato (cioè -v). Ma mostrerà l'output solo se ci sono modifiche ai permessi. Se stai assegnando la stessa autorizzazione, non verrà mostrato alcun output.
$ chmod -c 755 file.txt mode of 'file.txt' changed from 0777 (rwxrwxrwx) to 0755 (rwxr-xr-x)
Assegnazione dell'autorizzazione ignorando/risolvendo gli errori
Per evitare errori o correggere eventuali errori durante l'assegnazione dei permessi è possibile utilizzare il comando Linux chmod con argomento -f. Fare riferimento al comando seguente.
$ chmod -f 755 file.txt
Per il comando chmod Aiuto
Per il comando chmod più opzioni e argomenti puoi usare il comando seguente.
$ chmod --help Usage: chmod [OPTION]... MODE[,MODE]... FILE... or: chmod [OPTION]... OCTAL-MODE FILE... or: chmod [OPTION]... --reference=RFILE FILE... Change the mode of each FILE to MODE. With --reference, change the mode of each FILE to that of RFILE. -c, --changes like verbose but report only when a change is made -f, --silent, --quiet suppress most error messages -v, --verbose output a diagnostic for every file processed --no-preserve-root do not treat '/' specially (the default) --preserve-root fail to operate recursively on '/' --reference=RFILE use RFILE's mode instead of MODE values -R, --recursive change files and directories recursively --help display this help and exit --version output version information and exit Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'. GNU coreutils online help: [http://www.gnu.org/software/coreutils/] Full documentation at: [http://www.gnu.org/software/coreutils/chmod] or available locally via: info '(coreutils) chmod invocation'
Verifica la versione del comando chmod
Puoi usare il comando chmod di Linux con l'argomento –version per controllare la versione del comando chmod installato.
$ chmod --version chmod (GNU coreutils) 8.25 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later [http://gnu.org/licenses/gpl.html]. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by David MacKenzie and Jim Meyering.