Come Setuid Consente agli Utenti di Eseguire File con Privilegi Elevati

Quando esegui un file eseguibile in Linux, di solito viene eseguito con l’ID utente e l’ID gruppo correnti. Tuttavia, ci sono momenti in cui è necessario eseguire quel file come un altro utente (come root). Invece di cambiare il tuo account utente, puoi utilizzare setuid per eseguire l’eseguibile come proprietario del file e non come utente corrente. Qui spiegheremo come funziona setuid e come consente agli utenti di eseguire eseguibili/binari con privilegi elevati.
Come Funziona Setuid?
Setuid sta per SET User ID on execution. Supponiamo di avere un eseguibile chiamato “identity” creato dall’utente root. Quando lo esegui, verrà eseguito con il tuo ID utente, ID gruppo e privilegi utente. Se il bit setuid è impostato sul file “identity”, quando lo esegui, verrà eseguito come utente root e con i suoi privilegi utente.
Come illustrazione, possiamo controllare prima la proprietà del file “identity” e verificare che sia di proprietà dell’utente root. La stringa di permessi mostra anche i bit eseguibili (x) impostati per l’utente, il gruppo e gli altri.
L’utente “john1” esegue il file “identity”, che diventa un processo all’esecuzione. Come mostrato nell’elenco dei processi, il processo viene creato ed eseguito sotto il nome utente e l’ID utente “john1”.

Successivamente, come utente root, impostiamo il bit setuid del file “identity”:
chmod u+s /usr/bin/identity“u” denota che il bit setuid (+s) deve essere impostato solo per l’utente.
Per il proprietario, nella parte eseguibile della stringa di permessi possiamo vedere che “x” è stato sostituito con “s.” Ogni volta che incontri “s” per un eseguibile, significa che il bit setuid è stato impostato su di esso.
La variante numerica del comando chmod può essere utilizzata anche come mostrato di seguito.
chmod4755/usr/bin/identityL’aggiunta di 4 nella stringa di permessi numerici denota l’inclusione del bit setuid.
Di seguito è riportato ciò che accade quando “john1” esegue nuovamente il file “identity”. Guardando l’elenco dei processi in esecuzione, ora possiamo vedere che il processo è creato ed eseguito dall’utente “root” invece di “john1.”

Uso Importante del Bit Setuid
La maggior parte delle volte sentirai esperti dire che non dovresti eseguire applicazioni come utente root. Tuttavia, ci sono casi in cui alcuni file devono essere eseguiti con permessi di root. Ad esempio, l’utilità passwd che viene installata di default sui sistemi Linux ha il bit setuid impostato su di essa.
Il motivo è semplice: le informazioni sulla password per un utente sono memorizzate nei file “/etc/passwd” e “/etc/shadow”, che possono essere modificati solo da “root.” Quando “john1” tenta di cambiare la password per se stesso, avrà bisogno di avere il permesso di modificare le informazioni nei due file sopra menzionati. Avere il bit setuid impostato su passwd consente a “john1” di avere temporaneamente permessi di root per cambiare la password dell’utente e anche aggiornare le informazioni nei due file.
Rischio di Sicurezza di Setuid
Se non fai attenzione, un attaccante può sfruttare i binari setuid per controllare il tuo sistema. Gli utenti normalmente non dovrebbero avere programmi setuid installati, specialmente setuid per utenti diversi da se stessi. Soprattutto, non dovresti avere alcun binario abilitato setuid per l’utente root nella tua cartella Home. Questi sono solitamente Trojan Horse o malware.
Conclusione
Setuid può essere impostato solo su file eseguibili. Allo stesso modo, anche il bit setgid può essere impostato, il che consente a tutti i membri di un gruppo di eseguire un eseguibile con permessi di proprietario.
Nota che i bit setuid e setgid sono sensibili alla sicurezza e devono essere utilizzati solo da amministratori di sistema qualificati.
Leggi il prossimo:
- Come Utilizzare il Bit Sticky per Gestire File nelle Directory Condivise in Linux
- Come Eseguire Controlli Ortografici nel Terminale Linux
- Utilizzando i Comandi find, locate, which e whereis per Cercare File in Linux