Decifrare le autorizzazioni del file system Linux
Pubblicato: 2017-02-24I permessi dei file Linux possono sembrare ad alcuni geroglifici della teoria dei numeri arcani ed è comprensibile. Il modello di autorizzazione del filesystem di Linux deriva dall'eredità di UNIX. Tuttavia, sono abbastanza facili da afferrare, una volta compresa la logica dietro di loro.
Gruppi e tipi di autorizzazioni
Tutto il controllo dell'accesso a file e cartelle è definito nel filesystem utilizzando le seguenti informazioni:
- Tre gruppi di autorizzazioni: u per proprietario, g , gruppo, o o a , tutti gli utenti.
- Tre tipi di autorizzazione: r , read, x , execute, w , write.
I tipi di autorizzazione sono i caratteri “r”, ”x” e “w” , chiamati flag, e vengono visualizzati come tali se si elencano in qualche modo i permessi del file o della cartella. Le bandiere non impostate sono rappresentate con un carattere "-". Quelli dei gruppi di autorizzazioni vengono utilizzati nei comandi che cambiano la proprietà e il gruppo di un file, che approfondiremo a breve.
Autorizzazioni di visualizzazione
È possibile visualizzare le autorizzazioni di un file o di una cartella utilizzando un file manager della GUI o ispezionando l'output del comando ls nel terminale della console.
Apri il tuo terminale e digita il seguente comando:
$ prova tattile
$ ls -la test
-rw-r–r– 1 rigo di yorgos 0 23 feb 17:07 test
La stringa "-rw-r–r–" contiene le informazioni sui permessi del file system che ci interessano. Il resto dei campi da sinistra a destra visualizzano le seguenti informazioni:
- quanti link ci sono a questo file (1)
- l'id utente del proprietario (yorgos)
- L'ID del gruppo (personale)
- Lunghezza del file in byte (0)
- Data di creazione (23 febbraio)
- Tempo di creazione (17:07)
- Nome file (test)
Bit di autorizzazione
Noterai che ci sono 9 diverse combinazioni di gruppi e tipi di autorizzazioni, ma 10 posizioni di flag. Il primo mostra il flag del tipo di file mentre il secondo indica i permessi stessi. I tipi di file possono essere: "-" per i file, "l" per i collegamenti simbolici (questi sono collegamenti di file system che puntano semplicemente a un altro file) e "d" per le directory. Poiché il primo carattere/flag nel nostro esempio è “-”, stiamo parlando di un semplice file. Proseguendo, analizziamo il campo delle autorizzazioni:
– : tipo di file (può contenere l, - o d)
rw- : permessi di lettura e scrittura (nessuna esecuzione). Queste autorizzazioni sono per il proprietario.
r– : permesso di lettura, nessun permesso di scrittura ed esecuzione. Queste autorizzazioni riguardano gli utenti appartenenti a un gruppo.
r– : permesso di lettura, nessuna scrittura ed esecuzione. Infine, queste autorizzazioni riguardano tutti gli altri.
Quindi, in effetti, questo significa solo "questo file può essere letto e scritto dal proprietario ed è di sola lettura da tutti gli altri". Il gruppo condivide le stesse autorizzazioni.
Modifica dei permessi
Per modificare le autorizzazioni di un file o di una cartella, ancora una volta, puoi utilizzare un comando GUI (questo non rientra nell'ambito di questo articolo, quindi non andremo lì) o utilizzare determinati comandi Linux nel tuo terminale. Il comando che useremo si chiama chmod (cambia modalità file). Il comando chmod accetta una varietà di parametri che ne modificano il comportamento in molti modi diversi, ma il suo uso generale è il seguente:
$ chmod <modalità> <file>
La <modalità> è specificata dai seguenti simboli:
r il flag di lettura
w il flag di scrittura
x il flag di esecuzione
u il flag di autorizzazione utente/proprietario
g il flag di autorizzazione del gruppo
o il flag di autorizzazione degli altri utenti
Ce ne sono un paio di altri, ma li discuteremo nella sezione finale del nostro articolo.
Quindi, supponiamo che tu voglia concedere i permessi di esecuzione agli utenti appartenenti al gruppo (ma assicurati di essere prima il proprietario del file!):
$ chown g+x test
$ ls -l test
-rwxrwxrwx 1 personale di yorgos 0 23 feb 17:07 test
O forse devi bloccare completamente tutti gli altri. Non sarebbero in grado di leggere, scrivere o eseguire il file:
$ chown o-rwx test
$ ls -l test
-rwxrwx— 1 rigo di yorgos 0 23 febbraio 17:07 test
Qui vediamo gli ultimi flag tutti deselezionati su "-".
Se vuoi vedere più esempi, consulta la pagina di manuale di chmod emettendo il seguente comando:
$ uomo chmod
Proprietari e gruppi
Puoi anche modificare la proprietà di un file e di un gruppo di file utilizzando il comando chown .
Il comando chown accetta vari parametri che ne alterano il comportamento in qualche modo, ma l'uso più comune è il seguente:
# chown <proprietario> <file>
O
# chown <proprietario:gruppo> <file>
Il primo esempio viene utilizzato per cambiare il proprietario di un file in un altro. Tieni presente, tuttavia, che devi disporre dell'accesso come root per modificare la proprietà di un file. Quindi, eseguendo quanto segue:
# chown nessuno prova
# ls -l test
-rwxrwxrwt 1 nessuno staff 0 23 febbraio 17:07 test
ora viene rivelato che il file è di proprietà dell'id utente "nessuno" e non più di "yorgos".
Allo stesso modo il comando:
# chown nessuno: prova della ruota
# ls -l test
-rwxrwxrwt 1 nessuno ruota 0 23 febbraio 17:07 test
Cambia la proprietà del file su nessuno e il gruppo su wheel .
Se vuoi saperne di più sul comando e sui suoi vari parametri, consulta la pagina di manuale di chown eseguendo il comando:
$ uomo chown
Permessi speciali
Oltre ai tipi e ai gruppi di autorizzazioni che abbiamo già menzionato nell'articolo, ce ne sono un altro paio, chiamati "permessi speciali".
Questi sono i seguenti:
S Il flag Imposta ID utente e Imposta ID gruppo.
t La bandiera appiccicosa.
Il primo viene impostato utilizzando il flag "s" nel comando chmod nel modo consueto, in quanto tale:
$ chmod u+s test
$ ls -l test
-rwsrwx— 1 giorgio personale 0 febbraio 23 17:07 prova
Questo flag è anche chiamato flag SUID (Set User ID) o SGID (Set Group ID). Se questo bit è impostato, il file eredita i diritti di accesso del suo proprietario. Ciò significa che chiunque esegua il file, lo fa in qualità di proprietario. Il SGID è simile, ma il file eredita il diritto di accesso del suo gruppo. Questo, ovviamente, può portare a problemi di sicurezza, quindi è necessario prestare attenzione.
Il bit appiccicoso, o "t", è particolarmente utile. Quando sono impostati in una directory, che di solito è condivisa come /tmp, i file creati lì possono essere rinominati o eliminati solo dai rispettivi proprietari. Se lo sticky bit non è impostato, il proprietario della directory non ha il controllo su di essi.
Puoi rendere una directory "appiccicosa" emettendo il seguente comando:
$ chmod +t /directory
Rappresentazione ottale
Oltre a utilizzare i flag per definire autorizzazioni come "r" e "w", puoi anche utilizzare valori numerici. Il comando chmod assegna i seguenti valori alle autorizzazioni:
“r” = 4
“w” = 2
“x” = 1
Quindi, al fine di impostare un file in lettura/scrittura/esecuzione per il proprietario e in lettura/esecuzione per tutti gli altri, che significa "-rwxr-xr-x", calcoliamo il valore numerico come tale:
rwx = 4+2+1 = 7
rx = 4+1 = 5
Infine diamo il comando:
$ chmod 755 test
$ ls – prova
-rwxr-xr-x 1 giorgio personale 21 febbraio 24 02:08 prova
Esercitati da solo utilizzando diversi permessi e valori numerici per prendere la mano!