GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Chmod in Linux (autorizzazioni file)

In Linux, l'accesso ai file è gestito tramite le autorizzazioni, gli attributi e la proprietà dei file. Ciò garantisce che solo gli utenti e i processi autorizzati possano accedere a file e directory.

Questo tutorial spiega come usare chmod comando per modificare i permessi di accesso a file e directory.

Autorizzazioni file Linux #

Prima di andare oltre, spieghiamo il modello di autorizzazioni di base di Linux.

In Linux, ogni file è associato a un proprietario e a un gruppo e gli vengono assegnati diritti di accesso autorizzati per tre diverse classi di utenti:

  • Il proprietario del file.
  • I membri del gruppo.
  • Altri (tutti gli altri).

La proprietà del file può essere modificata utilizzando il chown e chgrp comandi.

Esistono tre tipi di autorizzazioni per i file che si applicano a ciascuna classe:

  • Il permesso di lettura.
  • Il permesso di scrittura.
  • Il permesso di esecuzione.

Questo concetto consente di specificare a quali utenti è consentito leggere il file, scrivere nel file o eseguire il file.

I permessi dei file possono essere visualizzati usando ls comando:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

Il primo carattere mostra il tipo di file. Può essere un file normale (- ), directory (d ), un collegamento simbolico(l ), o qualsiasi altro tipo speciale di file.

I successivi nove caratteri rappresentano i permessi del file, tre triplette di tre caratteri ciascuna. La prima tripletta mostra le autorizzazioni del proprietario, la seconda le autorizzazioni di gruppo e l'ultima tripletta mostra le autorizzazioni di tutti gli altri. I permessi possono avere un significato diverso a seconda del tipo di file.

Nell'esempio sopra (rw-r--r-- ) significa che il proprietario del file ha i permessi di lettura e scrittura (rw- ), il gruppo e altri hanno solo i permessi di lettura (r-- ).

Ciascuna delle tre triplette di autorizzazioni può essere costituita dai seguenti caratteri e avere effetti diversi, a seconda che sia impostata su un file o su una directory:

Effetto delle autorizzazioni sui file

Autorizzazione Personaggio Significato su file
Leggi - Il file non è leggibile. Non è possibile visualizzare il contenuto del file.
r Il file è leggibile.
Scrivi - Il file non può essere modificato o modificato.
w Il file può essere cambiato o modificato.
Esegui - Il file non può essere eseguito.
x Il file può essere eseguito.
s Se trovato in user tripletta imposta il setuid po. Se trovato nel group tripletta, imposta il setgid po. Significa anche che x flag è impostato.
Quando il setuid o setgid i flag sono impostati su un file eseguibile, il file viene eseguito con il proprietario del file e/o i privilegi di gruppo.
S Come s ma il x il flag non è impostato. Questo flag è usato raramente sui file.
t Se trovato negli others tripletta imposta il sticky bit.
Significa anche che x bandiera è impostata. Questo flag è inutile sui file.
T Come t ma il x il flag non è impostato. Questo flag è inutile sui file.

Effetto delle autorizzazioni sulle directory (cartelle)

In Linux, le directory sono tipi speciali di file che contengono altri file e directory.

Autorizzazione Personaggio Significato su Directory
Leggi - Il contenuto della directory non può essere mostrato.
r È possibile visualizzare il contenuto della directory.
(ad es. È possibile elencare i file all'interno della directory con ls .)
Scrivi - Il contenuto della directory non può essere modificato.
w Il contenuto della directory può essere modificato.
(ad es. puoi creare nuovi file, eliminare file...ecc.)
Esegui - Non è possibile modificare la directory in.
x La directory può essere navigata usando cd .
s Se trovato in user tripletta, imposta il setuid po. Se trovato nel group tripletta imposta il setgid po. Significa anche che x bandiera è impostata. Quando il setgid flag è impostato su una directory i nuovi file creati al suo interno ereditano l'ID del gruppo di directory (GID), anziché l'ID del gruppo primario dell'utente che ha creato il file.
setuid non ha effetto sulle directory.
S Come s ma il x il flag non è impostato. Questo flag è inutile nelle directory.
t Se trovato negli others tripletta imposta il sticky bit.
Significa anche che x bandiera è impostata. Quando lo sticky bit è impostato su una directory, solo il proprietario del file, il proprietario della directory o l'utente amministrativo può eliminare o rinominare i file all'interno della directory.
T Come t ma il x il flag non è impostato. Questo flag è inutile nelle directory.

Utilizzo di chmod #

Il chmod comando assume la seguente forma generale:

chmod [OPTIONS] MODE FILE...

Il chmod comando consente di modificare i permessi su un file utilizzando una modalità simbolica o numerica o un file di riferimento. Spiegheremo le modalità in modo più dettagliato più avanti in questo articolo. Il comando può accettare uno o più file e/o directory separati da uno spazio come argomenti.

Solo il root, il proprietario del file o l'utente con privilegi sudo possono modificare i permessi di un file. Fai molta attenzione quando usi chmod , soprattutto quando si modificano ricorsivamente le autorizzazioni.

Metodo simbolico (testo) #

La sintassi di chmod comando quando si utilizza la modalità simbolica ha il seguente formato:

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

Il primo set di flag ([ugoa…] ), flag degli utenti, definisce quali classi di utenti vengono modificate le autorizzazioni per il file.

  • u - Il proprietario del file.
  • g - Gli utenti che sono membri del gruppo.
  • o - Tutti gli altri utenti.
  • a - Tutti gli utenti, identici a ugo .

Se il flag degli utenti viene omesso, quello predefinito è a e le autorizzazioni impostate da umaska ​​non sono interessate.

Il secondo set di flag ([-+=] ), i flag di operazione, definisce se i permessi devono essere rimossi, aggiunti o impostati:

  • - Rimuove le autorizzazioni specificate.
  • + Aggiunge autorizzazioni specificate.
  • = Modifica le autorizzazioni correnti con le autorizzazioni specificate. Se non vengono specificate autorizzazioni dopo = simbolo, tutte le autorizzazioni della classe utente specificata vengono rimosse.

I permessi (perms... ) può essere impostato esplicitamente utilizzando zero o una o più delle seguenti lettere:r , w , x , X , s e t . Usa una singola lettera dell'insieme u , g e o quando si copiano i permessi da una classe utente a un'altra.

Quando si impostano i permessi per più di una classe utente ([,…] ), usa le virgole (senza spazi) per separare le modalità simboliche.

Di seguito sono riportati alcuni esempi di come utilizzare il chmod comando in modalità simbolica:

  • Concedi ai membri del gruppo il permesso di leggere il file, ma non di scriverlo ed eseguirlo:

    chmod g=r filename
  • Rimuovere l'autorizzazione di esecuzione per tutti gli utenti:

    chmod a-x filename
  • Rimuovi ricorsivamente l'autorizzazione di scrittura per altri utenti:

    chmod -R o-w dirname
  • Rimuovere l'autorizzazione di lettura, scrittura ed esecuzione per tutti gli utenti tranne il proprietario del file:

    chmod og-rwx filename

    La stessa cosa può essere eseguita anche utilizzando il seguente modulo:

    chmod og= filename
  • Concedi autorizzazioni di lettura, scrittura ed esecuzione al proprietario del file, autorizzazioni di lettura al gruppo del file e nessuna autorizzazione a tutti gli altri utenti:

    chmod u=rwx,g=r,o= filename
  • Aggiungi le autorizzazioni del proprietario del file alle autorizzazioni che hanno i membri del gruppo del file:

    chmod g+u filename
  • Aggiungi un bit appiccicoso a una determinata directory:

    chmod o+t dirname

Metodo numerico #

La sintassi di chmod comando quando si utilizza il metodo numerico ha il seguente formato:

chmod [OPTIONS] NUMBER FILE...

Quando si utilizza la modalità numerica, è possibile impostare i permessi per tutte e tre le classi utente (proprietario, gruppo e tutte le altre) contemporaneamente.

Il NUMBER può essere un numero di 3 o 4 cifre.

Quando viene utilizzato un numero di 3 cifre, la prima cifra rappresenta i permessi del proprietario del file, la seconda il gruppo del file e l'ultima tutti gli altri utenti.

Ciascuna autorizzazione di scrittura, lettura ed esecuzione ha il seguente valore numerico:

  • r (leggi) =4
  • w (scrivere) =2
  • x (esegui) =1
  • nessuna autorizzazione =0

Il numero delle autorizzazioni di una specifica classe utente è rappresentato dalla somma dei valori delle autorizzazioni per quel gruppo.

Per conoscere i permessi del file in modalità numerica è sufficiente calcolare i totali per tutte le classi di utenti. Ad esempio, per concedere autorizzazioni di lettura, scrittura ed esecuzione al proprietario del file, autorizzazioni di lettura ed esecuzione al gruppo del file e autorizzazioni di lettura solo a tutti gli altri utenti, procedere come segue:

  • Proprietario:rwx=4+2+1=7
  • Gruppo:r-x=4+0+1=5
  • Altri:r-x=4+0+0=4

Usando il metodo sopra arriviamo al numero 754 , che rappresenta le autorizzazioni desiderate.

Per impostare il setuid , setgid e sticky bit i flag usano un numero a quattro cifre.

Quando viene utilizzato il numero a 4 cifre, la prima cifra ha il seguente significato:

  • setuid=4
  • setgid=2
  • appiccicoso=1
  • nessuna modifica =0

Le tre cifre successive hanno lo stesso significato di quando si utilizza un numero a 3 cifre.

Se la prima cifra è 0 può essere omessa e la modalità può essere rappresentata con 3 cifre. La modalità numerica 0755 è lo stesso di 755 .

Per calcolare la modalità numerica puoi anche usare un altro metodo (metodo binario), ma è un po' più complicato. Sapere come calcolare la modalità numerica utilizzando 4, 2 e 1 è sufficiente per la maggior parte degli utenti.

Puoi controllare i permessi del file nella notazione numerica usando il stat comando:

stat -c "%a" filename
644

Ecco alcuni esempi di come usare chmod comando in modalità numerica:

  • Concedi al proprietario del file autorizzazioni di lettura e scrittura e autorizzazioni di lettura solo ai membri del gruppo e a tutti gli altri utenti:

    chmod 644 dirname
  • Concedi al proprietario del file autorizzazioni di lettura, scrittura ed esecuzione, autorizzazioni di lettura ed esecuzione ai membri del gruppo e nessuna autorizzazione a tutti gli altri utenti:

    chmod 750 dirname
  • Concedi permessi di lettura, scrittura ed esecuzione e un bit appiccicoso a una determinata directory:

    chmod 1777 dirname
  • Imposta ricorsivamente le autorizzazioni di lettura, scrittura ed esecuzione per il proprietario del file e nessuna autorizzazione per tutti gli altri utenti su una determinata directory:

    chmod -R 700 dirname

Utilizzo di un file di riferimento #

Il --reference=ref_file l'opzione consente di impostare i permessi del file in modo che corrispondano a quelli del file di riferimento specificato (ref_file ).

chmod --reference=REF_FILE FILE

Ad esempio, il comando seguente assegnerà i permessi del file1 a file2

chmod --reference=file1 file2

Modifica ricorsivamente le autorizzazioni del file #

Per operare ricorsivamente su tutti i file e le directory nella directory data, usa il -R (--recursive ) opzione:

chmod -R MODE DIRECTORY

Ad esempio, per modificare i permessi di tutti i file e le sottodirectory in /var/www directory in 755 useresti:

chmod -R 755 /var/www

I link simbolici hanno sempre 777 autorizzazioni.

Per impostazione predefinita, quando si modificano i permessi del collegamento simbolico, chmod cambierà le autorizzazioni sul file a cui punta il collegamento.

chmod 755 symlink

È probabile che invece di modificare la proprietà del target, visualizzerai un errore "impossibile accedere al 'collegamento simbolico':autorizzazione negata".

L'errore si verifica perché per impostazione predefinita sulla maggior parte delle distribuzioni Linux i collegamenti simbolici sono protetti e non è possibile operare sui file di destinazione. Questa opzione è specificata in /proc/sys/fs/protected_symlinks . 1 significa abilitato e 0 Disabilitato. Si consiglia di non disabilitare la protezione del collegamento simbolico.

Modifica delle autorizzazioni dei file in blocco #

A volte ci sono situazioni in cui è necessario modificare in blocco i permessi di file e directory.

Lo scenario più comune consiste nel modificare ricorsivamente le autorizzazioni del file del sito Web in 644 e le autorizzazioni della directory per 755 .

Utilizzando il metodo numerico:

find /var/www/my_website -type d -exec chmod 755 {} \;find /var/www/my_website -type f -exec chmod 644 {} \;

Utilizzando il metodo simbolico:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

Il find comando cercherà file e directory in /var/www/my_website e passa ogni file e directory trovati a chmod comando per impostare i permessi.

Conclusione #

Il chmod comando cambia i permessi del file. I permessi possono essere impostati utilizzando la modalità simbolica o numerica.

Per saperne di più su chmod visita la manpage di chmod.

Se hai domande o feedback, sentiti libero di lasciare un commento.


Linux
  1. Nozioni di base sui permessi dei file Linux

  2. Permessi Linux:un'introduzione a chmod

  3. Comando wc Linux

  4. comando Linux grep

  5. Comando Linux chmod

Comando Gzip in Linux

Comando Gunzip in Linux

Comando Stat in Linux

Comando Chmod in Linux

Comando Chmod:come modificare le autorizzazioni dei file in Linux

Esempi di comandi chmod di Linux