Comprensione dei permessi dei file su Linux

4 mag 2021 7 min di lettura
Comprensione dei permessi dei file su Linux
Indice dei contenuti

Introduzione

In Linux, le autorizzazioni, gli attributi e la proprietà dei file controllano il livello di accesso che il sistema elabora e gli utenti hanno ai file. Ciò garantisce che solo gli utenti e i processi autorizzati possano accedere a file e directory specifici.

Autorizzare i file Linux

Il modello di autorizzazioni di base di Linux funziona associando ogni file di sistema a un proprietario e un gruppo e assegnando i diritti di accesso alle autorizzazioni 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 i comandi chown e chgrp.

Tre tipi di autorizzazioni per i file si applicano a ciascuna classe di utenti:

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

Questo concetto consente di controllare quali utenti possono leggere il file, scrivere nel file o eseguire il file.

Per visualizzare le autorizzazioni del file, utilizzare il comando ls:

ls -l file_name
-rw-r--r-- 12 noviello users 12.0K Apr  28 10:10 file_name
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

Il primo carattere indica il tipo di file. Può essere un normale file (-), directory (d), un collegamento simbolico (l) o altri tipi speciali di file. I seguenti nove caratteri rappresentano i permessi del file, tre terzine di tre caratteri ciascuna. La prima tripletta mostra i permessi del proprietario, la seconda i permessi di gruppo e l'ultima tripletta mostra i permessi di tutti gli altri.

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--).

Le autorizzazioni dei file hanno un significato diverso a seconda del tipo di file.

Ciascuna delle tre terzine di autorizzazione può essere composta dai seguenti caratteri e avere effetti diversi, a seconda che siano impostati su un file o su una directory:

Effetto delle autorizzazioni sui file

AutorizzazionePersonaggioSignificato su file
Leggere-Il file non è leggibile. Non è possibile visualizzare il contenuto del file.
rIl file è leggibile.
Scrivi-Il file non può essere cambiato o modificato.
wIl file può essere cambiato o modificato.
Eseguire-Il file non può essere eseguito.
xIl file può essere eseguito.
sSe trovato nella userterzina, imposta il setuidbit. Se trovato nella groupterzina, imposta il setgidbit. Significa anche che la xbandiera è impostata.
Quando i flag setuido setgidsono impostati su un file eseguibile, il file viene eseguito con i privilegi di proprietario e / o gruppo del file.
SUguale a s, ma la xbandiera non è impostata. Questo flag è usato raramente sui file.
tSe trovato nella othersterzina, imposta il stickybit.
Significa anche che la xbandiera è impostata. Questo flag è inutile sui file.
TUguale a, tma la xbandiera non è impostata. Questo flag è inutile sui file.

Effetto delle autorizzazioni sulle directory (cartelle)

Le directory sono tipi speciali di file che possono contenere altri file e directory.

AutorizzazionePersonaggioSignificato sulla directory
Leggere-Non è possibile visualizzare il contenuto della directory.
rÈ possibile visualizzare il contenuto della directory.
(ad esempio, puoi elencare i file all'interno della directory con ls.)
Scrivi-Il contenuto della directory non può essere modificato.
wIl contenuto della directory può essere modificato.
(ad esempio, puoi creare nuovi file , eliminare file .. ecc.)
Eseguire-La directory non può essere modificata in.
xLa directory può essere esplorata utilizzando cd.
sSe trovato nella userterzina, imposta il setuidbit. Se trovato nella groupterzina imposta il setgidbit. Significa anche che la xbandiera è impostata. Quando il setgidflag è impostato su una directory, i nuovi file creati al suo interno ereditano l'ID del gruppo di directory (GID) invece dell'ID del gruppo principale dell'utente che ha creato il file.
setuidnon ha effetto sulle directory.
SUguale a s, ma la xbandiera non è impostata. Questa bandiera è inutile sulle directory.
tSe trovato nella othersterzina, imposta il stickybit.
Significa anche che la xbandiera è 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.
TUguale a t, ma la xbandiera non è impostata. Questa bandiera è inutile sulle directory.

Modificare i permessi dei file

I permessi del file possono essere modificati utilizzando il comando chmod. Solo root, il proprietario del file o l'utente con privilegi sudo possono modificare le autorizzazioni di un file. Fai molta attenzione quando usi chmod, specialmente quando cambi le autorizzazioni in modo ricorsivo. Il comando può accettare uno o più file e/o directory separati da spazio come argomenti.

Le autorizzazioni possono essere specificate utilizzando una modalità simbolica, una modalità numerica o un file di riferimento.

Metodo simbolico (testo)

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

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

Il primo gruppo di flags ([ugoa…]), i flag degli utenti, definisce le classi degli utenti per le quali vengono modificati i permessi sul 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.

Quando il flag dell'utente viene omesso, il valore predefinito è a.

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

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

I permessi (perms...) sono esplicitamente impostate utilizzando zero o uno o più dei seguenti lettere: r, w, x, X, s, e t. Usa una singola lettera dal set u, g e o quando copi i permessi da uno alla classe di un altro utente.

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

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

Concedi ai membri del gruppo il permesso di eseguire il file, ma non di leggere e scrivere su di esso:

chmod g=x filename

Rimuovi l'autorizzazione di scrittura per tutti gli utenti:

chmod a-w filename

Rimuovere repulsivamente l'autorizzazione di esecuzione per altri utenti:

chmod -R o-x dirname

Rimuovi 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 per il gruppo del file e nessuna autorizzazione a tutti gli altri utenti:

chmod u=rwx,g=r,o= filename

Metodo numerico

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

chmod [OPTIONS] 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 numero di autorizzazione 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 del gruppo del file e l'ultima di tutti gli altri utenti.

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

  • r (read) = 4
  • w (write) = 2
  • x (execute) = 1
  • no permissions = 0

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

Per scoprire i permessi del file in modalità numerica, calcola semplicemente i totali per tutte le classi degli utenti. Ad esempio, per concedere autorizzazioni di lettura, scrittura ed esecuzione al proprietario del file, autorizzazioni di lettura ed esecuzione per il gruppo del file e autorizzazioni di lettura solo per tutti gli altri utenti, eseguire le seguenti operazioni:

  • Owner: rwx = 4 + 2 + 1 = 7
  • Group: rx = 4 + 0 + 1 = 5
  • Others: rx = 4 + 0 + 0 = 4

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

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

Quando si utilizza il numero a 4 cifre, la prima cifra ha il seguente significato:

  • setuid = 4
  • setgid = 2
  • sticky = 1
  • no changes = 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 è la stessa 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 comando stat:

stat -c "%a" file_name

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

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

chmod 644 dirname

Assegna al proprietario del file le autorizzazioni di lettura, scrittura ed esecuzione, leggi ed esegui le autorizzazioni ai membri del gruppo e nessuna autorizzazione a tutti gli altri utenti:

chmod 750 dirname

Dare permessi di lettura, scrittura ed esecuzione e un bit sticky a una determinata directory:

chmod 1777 dirname

Imposta 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

Conclusione

In Linux, l'accesso ai file è limitato utilizzando autorizzazioni, attributi e proprietà dei file. Per modificare le autorizzazioni del file utilizzare il comando chmod.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.