Bit setuid, setgid e appiccicoso spiegato

Bit setuid, setgid e appiccicoso spiegato
Linux ha 3 tipi di accesso a file e directory: autorizzazioni di lettura, scrittura e esecuzione.

La lettura dell'autorizzazione concede agli utenti l'accesso ai file di lettura durante la scrittura delle autorizzazioni consente agli utenti di modificare o rimuovere i file, le autorizzazioni di esecuzione consentono loro di eseguire file.

Queste autorizzazioni possono essere applicate con differenze per il proprietario del file, utenti appartenenti al gruppo del file e tutti gli utenti (non il proprietario né gli utenti del gruppo).

Il bit setuid, setgid e appiccicoso consentono di implementare ulteriori restrizioni o privilegi senza modificare la tabella delle autorizzazioni.

Le autorizzazioni di Linux regolari sono state profondamente spiegate nelle autorizzazioni di Linux, una lettura consigliata prima di continuare con questo tutorial. L'attuale tutorial si concentra su flags setuid, setgid e appiccicoso per "ereditare" le autorizzazioni del proprietario del file o del gruppo agli utenti con accesso limitato e impedire agli utenti non privilegiati di rimuovere i file che non possiedono.

Comprensione del bit setuid:

La seguente screenshot mostra il contenuto della directory LinuxhintSetUid e le autorizzazioni dei file:

Come puoi vedere, tutti i file appartengono all'utente e al gruppo Linuxhint; il file Tutorial.TXT ha le autorizzazioni di lettura e scrittura per il proprietario, le autorizzazioni di lettura per gli utenti dello stesso gruppo e nessuna autorizzazione per altri utenti.

Se un utente diverso dal proprietario del file, che non appartiene al gruppo, cerca di leggere il file, fallirà a causa della mancanza di autorizzazioni per tutti gli utenti o altri utenti.

La seguente screenshot mostra l'utente torvalds ha cercato senza successo di accedere al Tutorial.TXT file.

Supponiamo ora l'utente Linuxhint vuole mantenere il tutorial.txt limitato consentendo agli utenti di leggerlo solo attraverso un'applicazione specifica. Questo può essere ottenuto usando il flag setuid.

In altre parole, l'utente torvalds non sarà in grado di leggere il file Tutorial.TXT. Tuttavia, eseguirà il lettore-Di proprietà dell'utente Linuxhint, ereditando le sue autorizzazioni durante il processo di esecuzione. Questo è possibile se il proprietario aggiunge il setuid bit alla tabella di autorizzazione del file, istruendo il file a essere sempre elaborato come dal proprietario e con i privilegi del proprietario anche se eseguito da un altro utente come torvalds.

NOTA: È possibile utilizzare il codice C di seguito per riprodurre i seguenti esempi. Compilare la corsa codice CC.C -o lettore

Codice dell'applicazione del lettore:

#includere
#include // per exit ()
int main ()
Char C [1000];
File *fptr;
if ((fptr = fopen ("tutorial.txt "," r ")) == null)
printf ("Errore! Il file non può essere aperto.");
// Programma esce se il puntatore del file restituisce null.
uscita (1);

sonno (5);
// legge il testo fino a quando non si incontra newline
fscanf (fptr, "%[^\ n]", c);
printf ("dati dal file: \ n%s", c);
fclose (fptr);
restituzione 0;

Prima di procedere, vediamo cosa succede se l'utente torva, chi ha autorizzazioni per eseguire l'applicazione lettore, esegue il lettore Prima di LinuxHint applica il flag setuid.

Come puoi vedere, Torvalds è riuscito a eseguire il lettore, un programma C progettato per leggere il tutorial.txt con la seguente tabella delle autorizzazioni, ma il lettore non gli ha concesso l'accesso a Tutorial.TXT Perché torvalds non ha autorizzazioni per leggerlo.

Lettore La tabella delle autorizzazioni è mostrata di seguito:

-RWXR-XR-X 1 Linuxhint LinuxHint Reader

Ora vediamo cosa succede quando Linuxhint Aggiunge il flag setuid al file lettore Tabella delle autorizzazioni in esecuzione:

lettore di chmod u+s

Se corri ls -l , Noterai la tabella delle autorizzazioni cambiata e il nome del programma appare in rosso, avvisandoti di possibili rischi. La nuova tabella delle autorizzazioni sembra questo:

-RWSR-XR-X

Il nuovo S Ho evidenziato in blu mostra che il file ha il flag setuid; Ogni volta che il file viene eseguito, il processo apparterrà al proprietario del file indipendentemente da chi esegue il programma. Poiché il proprietario eseguirà il file prima del sistema, l'esecuzione erediterà le autorizzazioni del proprietario. Ecco perché ora, dopo Linuxhint Aggiunto il flag setuid, l'utente torvalds Deve essere in grado di leggere il tutorial.txt attraverso il lettore.

NOTA: Torvalds può eseguire il lettore Perché tutti gli utenti hanno diritti di esecuzione; Se Linuxhint Rimuove le autorizzazioni di esecuzione per tutti gli utenti, torvalds non sarà in grado di eseguirlo.

IL setuid Il flag definisce il file come dal proprietario e l'utente che lo esegue erediterà le autorizzazioni del proprietario, ma Setuid non definisce chi può eseguire il file.

Come puoi vedere, Torvalds è riuscito a leggere “Dati dal file:

Non dovresti essere in grado di leggere questo ".

Se mentre Torvalds esegue lo script, eseguo il seguente comando PS, vedrai una differenza tra l'utente reale (Ruser) e l'utente effettivo (utente) del processo 4332 (lettore).

PS -ao pid, uid, ruser, utente, rgroup, egroup, comando

Lo screenshot sopra mostra nonostante l'utente reale in esecuzione lettore è torvalds o un altro utente, il file viene sempre elaborato come da Linuxhint, con le sue autorizzazioni, ed è per questo che Torvalds può vedere il file solo attraverso l'applicazione.

Il flag setuid può essere rimosso eseguendo:

chmod u-s

Comprensione del bit setGid:

SetGID è simile a setuid, ma invece di modificare l'utente che elabora il file, sostituisce il gruppo effettivo per il filegroup, concedendo l'accesso in base alle autorizzazioni del gruppo.

Se il bit setGID viene applicato a una directory, tutti i file creati all'interno della directory appartengono al gruppo della directory.

La seguente screenshot mostra che Torvalds non ha il permesso di leggere il tutorial.txt, solo il proprietario e il gruppo possono leggere il file. Anche con a lettore, Torvalds non può leggere il file perché non ha autorizzazioni e non è stato aggiunto nessun bit setuid.

Vediamo cosa succede dopo che LinuxHint aggiunge setGID:

lettore di chmod g+s


-RWXR-SR-X: Come puoi vedere nella tabella delle autorizzazioni, ora la S è sulla colonna del gruppo, il che significa che quando il programma viene eseguito, verrà sempre eseguito con i propri privilegi di gruppo.

Quindi vediamo cosa succede quando Torvalds cerca di accedere al tutorial.txt di nuovo usando il lettore:

Torvalds è riuscito a leggere il tutorial.TXT; Vediamo cosa mostra il comando PS nel processo del lettore:

PS -ao pid, uid, ruser, utente, rgroup, egroup, comando

Come puoi vedere nel processo 6713, l'utente che esegue il file è Torvalds, ma il gruppo efficace è Linuxhint, il gruppo del file; Ecco perché Torvalds potrebbe accedere al tutorial.txt con le autorizzazioni di gruppo del lettore.

Il bit setgid può essere rimosso eseguendo:

chmod g-s

Comprendere il bit appiccicoso:

Un altro bit di autorizzazione è il bit appiccicoso, che, se definito, impedisce agli utenti non privilegiati di rimuovere il contenuto. Se viene applicato il bit appiccicoso, solo il proprietario o il root possono rimuovere i file, ma non tutti gli utenti, anche se hanno autorizzazioni di scrittura.

L'esempio seguente mostra l'utente LinuxHint aggiunge il bit appiccicoso alla directory corrente:

chmod +t .

drwxr-xr-t: Come puoi vedere ora, c'è un T Alla fine della tabella delle autorizzazioni del LinuxhintSetUid directory. Ciò significa che gli utenti non possono rimuovere i file che non possiedono all'interno della directory, anche se hanno autorizzazioni di scrittura.

La seguente screenshot mostra le autorizzazioni per un file chiamato "qualcosa"Sotto la directory LinuxhintSetUid Con il bit appiccicoso speciale:

Come puoi vedere, nonostante abbia le autorizzazioni di scrittura sia nella directory che sul file, Torvalds non può rimuovere il file qualcosa:

Spero che tu abbia trovato questo tutorial su setuid, setgid e appiccicoso bit utile. Continua a seguire Linuxhint per ulteriori suggerimenti e tutorial Linux.