Introduzione a sudo

Sudo (superuser do) è un utility che permette di eseguire comandi con i permessi di un altro utente, tipicamente utilizzato per eseguire comandi che solamente root potrebbe lanciare.

sudo è un ottima soluzione per gestire e controllare gli accessi e le azioni degli utenti, sia perchè permette di eseguire comandi che tipicamente un utente normale non potrebbe sia perchè offre la possibilità di loggare nei minimi dettagli qualsiasi azione.
Inoltre se si aggiunge il vantaggio di non dover utilizzare l'account di root per le normali operazioni di amministrazione come ad esempio riavvio di un servizio, assicura un certo vantaggio in ambito sicurezza oltre che limitare in modo ulteriore la conoscenza della password di root.
Le principali feature di questa utility sono:
- Limitare o permettere  la possibilità di eseguire un certo comando ad un gruppo o ad un singolo utente
- Logging, per ogni comando eseguito.
- Ticketing system, ovvero è possibile configurare sudo in modo tale che ogni volta che viene invocato, l'utente possa inserire una sola volta la password anche in caso di una sequenza di comandi. Ovviamente dopo un certo timeout configurabile verrà richiesta nuovamente la password.
- La struttura del file di configurazione permette una configurazione centralizzata, un file di configurazione valido per più host.

Installazione
Il download dei sorgenti è possibile dall'home page ufficiale: http://www.sudo.ws/dist/, mentre per il download dei rpm è possibile appoggiarsi a http://www.rpmfind.net
[root@SATURNO root]# wget http://www.sudo.ws/dist/sudo-1.6.7p3.tar.gz
--14:53:03--  http://www.sudo.ws/dist/sudo-1.6.7p3.tar.gz
           => `sudo-1.6.7p3.tar.gz'
[...]
[root@SATURNO root]# tar zxvf sudo-1.6.7p3.tar.gz
sudo-1.6.7p3/
sudo-1.6.7p3/alloc.c
sudo-1.6.7p3/alloca.c
sudo-1.6.7p3/check.c
sudo-1.6.7p3/def_data.c
sudo-1.6.7p3/defaults.c
[...]

Nel caso in cui si vogliano utilizzare le impostazioni di default occorre semplicemente lanciare lo script configure seguito da make e make install, per personalizzare l'installazione occorre specificare le singole opzioni con lo script configure, ecco alcuni esempi di interessanti opzioni:
--disable-root-sudo Non permette a root di eseguire sudo
--disable-path-info Printa a video 'command not allowed' al posto di 'command not found'
--without-passwd Disabilita l'utenticazione tramite passwd o shadow
--with-insults Insulta l'utente che sbaglia la password

Esempio di compilazione:
Lancio dello script configure per la creazione del Makefile
[root@SATURNO sudo-1.6.7p3]# ./configure  --prefix=/usr --with-pam --with-insults --with-all-insults
[...]
checking for log file location... /var/log/sudo.log
checking for timestamp file location... /var/run/sudo
configure: creating ./config.status
config.status: creating Makefile
config.status: creating sudo.man
config.status: creating visudo.man
config.status: creating sudoers.man
config.status: creating config.h
config.status: creating pathnames.h
configure: You will need to customize sample.pam and install it as /etc/pam.d/sudo
Creazione del file di configurazione per PAM, il file di esempio all'interno dei sorgenti (sample.pam) è utilizzabile solo in due due casi, quello attivo di default (non commentato) permette di autenticare l'utente tramite /etc/passwd , il secondo non attivo (commentato) prevede l'uso di un Master domain controller per l'autenticazione utente
[root@SATURNO sudo-1.6.7p3]# cp sample.pam  /etc/pam.d/sudo
[root@SATURNO sudo-1.6.7p3]# cat /etc/pam.d/sudo
#%PAM-1.0
[...]
#auth      required    /lib/security/pam_smb_auth.so
auth       required    /lib/security/pam_pwdb.so shadow nullok
Compilazione e installazione
[root@SATURNO sudo-1.6.7p3]# make
gcc -c -I. -I.  -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440  check.c
gcc -c -I. -I.  -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440  env.c
[...]
[root@SATURNO sudo-1.6.7p3]# make install
/bin/sh ./mkinstalldirs /usr/bin \
    /usr/sbin /etc \
    /usr/man/man8 /usr/man/man5
mkdir /usr/man
[...]


Configurazione
Il file di configurazione di sudo è /etc/sudoers modificabile tramite l'utility visudo, che risulta essere un editor con gli stessi comandi di vi con il plus del check della sintassi del file.
La sintassi del file di configurazione prevede due parti:
- aliases (opzioni e variabili di base):
Creazione di gruppi di utenti
User_Alias     ADMINS = neo, led
User_Alias     OPERATORS = pippo, nobody
Creazione di gruppi di comandi
Cmnd_Alias    SHUTDOWN = /usr/sbin/shutdown, /usr/bin/halt,  /usr/bin/reboot
Creazione di gruppi di host
Host_Alias     SERVERS = ns, www, mail
Host_Alias     WORKSTATION = saturno, dido, trinity


- user specifications (opzioni e variabili specifici dell'utente, chi ,cosa e come  può eseguire):
L'utente root può eseguire qualunque comando, in qualunque host come se fosse qualunque utente
root           ALL = (ALL) ALL
Tutti gli utenti appartenenti al gruppo ADMINS possono lanciare qualsiasi comando senza inserire una password
ADMINS     ALL = NOPASSWD: ALL
Tutti gli utenti appartenenti al gruppo OPERATOR possono lanciare i comandi relativi al gruppo SHUTDOWN
OPERATORS  WORKSTAION = SHUTDOWN


Ulteriori esempi si possono trovare all'interno dei sorgenti sample.sudoers o al seguente indirizzo: http://www.courtesan.com/sudo/man/sudoers.html#examples.

Privacy Policy