GNU/Linux >> Linux Esercitazione >  >> Linux

Permessi Linux:un'introduzione a chmod

[Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente.]

Se hai mai lavorato con un sistema Linux, hai sicuramente avuto a che fare con i file, e questo significa che potresti aver riscontrato messaggi come questo di seguito:

localhost@user1$ cat /etc/sudoers
cat: /etc/sudoers: Permission denied

Oppure, in modo simile, messaggi di errore come "Non hai i permessi per caricare file in questa cartella", che potrebbero averti impedito di leggere, scrivere o accedere a un determinato file. E, naturalmente, questo errore potrebbe averti fatto chiedere, almeno la prima volta che hai riscontrato questo problema, sul motivo per cui ti è stato negato l'accesso.

Diamo un'occhiata ai permessi dei file Linux e ai modi per limitarli, oltre a giocare un po' con i file. Quando elenchi i file in una particolare directory in Linux, potresti aver visto r, w e x e ti sei chiesto cosa significano queste lettere. Hanno un enorme significato nel determinare cosa può fare esattamente un particolare utente con un file.

Diamo un'occhiata a un esempio:

localhost@user1$ ls -ltr chmod_directory/
total 0
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Write.txt
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Execute.sh
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Access.txt

I permessi dei file predefiniti sono rw-r--r-- (dal valore umask (trattato più avanti nell'articolo)), come mostrato nell'esempio sopra.

A ciascuna autorizzazione è assegnato un valore numerico:

  • r (lettura) ha un valore di 4
  • w (scrittura) ha un valore di 2
  • x (esegui) ha un valore di 1

Questi valori sono additivi per ogni "tripletta", il che significa che un'autorizzazione file di rw- ha il valore di 6 e rwx ha il valore di 7. Come discusso in precedenza, qualsiasi file appena creato, il valore predefinito è 644 (rw-r --r--), il che significa che il proprietario del file può leggere e scrivere e tutti gli altri possono solo leggere questo file. La prima tripletta è l'autorizzazione per il proprietario/creatore del file, la seconda è per le autorizzazioni di gruppo e la terza è per gli altri (utenti al di fuori del proprietario/creatore o un gruppo con autorizzazioni). Questa impostazione ha senso per ovvi motivi:il proprietario dovrebbe avere un controllo maggiore sul contenuto del file per poterlo leggere e scrivere. Altri potrebbero voler leggere i contenuti ma non modificarli. Ovviamente puoi modificare questa impostazione con il chmod comando, che è al centro di questo articolo.

Quindi, per comprendere questo concetto in un modo più semplice, pensa ai permessi dei file come a una matrice 3x3, in cui proprietari, gruppi e altri hanno ciascuno impostazioni r, w e x. Nell'esempio sopra:

  • Il creatore del file (proprietario/utente) ha i permessi di lettura e scrittura:-rw -r--r--.
  • Il creatore del gruppo del file (gruppo) ha i permessi di lettura:-rw-r-- r--.
  • Altri hanno i permessi di lettura rappresentati dagli ultimi bit:-rw-r--r-- .

Ora vediamo i valori di autorizzazione predefiniti per una directory. Diciamo la directory chmod_directory è stato creato con i permessi predefiniti di 755. A differenza dei file, una directory contiene file. Affinché chiunque non sia il proprietario a 'cd ' nella directory, ha bisogno di un permesso di esecuzione, che a sua volta rende la directory:

  • Leggibile, scrivibile ed eseguibile dal proprietario (rwx è 7).
  • Leggibile ed eseguibile dal gruppo (r-x è 5).
  • Leggibile ed eseguibile per altri (r-x è 5).

Nota:la designazione r-x NON significa r meno x, significa lettura ed esecuzione ma scrittura mancante. Il - è un segnaposto per un'autorizzazione.

(Dedica un minuto a pensare al motivo per cui questo è il comportamento predefinito.)

Ok, ora che hai appreso le basi dei permessi di file e directory, diamo un'occhiata al chmod comando, che aiuta a modificare i permessi per file e directory.

Come accennato nella pagina man:

This manual page documents the GNU version of chmod. chmod changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits.

The format of a symbolic mode is [ugoa...][[+-=][perms...]...], where perms is either zero or more letters from the set rwxXst, or a single letter from the set ugo. Multiple symbolic modes can be given, separated by commas.

A combination of the letters ugoa controls which users' access to the file will be changed: the user who owns it (u), other users in the file's group (g), other users not in the file's group (o), or all users (a). If none of these are given, the effect is as if a were given, but bits that are set in the umask are not affected.

Utilizzo della rappresentazione ottale

Per modificare i permessi dei file, puoi utilizzare la rappresentazione ottale (numerica) o la rappresentazione simbolica (le lettere). Nella rappresentazione ottale, la prima cifra è per l'utente, la seconda cifra è per il gruppo e la terza cifra è per gli altri. Diamo un'occhiata a due esempi di impostazione dei permessi con rappresentazione ottale per comprendere questo concetto.

Esempio 1 :se desideri concedere autorizzazioni di lettura (4), scrittura (2) ed esecuzione (1) sia all'utente che al gruppo e solo autorizzazioni di lettura (4) ad altri, puoi utilizzare:

localhost@user1$ chmod 774 <file-name>

Esempio 2 :se desideri limitare i permessi di scrittura a tutti gli altri eccetto il proprietario del file, puoi utilizzare:

localhost@user1$ chmod 744 <file-name>

Utilizzo della rappresentazione simbolica

Puoi anche modificare le autorizzazioni utilizzando la rappresentazione simbolica anziché numerica. La rappresentazione simbolica consiste nell'assegnare autorizzazioni all'utente (u), al gruppo (g) e ad altri (o) utilizzando lettere (simboli) e le designazioni delle lettere:r, w e x.

Esaminiamo di nuovo questi esempi, ma usando la rappresentazione simbolica.

Esempio 1 :leggi, scrivi ed esegui per l'utente e il gruppo, oltre a leggere solo per altri, mappe come:

localhost@user1$ chmod ug+rwx,o+r <filename>

Esempio 2 :leggi, scrivi ed esegui per l'utente e leggi solo i permessi per le mappe di gruppo e altre come:

localhost@user1$ chmod u+rwx,go+r <file-name>

Fantastico, sono orgoglioso di tutti voi:ora avete padroneggiato i concetti di autorizzazione dei file. Ma ti avverto che ci sono due scenari pericolosi che potresti voler evitare, quindi mantieni questo come best practice durante l'utilizzo di chmod. Evita di usare casi limite, come chmod 777 <file-name> e chmod 000 <filename> . Usando chmod 777 <file-name> fornisce a tutti i permessi rwx e generalmente non è una buona pratica dare pieni poteri a tutti gli utenti in un sistema. Il secondo caso, vi lascio a voi ragazzi da capire.

Utilizzo di umasks

Vi lascerò ragazzi con un altro concetto di cui dovete essere a conoscenza (umask) che decide le autorizzazioni predefinite per un file. Nel complesso, i valori predefiniti sono:

  • Umaschera:0022
  • File:0666
  • Elenco:0777

Come forse ricorderete, il valore di autorizzazione file predefinito è 0644 e la directory predefinita è 0755. Il valore umask predefinito viene sottratto dal valore predefinito generale del file/directory. Puoi impostare i valori di umask in /etc/profile o in ~/.bashrc .

Conclusione

Chmod è un ottimo comando Linux per manipolare i permessi di file e directory. Con i concetti menzionati in questo articolo, sei dotato di conoscenze sufficienti per gestire le autorizzazioni nelle distribuzioni basate su Linux.


Linux
  1. Introduzione al comando Linux chmod

  2. Un'introduzione al monitoraggio dell'account utente Linux

  3. Linux chmod and chown - Come modificare le autorizzazioni e la proprietà dei file in Linux

  4. Permessi dei file in Linux con esempio

  5. Permessi dei file in Linux – Lettura/Scrittura/Esegui

Comando Chmod in Linux (autorizzazioni file)

Comando Chmod in Linux

Autorizzazioni Linux:come trovare le autorizzazioni di un file

Comando Chmod:come modificare le autorizzazioni dei file in Linux

Comprendere i permessi dei file Linux

Esempi di comandi chmod di Linux