In Linux, i permessi, gli attributi e la proprietà dei file controllano il livello di accesso che i processi di sistema e gli utenti hanno ai file. Ciò garantisce che solo gli utenti e i processi autorizzati possano accedere a file e directory specifici.
Autorizzazioni 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 il chown
e chgrp
comandi.
Tre tipi di autorizzazioni file si applicano a ciascuna classe di utenti:
- Il permesso di lettura.
- Il permesso di scrittura.
- Il permesso di esecuzione.
Questo concetto ti consente di controllare quali utenti possono leggere il file, scriverlo o eseguirlo.
Per visualizzare i permessi dei file, usa ls
comando:
ls -l file_name
-rw-r--r-- 12 linuxize 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 file normale (-
), directory (d
), un collegamento simbolico(l
), o altri tipi speciali di file. I seguenti 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.
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--
).
I permessi dei file hanno un significato diverso a seconda del tipo di file.
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)
Le directory sono tipi speciali di file che possono contenere 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 esempio, 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. 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 possono eliminare o rinominare i file all'interno della directory. | |
T | Come t , ma il x il flag non è impostato. Questo flag è inutile nelle directory. |
Modifica dei permessi del file #
I permessi del file possono essere modificati usando il chmod
comando. Solo il root, il proprietario del file o l'utente con privilegi sudo possono modificare le autorizzazioni di un file. Fai molta attenzione quando usi chmod
, soprattutto quando si modificano ricorsivamente le autorizzazioni. Il comando può accettare uno o più file e/o directory separati da uno 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 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 le classi degli utenti per le quali vengono modificate le autorizzazioni al file.
u
- Il proprietario del file.g
- Gli utenti che sono membri del gruppo.o
- Tutti gli altri utenti.a
- Tutti gli utenti, identici augo
.
Quando il flag degli utenti viene omesso, il valore predefinito è a
.
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 fornite autorizzazioni dopo=
simbolo, tutte le autorizzazioni della classe utente specificata vengono rimosse.
I permessi (perms...
) sono impostati 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 a un'altra utente.
Quando si impostano i permessi per più di una classe utente ([,…]
), usa le virgole (senza spazi) per separare le modalità simboliche.
Ecco alcuni esempi di come usare chmod
comando in modalità simbolica:
-
Concedi ai membri del gruppo il permesso di eseguire il file, ma non di leggerlo e scriverlo:
chmod g=x filename
-
Rimuovere l'autorizzazione di scrittura per tutti gli utenti:
chmod a-w filename
-
Rimuovi ricorsivamente l'autorizzazione di esecuzione per altri utenti:
chmod -R o-x 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
Metodo numerico #
La sintassi di chmod
comando quando si utilizza la modalità simbolica 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 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 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) =4w
(scrivere) =2x
(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, dovresti 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
flag, usa 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" file_name
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
Conclusione #
In Linux, l'accesso ai file è limitato utilizzando i permessi, gli attributi e la proprietà dei file. Per modificare i permessi del file usa il chmod
comando.