giovedì 29 dicembre 2011

sudo: root o utente?

Ormai quasi tutti si sono abituati all'uso di sudo, un software che consente di fornire credenziali elevate (di amministratore) ad utenti normali. L'idea è semplice: l'amministratore di sistema fornisce una lista di utenti non amministratori che possono richiedere privilegi maggiori (specificando anche cosa possono fare). Quando uno di questi utenti deve eseguire un programma con privilegi maggiori invoca sudo che gli consente di innalzare i propri permessi.
Se ben usato sudo aumenta anche la protezione del sistema: è possibile con sudo utilizzare un account root senza nemmeno averlo abilitato, e quindi lasciando un account noto (e quindi attaccato) inaccessibile.
Molti sistemi Linux in default installano sudo abilitando per l'utente che ha effettuato la prima installazione. Un caso classico sono gli *buntu in versione sia server che desktop. L'utente quindi con una sola password puo' amministratore il computer.
PCBSD fa una scelta di default differente: abilita sudo per l'utente che effettua l'installazione ma richiede che la password fornita non sia quella dell'utente ma quella di root stesso. 
Qual'è la motivazione di questa scelta, a prima vista inutile? Se durante l'installazione l'utente principale viene abilitato a sudo allora questo avrà la possibilità di accedere direttamente come amministratore, cosa che a volte non è fattibile. Usando invece la password di root solo gli utenti che conoscono tale password saranno abili e abilitati a eseguire comandi privilegiati. Certo, potrebbero farlo come root stesso, ma il sistema puo' continuare a tenere l'account di root disabilitato permettendo un innalzamento dei privilegi dell'utente normale.
Difficile dire quale scelta sia la migliore, probabilmente quella di PCBSD, anche se richiede qualche accorgimento in piu'. In entrambi i casi il comportamento puo' essere modificato dall'amministratore in qualunque momento agendo sul file /etc/sudoer che contiene delle righe simili a:

## Uncomment to allow any user to run sudo if they know the password
## of the user they are running the command as (root by default).
Defaults targetpw  # Ask for the password of the target user


E come riporta la pagina man:

targetpw        If set, sudo will prompt for the password of the user specified
                       by the -u option (defaults to root) instead of the password of
                       the invoking user.  Note that this precludes the use of a uid not
                       listed in the passwd database as an argument to the -u option.
                       This flag is off by default.

Nessun commento: