GNU/Linux >> Linux Esercitazione >  >> Linux

Permessi e proprietà dei file Linux spiegati con esempi

In base alla progettazione, Linux è un sistema operativo multiutente. In un sistema aziendale, ci sarebbero più utenti che accedono allo stesso sistema. Ma se un utente potesse accedere e modificare tutti i file appartenenti ad altri utenti o file di sistema, questo rappresenterebbe sicuramente un rischio per la sicurezza.

Questo è il motivo per cui UNIX e quindi Linux (Linux è un sistema simile a Unix) dispone di misure di sicurezza integrate. Ciò garantisce che un file o una directory possano essere accessibili, modificati o eseguiti solo dagli utenti desiderati.

A quale file si accede da quale utente è deciso da due fattori in Linux:

  • Proprietà del file
  • Autorizzazione file

Comprendere la proprietà e l'autorizzazione dei file è fondamentale per un utente Linux. Spiegherò questi termini in dettaglio qui.

Proprietà dei file in Linux

Nota:qui potrei usare il termine file, ma è applicabile anche alle directory. Immagino che tu sappia che le directory sono comunque file.

Ogni file e directory in Linux ha tre tipi di proprietari:

Utente

L'utente è il proprietario del file. Quando crei un file, diventi il ​​proprietario del file. Anche la proprietà può essere modificata, ma lo vedremo più avanti.

Gruppo

Ogni utente fa parte di un determinato gruppo. Un gruppo è composto da più utenti e questo è un modo per gestire gli utenti in un ambiente multiutente.

Ad esempio, se il team di sviluppo, il team di controllo qualità e il team di amministratore di sistema accedono allo stesso sistema, è necessario creare gruppi separati per loro. In questo modo è possibile gestire i file e la sicurezza del sistema in modo efficace. Consente di risparmiare tempo perché invece di aggiungere manualmente l'autorizzazione per ogni utente, puoi semplicemente aggiungerlo a un gruppo e modificare l'autorizzazione per il gruppo. Vedrai come farlo più avanti in questo articolo.

Anche se sei l'unico utente del sistema, farai comunque parte di molti gruppi. Distribuzioni come Ubuntu creano anche un gruppo con lo stesso nome dell'utente.

💡Esegui il comando gruppi per vedere a quali gruppi di utenti appartieni.

Altro

'Altro' può essere considerato come un super gruppo con tutti gli utenti del sistema. Fondamentalmente, chiunque abbia accesso al sistema appartiene a questo gruppo.

In altre parole, "Utente" è un singolo utente, Gruppo è una raccolta di utenti e Altro è costituito da tutti gli utenti del sistema.

Autorizzazioni file in Linux

Ogni file e directory in Linux ha le seguenti tre autorizzazioni per tutti e tre i tipi di proprietari:

Autorizzazioni per i file

  • Leggi:può visualizzare o copiare il contenuto dei file
  • Scrivi:può modificare il contenuto dei file
  • Esegui:può eseguire il file (se è eseguibile)

Autorizzazioni per le directory

  • Leggi – Può elencare tutti i file e copiare i file dalla directory
  • Scrittura:può aggiungere o eliminare file nella directory (richiede anche l'autorizzazione di esecuzione)
  • Esegui:può accedere alla directory

Comprendere i permessi e la proprietà dei file in Linux

Ora che conosci la terminologia di base delle autorizzazioni e della proprietà dei file, è tempo di vederla in azione.

Puoi usare il "comando stat" o il "comando ls" per controllare i permessi dei file.

Se usi il comando ls con l'opzione -l su un file, vedrai un output come questo:

-rwxrw-r-- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Lascia che ti spieghi questo output con un'immagine:

Consentitemi di spiegare ulteriormente l'intero output in dettaglio:

  • Tipo di file :Indica il tipo di file. d significa directory, – significa file normale, l significa collegamento simbolico.
  • Autorizzazioni :questo campo mostra l'autorizzazione impostata su un file. Lo spiegherò in dettaglio nella prossima sezione.
  • Conteggio hard link :mostra se il file ha collegamenti reali. Il conteggio predefinito è uno.
  • Utente :l'utente che possiede i file.
  • Gruppo :Il gruppo che ha accesso a questo file. Solo un gruppo alla volta può essere proprietario di un file.
  • Dimensioni del file :Dimensione del file in byte.
  • Tempo di modifica :la data e l'ora dell'ultima modifica del file.
  • Nome file :Ovviamente, il nome del file o della directory.

Ora che hai compreso l'output del comando ls -l, concentriamoci sulla parte relativa all'autorizzazione del file.

Nel comando precedente, vedi l'autorizzazione del file in questo modo nel formato a nove cifre :

rwxrw-r--

Ogni lettera denota un permesso particolare:

  • r :Permesso di lettura
  • w :Permesso di scrittura
  • x:Esegui autorizzazione
  • – :Nessuna autorizzazione impostata

Le autorizzazioni sono sempre nell'ordine di lettura, scrittura ed esecuzione, ovvero rwx. E poi queste autorizzazioni vengono impostate per tutti e tre i tipi di proprietari (vedi la sezione relativa alla proprietà) nell'ordine di Utente, Gruppo e Altro.

Questa immagine spiegherà meglio le cose:

Quindi, se guardi ora l'immagine sopra, puoi dire le seguenti cose sui permessi dei file:

  • Il file ha le autorizzazioni di lettura, scrittura ed esecuzione per il proprietario dell'utente. Ma chi è questo proprietario dell'uso del file? Hai queste informazioni nell'output di ls -l (cioè utente abhi).
  • Il file ha i permessi di lettura e scrittura per il gruppo ma non è eseguito. Che gruppo è? Hai le informazioni sul gruppo nell'output del comando ls -l (cioè raggruppa itsfoss).
  • Il file ha solo l'autorizzazione di lettura per Altro, ovvero tutti coloro che hanno accesso al sistema. Non è necessario sapere quale altro è perché "altro" significa tutti gli utenti.

Ora, se vedi di nuovo l'intero comando ls -l, puoi leggere i permessi e la proprietà del file insieme.

-rwxrw-r-- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Il file agatha.txt è di proprietà dell'utente abhi e abhi ha il permesso di lettura, scrittura ed esecuzione. Tutti i membri del gruppo istfoss hanno accesso in lettura e scrittura a questo file mentre tutti gli altri hanno solo accesso in lettura a questo file.

Nota:l'utente root ha super poteri e normalmente ha i permessi di lettura, scrittura ed esecuzione su tutti i file, anche se non lo vedi nei permessi dei file.

Un singolo utente può essere membro di più gruppi, ma solo il gruppo principale dell'utente è il proprietario del gruppo di un file creato dall'utente. Il gruppo principale di un utente può essere trovato usando il comando id come id -gn <username> . Lascia vuoto il nome utente se stai cercando di trovare il tuo gruppo principale.

Ora che sai come scoprire i permessi su un file, vediamo come puoi modificare i permessi e la proprietà di un file.

Modifica i permessi dei file in Linux

Puoi usare il comando chmod per modificare i permessi su un file in Linux.

📚Le autorizzazioni si chiamavano modalità di accesso e quindi chmod era la forma abbreviata di cambia la modalità di accesso .

Ci sono due modi per usare il comando chmod:

  • Modalità assoluta
  • Modalità simbolica

Utilizzo di chmod in modalità assoluta

Nella modalità assoluta, i permessi sono rappresentati in forma numerica (sistema ottale per la precisione). In questo sistema, ogni permesso di file è rappresentato da un numero.

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

Con questi valori numerici, puoi combinarli e quindi utilizzare un numero per rappresentare l'intero set di autorizzazioni.

Numero Autorizzazione
0
1 –x
2 -w-
3 (ovvero 2+1) -wx
4 r–
5 (ovvero 4+1) r-x
6 (ovvero 4+2) rw-
7 (ovvero 4+2+1) rwx

Riesci a indovinare il permesso del file in numeri sul file agatha.txt nel nostro esempio finora? Esatto, è 764.

Ora che sai quale numero rappresenta quale autorizzazione, vediamo come modificare l'autorizzazione del file utilizzando questa conoscenza.

Supponiamo di voler modificare il permesso del file su agatha.txt in modo che tutti possano leggere e scrivere ma nessuno possa eseguirlo? In tal caso, puoi usare il comando chmod in questo modo:

chmod 666 agatha.txt

Se elenchi agatha.txt ora, vedrai che l'autorizzazione è stata modificata.

-rw-rw-rw- 1 abhishek abhishek 457 Aug 10 11:55 agatha.txt

Utilizzo di chmod in modalità simbolica

Il problema con la modalità assoluta è che dovresti sempre fornire tre numeri per tutti e tre i proprietari anche se desideri modificare il set di autorizzazioni per un solo proprietario.

Qui è dove puoi usare la modalità simbolica con il comando chmod.

In modalità simbolica, i proprietari sono indicati con i seguenti simboli:

  • u =proprietario dell'utente
  • g =proprietario del gruppo
  • o =altro
  • a =tutti (utente + gruppo + altro)

La modalità simbolica utilizza operatori matematici per eseguire le modifiche alle autorizzazioni:

  • + per aggiungere autorizzazioni
  • – per rimuovere le autorizzazioni
  • =per sovrascrivere le autorizzazioni esistenti con un nuovo valore

Ora che sai, vediamo come usare il comando chmod in modalità simbolica.

Nel nostro esempio precedente, se desideri aggiungere l'autorizzazione di esecuzione per il proprietario del gruppo, puoi utilizzare il comando chmod in questo modo:

chmod g+x agatha.txt

Se guardi ora le autorizzazioni su questo file, vedrai che ora è stata aggiunta l'autorizzazione di esecuzione:

-rw-rwxrw- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Puoi anche combinare più modifiche alle autorizzazioni in un comando. Si supponga di voler rimuovere l'autorizzazione di lettura e scrittura e aggiungere autorizzazioni di esecuzione per Altro. Vuoi anche aggiungere l'autorizzazione di esecuzione per il proprietario dell'utente. Puoi fare tutto con un solo comando:

chmod o-rw+x,u+x agatha.txt

Le autorizzazioni risultanti sarebbero così:

-rwxrwx--x 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Se desideri modificare le autorizzazioni per tutti e tre i tipi di utenti contemporaneamente, puoi utilizzarlo nel modo seguente:

chmod a-x agatha.txt

Questo rimuoverà l'autorizzazione di esecuzione per tutti.

-rw-rw---- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Alcune persone trovano che convertire i permessi dei file da una modalità all'altra sia un lavoro noioso. Per questo ho creato questo piccolo strumento che ti permette di calcolare i permessi dei file Linux in varie modalità online.

Modifica la proprietà del file in Linux

Per modificare la proprietà di un file, puoi utilizzare il comando chown. Puoi facilmente intuire che chown sta per cambiare proprietario.

Puoi modificare il proprietario utente di un file nel modo seguente:

chown <new_user_name> <filename>

Se vuoi cambiare l'utente e il gruppo, puoi usare il comando chown in questo modo:

chown <new_user_name>:<new_user_group> <filename>

Se vuoi solo cambiare il gruppo, puoi usare il comando chown in questo modo:

chown :<new_user_group> <filename>

oppure utilizzare il comando chgrp utilizzato specificamente per modificare il proprietario del gruppo di un file o di una directory. Puoi intuire che chgrp sta per change group.

chgrp <new_user_group> <filename>

Nel nostro esempio finora, se vuoi cambiare il proprietario dell'utente e il gruppo in root, puoi usare il comando chown in questo modo:

sudo chown root:root agatha.txt

Ciò cambierà la proprietà del file in root sia per l'utente che per il gruppo.

-rw-rw---- 1 root root 457 Aug 10 11:55 agatha.txt

Notare che dovevo usare sudo con chown? È perché qui è coinvolto il root e per gestire il root, hai bisogno dei diritti di superutente.

Suggerimento :Due gruppi non possono possedere lo stesso file.

Suggerimento bonus:c'è una precedenza nei permessi dei file?

Pensa a una situazione in cui il proprietario dell'utente non dispone di autorizzazioni, il gruppo ha l'autorizzazione di lettura mentre altri hanno autorizzazioni di lettura e scrittura.

----r--rw- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Ora, se l'utente abhi prova a leggere il file usando il comando cat o less, sarà in grado di farlo? La risposta è no perché non ha il permesso di lettura.

Ma l'utente abhi fa parte del gruppo itsfoss e il gruppo ha accesso in lettura. Diamine! altro ha il permesso di lettura e scrittura. Questo dovrebbe significare che tutti (incluso l'utente abhi) possono leggere e scrivere il file, giusto? Sbagliato!

In Linux, la precedenza prende da utente e poi gruppo e poi ad altro. Il sistema Linux controlla chi ha avviato il processo (cat o meno nel nostro esempio). Se l'utente che ha avviato il processo è anche l'utente proprietario del file, i bit di autorizzazione utente vengono impostati.

Se il proprietario del file non ha avviato il processo, il sistema Linux controlla il gruppo. Se l'utente che ha avviato il processo è nello stesso gruppo del gruppo proprietario del file, vengono impostati i bit di autorizzazione del gruppo.

Se questo proprietario del processo non è nemmeno nel gruppo come proprietario del gruppo del file, vengono impostati gli altri bit di autorizzazione.

E poi?

Spero che l'articolo ti sia piaciuto e ora hai una migliore comprensione di come funzionano i permessi dei file in Linux.

Ci sono alcune autorizzazioni avanzate per i file come SUID, GUID e sticky bit che potresti imparare in seguito, se lo desideri.

Se hai domande o suggerimenti o se vuoi semplicemente ringraziare, lascia un commento qui sotto. Se ti è piaciuto l'articolo, condividilo sui social media o su vari forum. Questo aiuterà noi e anche altri utenti Linux.


Linux
  1. Come copiare le autorizzazioni e la proprietà dei file su un altro file in Linux

  2. Ordina il comando in Linux con esempi

  3. Comandi Head and Tail in Linux spiegati con esempi

  4. Comando Traceroute di Linux, spiegato con esempi

  5. Controlla i permessi dei file Linux con ls

Timestamp dei file Linux spiegati con esempi

Il comando Tr in Linux spiegato con esempi

Utilizzo del comando Linux mv con esempi

Esempi di comandi chmod di Linux

Spiegazione del comando tee di Linux (con esempi)

Comprendere le autorizzazioni di base dei file e la proprietà in Linux