androide

Comando chmod in linux (permessi dei file)

Corso di terminale Linux - i permessi

Corso di terminale Linux - i permessi

Sommario:

Anonim

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

Questa esercitazione illustra come utilizzare il comando chmod per modificare le autorizzazioni di accesso a file e directory.

Autorizzazioni file Linux

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

In Linux, ogni file è associato a un proprietario e un gruppo e assegnato con diritti di accesso di autorizzazione per tre diverse classi di utenti:

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

La proprietà del file può essere cambiata usando i comandi chown e chgrp .

Esistono tre tipi di autorizzazioni file applicabili 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 sul file o eseguire il file.

Le autorizzazioni per i file possono essere visualizzate utilizzando il comando ls :

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 ( - ), una directory ( d ), un collegamento simbolico ( l ) o qualsiasi altro tipo speciale di file.

I successivi nove caratteri rappresentano le autorizzazioni del file, tre terzine di tre caratteri ciascuna. La prima terzina mostra le autorizzazioni del proprietario, le seconde autorizzazioni di un gruppo e l'ultima terzina mostra le autorizzazioni di tutti gli altri. Le autorizzazioni 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-- ).

Ognuna delle tre terzine di autorizzazione può essere costruita con i seguenti caratteri e avere effetti diversi, a seconda che siano impostati su un file o su una directory:

Effetto delle autorizzazioni sui file

Autorizzazione Personaggio Significato sul file
Leggere - Il file non è leggibile. Non è possibile visualizzare il contenuto del file.
r Il file è leggibile.
Scrivi - Il file non può essere cambiato o modificato.
w Il file può essere cambiato o modificato.
Eseguire - Il file non può essere eseguito.
x Il file può essere eseguito.
s Se trovato nella terzina user imposta il bit setuid . Se trovato nella tripletta del group , imposta il bit setgid . Significa anche che è impostato il flag x .

Quando i flag setuid o setgid 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 flag x non è impostato. Questo flag viene usato raramente sui file.
t Se trovato nella tripletta degli others imposta il bit sticky .

Significa anche che è impostato il flag x . Questo flag è inutile sui file.

T Come t ma il flag x 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
Leggere - Non è possibile visualizzare il contenuto della directory.
r È possibile visualizzare il contenuto della directory.

(es. Puoi 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. non è possibile creare nuovi file, eliminare file..etc.)

Eseguire - La directory non può essere cambiata in.
x La directory può essere navigata usando cd .
s Se trovato nella terzina user , imposta il bit setuid . Se trovato nella tripletta del group imposta il bit setgid . Significa anche che è impostato il flag x . Quando il flag setgid è 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 alcun effetto sulle directory.

S Come s ma il flag x non è impostato. Questa bandiera è inutile nelle directory.
t Se trovato nella tripletta degli others imposta il bit sticky .

Significa anche che è impostato il flag x . Quando il bit sticky è 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 flag x non è impostato. Questa bandiera è inutile nelle directory.

Usando chmod

Il comando chmod assume la seguente forma generale:

chmod MODE FILE…

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

Solo root, il proprietario del file o l'utente con i privilegi di sudo può modificare le autorizzazioni di un file. Fai molta attenzione quando usi chmod , specialmente quando cambi le autorizzazioni in modo ricorsivo.

Metodo simbolico (testo)

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

chmod perms… FILE…

Il primo set di flag ( ), gli utenti flag, definisce quali utenti classificano 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 umask non sono interessate.

La seconda serie di flag ( ), i flag di operazione, definiscono se le autorizzazioni devono essere rimosse, aggiunte o impostate:

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

Le autorizzazioni ( perms… ) possono essere impostate esplicitamente utilizzando zero o una o più delle seguenti lettere: r , w , x , X , s , e t . Utilizzare una singola lettera dall'insieme u , g e o quando si copiano le autorizzazioni da una classe di utenti a un'altra.

Quando si impostano le autorizzazioni per più di una classe utente ( ), utilizzare le virgole (senza spazi) per separare le modalità simboliche.

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

  • Concedere ai membri del gruppo l'autorizzazione a leggere il file, ma non a scriverlo ed eseguirlo:

    chmod g=r filename

    Rimuovere l'autorizzazione di esecuzione per tutti gli utenti:

    chmod ax filename

    Rimuovere repulsivamente l'autorizzazione in scrittura per altri utenti:

    chmod -R ow dirname

    Rimuovere le autorizzazioni di lettura, scrittura ed esecuzione per tutti gli utenti tranne il proprietario del file:

    chmod og-rwx filename

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

    chmod og= filename

    Concedi le 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 del comando chmod quando si utilizza il metodo numerico ha il seguente formato:

chmod NUMBER FILE…

Quando si utilizza la modalità numerica, è possibile impostare le autorizzazioni 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 le autorizzazioni del proprietario del file, la seconda del gruppo del file e l'ultima tutti gli altri utenti.

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

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

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

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

  • Proprietario: rwx = 4 + 2 + 1 = 7Gruppo: rx = 4 + 0 + 1 = 5 Altre: rx = 4 + 0 + 0 = 4

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

Per impostare i flag di setuid , setgid e sticky bit usare un numero di quattro cifre.

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

  • setuid = 4setgid = 2sticky = 1no modifiche = 0

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

Se la prima cifra è 0, può essere omessa e la modalità può essere rappresentata con 3 cifre. La modalità numerica 0755 è uguale a 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 usando 4, 2 e 1 è sufficiente per la maggior parte degli utenti.

Puoi controllare le autorizzazioni del file nella notazione numerica usando il comando stat :

stat -c "%a" filename

644

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

  • Concedi le autorizzazioni di lettura e scrittura al proprietario del file e leggi solo le autorizzazioni per i membri del gruppo e tutti gli altri utenti:

    chmod 644 dirname

    Concedi al proprietario del file di leggere, scrivere ed eseguire le autorizzazioni, leggere ed eseguire le autorizzazioni per i membri del gruppo e nessuna autorizzazione per tutti gli altri utenti:

    chmod 750 dirname

    Dare le autorizzazioni di lettura, scrittura ed esecuzione e un bit appiccicoso a una determinata directory:

    chmod 1777 dirname

    Impostare in modo ricorsivo 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

Utilizzando un file di riferimento

L'opzione --reference=ref_file consente di impostare le autorizzazioni del file in modo che siano uguali a quelle del file di riferimento specificato ( ref_file ).

chmod --reference=REF_FILE FILE

Ad esempio, il comando seguente assegnerà le autorizzazioni di file1 a file2

chmod --reference=file1 file2

Modifica ricorsiva delle autorizzazioni del file

Per operare in modo ricorsivo su tutti i file e le directory nella directory specificata, utilizzare l'opzione -R ( --recursive ):

chmod -R MODE DIRECTORY

Ad esempio, per modificare le autorizzazioni di tutti i file e le sottodirectory della directory /var/www su 755 dovresti usare:

chmod -R 755 /var/www

Operando su collegamenti simbolici

I collegamenti simbolici hanno sempre 777 autorizzazioni.

Per impostazione predefinita, quando si modificano le autorizzazioni di symlink, chmod modificherà le autorizzazioni sul file a cui punta il collegamento.

chmod 755 symlink

È probabile che invece di modificare la proprietà di destinazione, verrà visualizzato l'errore "Impossibile accedere a" 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 file e le autorizzazioni delle directory.

Lo scenario più comune è modificare in modo ricorsivo le autorizzazioni del file del sito Web in 644 e le autorizzazioni della directory in 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 comando find cercherà i file e le directory in /var/www/my_website e passerà ogni file e directory trovati al comando chmod per impostare le autorizzazioni.

Conclusione

Il comando chmod modifica le autorizzazioni del file. Le autorizzazioni possono essere impostate utilizzando la modalità simbolica o numerica.

Per saperne di più su chmod visita la pagina man di chmod.

terminale chmod