GNU/Linux >> Linux Esercitazione >  >> Linux

Permessi speciali per i file in Linux:SUID, GUID e Sticky Bit

Le autorizzazioni e la proprietà dei file sono il concetto di sicurezza di base e tuttavia essenziale in Linux. Probabilmente hai già familiarità con questi termini. In genere è simile a questo:

Oltre a questi permessi regolari, ci sono alcuni permessi speciali sui file e non molti utenti Linux ne sono a conoscenza.

Per iniziare a parlare di autorizzazioni speciali, presumo che tu abbia una certa conoscenza delle autorizzazioni di base dei file. In caso contrario, leggi la nostra eccellente guida che spiega i permessi dei file Linux.

Ora ti mostrerò alcuni permessi speciali con nuove lettere sul file system Linux.

In questo esempio, il comando passwd, responsabile della modifica della password di un utente, ha la lettera s nello stesso posto ci aspettiamo di vedere x o - , per le autorizzazioni utente. È importante notare che questo file appartiene all'utente root e al gruppo root.

Con questa autorizzazione non è necessario fornire sudo accedere a un utente specifico quando vuoi che esegua uno script di root.

Cos'è SUID?

Quando il bit SUID è impostato su un file eseguibile, significa che il file verrà eseguito con le stesse autorizzazioni del proprietario del file eseguibile.

Facciamo un esempio pratico. Se guardi il file eseguibile binario del comando passwd, ha il bit SUID impostato.

linuxhandbook:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 59640 Mar 22  2019 /usr/bin/passwd

Ciò significa che qualsiasi utente che esegue il comando passwd lo eseguirà con la stessa autorizzazione di root.

Qual è il vantaggio? Il comando passwd deve modificare file come /etc/passwd, /etc/shadow per cambiare la password. Questi file sono di proprietà di root e possono essere modificati solo da root. Ma grazie al flag setuid (bit SUID), un utente normale potrà anche modificare questi file (che sono di proprietà di root) e cambiare la sua password.

Questo è il motivo per cui puoi usare il comando passwd per cambiare la tua password nonostante il fatto che i file modificati da questo comando siano di proprietà di root.

Perché un utente normale non può cambiare la password di altri utenti?

Tieni presente che un utente normale non può modificare le password per altri utenti, ma solo per se stesso. Ma perché? Se puoi eseguire il comando passwd come utente normale con gli stessi permessi di root e modificare i file come /etc/passwd, perché non puoi cambiare la password di altri utenti?

Se controlli il codice per il comando passwd, scoprirai che controlla l'UID dell'utente la cui password viene modificata con l'UID dell'utente che ha eseguito il comando. Se non corrisponde e se il comando non è stato eseguito da root, genera un errore.

Il concetto di setuid/SUID è complicato e dovrebbe essere usato con la massima cautela, altrimenti lascerai lacune di sicurezza nel tuo sistema. È un concetto di sicurezza essenziale e molti comandi (come il comando ping) e programmi (come sudo) lo utilizzano.

Ora che hai compreso il concetto SUID, vediamo come impostare il bit SUID.

Come impostare il bit SUID?

Trovo più semplice il modo simbolico durante l'impostazione del bit SUID. Puoi usare il comando chmod in questo modo:

chmod u+s file_name

Ecco un esempio:

linuxhandbook:~$ ls -l test.txt
-rwxrw-rw- 1 linuxhandbook linuxhandbook 0 Apr 12 17:51 test.txt
linuxhandbook:~$ chmod u+s test.txt
linuxhandbook:~$ ls -l test.txt
-rwsrw-rw- 1 linuxhandbook linuxhandbook 0 Apr 12 17:52 test.txt

Puoi anche usare il modo numerico. Devi solo aggiungere una quarta cifra alle normali autorizzazioni. Il numero ottale utilizzato per impostare SUID è sempre 4.

linuxhandbook:~$ ls -l test2.txt
-rwxrw-rw- 1 linuxhandbook linuxhandbook 0 Apr 12 17:53 test2.txt
linuxhandbook:~$ chmod 4766 test2.txt
linuxhandbook:~$ ls -l test2.txt
-rwsrw-rw- 1 linuxhandbook linuxhandbook 0 Apr 12 17:54 test2.txt

Come rimuovere SUID?

Puoi usare la modalità simbolica nel comando chmod in questo modo:

chmod u-s test.txt

Oppure, usa il modo numerico con 0 invece di 4 con i permessi che vuoi impostare:

chmod 0766 test2.txt

Differenza tra s piccola e S maiuscola come bit SUID

Ricordi la definizione di SUID? Consente a un file di essere eseguito con le stesse autorizzazioni del proprietario del file.

Ma cosa succede se il file non ha il bit di esecuzione impostato in primo luogo? In questo modo:

linuxhandbook:~$ ls -l test.txt
-rw-rw-rw- 1 linuxhandbook linuxhandbook 0 Apr 12 17:51 test.txt

Se imposti il ​​bit SUID, mostrerà una S maiuscola, non una s minuscola:

linuxhandbook:~$ chmod u+s test.txt
linuxhandbook:~$ ls -l test.txt
-rwSrw-rw- 1 linuxhandbook linuxhandbook 0 Apr 12 17:52 test.txt

Il flag S come SUID significa che c'è un errore che dovresti esaminare. Si desidera che il file venga eseguito con la stessa autorizzazione del proprietario ma non vi è alcuna autorizzazione eseguibile sul file. Ciò significa che nemmeno il proprietario è autorizzato a eseguire il file e se il file non può essere eseguito, non otterrai l'autorizzazione come proprietario. Questo fallisce l'intero punto di impostazione del bit SUID.

Come trovare tutti i file con SUID impostato?

Se vuoi cercare file con questa autorizzazione, usa il comando trova nel terminale con l'opzione -perm.

find / -perm /4000

Cos'è SGID?

SGID è simile a SUID. Con il bit SGID impostato, qualsiasi utente che esegue il file avrà le stesse autorizzazioni del proprietario del gruppo del file.

Il suo vantaggio è nella gestione della directory. Quando l'autorizzazione SGID viene applicata a una directory, tutte le sottodirectory e i file creati all'interno di questa directory avranno la stessa proprietà del gruppo della directory principale (non la proprietà del gruppo dell'utente che ha creato i file e le directory).

Apri il tuo terminale e controlla i permessi sul file /var/local:

linuxhandbook:~$ ls -ld /var/local
drwxrwsr-x 1 root staff 512 Apr 24  2018 /var/local

Questa cartella /var/local ha la lettera "s" nello stesso punto in cui ti aspetti di vedere "x" o "-" per i permessi di gruppo.

Un esempio pratico di SGID è con il server Samba per la condivisione di file sulla rete locale. È garantito che tutti i nuovi file non perderanno i permessi desiderati, indipendentemente da chi li ha creati.

Come impostare SGID?

Puoi impostare il bit SGID in modalità simbolica in questo modo:

chmod g+s directory_name

Ecco un esempio:

linuxhandbook:~$ ls -ld folder/
drwxrwxr-x 2 linuxhandbook linuxhandbook 4096 Apr 12 19:32 folder/
linuxhandbook:~$ chmod g+s folder
linuxhandbook:~$ ls -ld folder/
drwxrwsr-x 2 linuxhandbook linuxhandbook 4096 Apr 12 19:32 folder/

Puoi anche usare il modo numerico. Devi solo aggiungere una quarta cifra alle normali autorizzazioni. Il numero ottale utilizzato per SGID è sempre 2.

linuxhandbook:~$ ls -ld folder2/
drwxrwxr-x 2 linuxhandbook linuxhandbook 4096 Apr 12 19:33 folder2/
linuxhandbook:~$ chmod 2775 folder2
linuxhandbook:~$ ls -ld folder2/
drwxrwsr-x 2 linuxhandbook linuxhandbook 4096 Apr 12 19:33 folder2/

Come rimuovere il bit SGID?

Usa semplicemente -s invece di +s in questo modo:

chmod g-s folder

Rimuovere SGID equivale a rimuovere SGID. Utilizza lo 0 aggiuntivo prima delle autorizzazioni che desideri impostare:

chmod 0755 folder

Come trovare file con SGID impostato in Linux

Per trovare tutti i file con bit SGID impostato, utilizzare questo comando:

find . -perm /2000

Cos'è un bit appiccicoso?

Il bit appiccicoso funziona sulla directory. Con sticky bit impostato su una directory, tutti i file nella directory possono essere eliminati o rinominati solo dai proprietari dei file o dalla radice.

Questo è in genere usato nella directory /tmp che funziona come cestino dei file temporanei.

linuxhandbook:~$ ls -ld /tmp
drwxrwxrwt 1 root root 512 Apr 12 13:24 /tmp

Come puoi vedere, la cartella /tmp, ha la lettera t nello stesso posto in cui ci aspettiamo di vedere x o per altri permessi. Ciò significa che un utente (tranne root) non può eliminare i file temporanei creati da altri utenti nella directory /tmp.

Come si imposta lo sticky bit?

Come sempre, puoi usare sia la modalità simbolica che quella numerica per impostare lo sticky bit in Linux.

chmod +t my_dir

Ecco un esempio:

linuxhandbook:~$ ls -ld my_dir/
drwxrwxr-x 2 linuxhandbook linuxhandbook 4096 Apr 12 19:54 my_dir/
linuxhandbook:~$ chmod +t my_dir/
linuxhandbook:~$ ls -ld my_dir/
drwxrwxr-t 2 linuxhandbook linuxhandbook 4096 Apr 12 19:54 my_dir/

Il modo numerico consiste nell'aggiungere una quarta cifra alle normali autorizzazioni. Il numero ottale utilizzato per il bit permanente è sempre 1.

linuxhandbook:~$ ls -ld my_dir/
drwxrwxr-x 2 linuxhandbook linuxhandbook 4096 Apr 12 19:55 my_dir/
linuxhandbook:~$ chmod 1775 tmp2/
linuxhandbook:~$ ls -ld tmp2/
drwxrwxr-t 2 linuxhandbook linuxhandbook 4096 Apr 12 19:55 my_dir/

Come rimuovere il bit appiccicoso:

Puoi usare la modalità simbolica:

chmod -t my_dir

Oppure la modalità numerica con 0 prima dei permessi regolari:

chmod 0775 tmp2

Come trovare file con sticky bit impostato in Linux

Questo comando restituirà tutti i file/le directory con il bit permanente impostato:

linuxhandbook:~$ find . -perm /1000

Se la directory non ha il permesso di esecuzione impostato per tutti, l'impostazione di un bit permanente comporterà la visualizzazione di T invece di t. Un'indicazione che le cose non sono del tutto corrette con il bit appiccicoso.

Conclusione

Metto qui questa immagine per ricordare ciò che hai appena appreso:

Questa flessibilità per gestire cartelle, file e tutti i loro permessi è così importante nel lavoro quotidiano di un amministratore di sistema. Potresti vedere che tutte queste autorizzazioni speciali non sono così difficili da capire, ma devono essere utilizzate con la massima cautela.

Spero che questo articolo ti abbia dato una buona comprensione di SUID, GUID e Sticky Bit in Linux. Se hai domande o suggerimenti, lascia un commento qui sotto.


Linux
  1. Come trovare file con autorizzazioni SUID e SGID in Linux

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

  3. Permessi Linux:un'introduzione a chmod

  4. Autorizzazioni Linux:SUID, SGID e sticky bit

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

Comprendere i permessi dei file Linux

Comando Chmod in Linux (autorizzazioni file)

Permessi e proprietà dei file Linux spiegati con esempi

Domande per interviste su Linux – Permessi speciali (SUID, SGID e sticky bit)

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

Domande per l'intervista su Linux:autorizzazioni di base per file e directory