Sudo, ma godo

Sudato

Molti, anche se non tutti, sanno che nei sistemi Unix esiste un utente che ha tutti i poteri immaginabili: può leggere e scrivere tutti file, lanciare tutti i programmi e chi più ne ha più ne metta. Si chiama superuser, il suo username è root e il suo UID è 0.

Perché “sudare”

Una volta per lanciare comandi come utente root c’erano due modi: a) loggarsi come utente root; b) usare il comando su per aprire una shell come root. In entrambi i modi era richiesto l’inserimento della password di root e una volta dentro si disponeva del “potere assoluto”. Quella situazione non era il massimo dal punto di vista della sicurezza: se l’amministratore del sistema avesse voluto delegare ad altri alcuni compiti amministrativi avrebbe dovuto comunicare a costoro la preziosa password di root e, a quel punto, sarebbe stato impossibile limitare il potere di quegli amministratori avventizi.
L’alternativa sarebbe stata abilitare il flag setuid nei permessi dei comandi e quindi affidarsi ad un complicato gioco di assegnazione a gruppi e gruppuscoli.

Per fortuna è stato inventato sudo (SuperUser DO), un sistema che permette a _ben specificati_ utenti ordinari di eseguire, con le credenziali di root, solo ed esclusivamente _ben specificati_ comandi. Il tutto senza dover conoscere la password di root. Così gli amministratori avventizi di cui sopra possono svolgere i loro compiti amministrativi senza accedere al “potere assoluto”.

Questo sistema è considerato talmente buono che molte distribuzioni Linux (come Ubuntu) e Mac OS X hanno addirittura disabilitato del tutto l’utente root: tutti i compiti amministrativi devono passare per sudo!

Quali utenti possono eseguire quali comandi va specificato nel file /etc/sudoers, ma non va editato direttamente: la procedura impone l’uso del comando visudo. La sintassi del file sudoers è consultabile, ovviamente, con man sudoers.

Come godere

Una cosa per alcuni (tra cui io) molto fastidiosa è che sudo vuole assicurarsi che chi lo lancia sia effettivamente l’utente autorizzato a farlo, e quindi richiede preventivamente di inserire la propria password (attenzione: non la password di root, ma la propria). Questa autenticazione ha luogo, per impostazione predefinita, almeno una volta ogni 15 minuti.

Per evitare questa, seppur lieve, scocciatura è sufficiente aggiungere la linea seguente al sudoers file:

gpz500 ALL=(ALL) NOPASSWD: ALL

(ovviamente gpz500 va sostituito con il proprio nome utente). In parole povere significa: l’utente gpz500, loggato su qualsiasi sistema (primo ALL) può assumere l’identità di chiunque (secondo ALL) senza dover inserire la password (NOPASSWD:) nell’eseguire qualsiasi comando (terzo ed ultimo ALL).

Con una linea così, gpz500 è quasi un clone dell’utente root: l’unica differenza è che deve anteporre sudo ad ogni comando che intende eseguire come root. Ma, capirete, se non mi fido io di gpz500, chi se ne deve fidare?
Ciononostante, anche questo piccolo filtro (il dover inserire sudo prima dei comandi che possono avere effetti distruttivi) consente di far mente locale su cosa si sta facendo e impedisce di eseguire come root in maniera indiscriminata tutti i comandi.

Alla prossima!

Advertisements

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...