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.
Utenti e root, permessi, attributi, limiti: le proprietà di sicurezza dei sistemi Unix.
Re: disinstallazuione di un programma
Sei nel posto sbagliato, prova a vedere sulla guida ufficiale di ubuntu, c'e' un capitoletto apposito: http://help.ubuntu-it.org/7.04/ubuntu/add-applications/it/index.html
Rispondidisinstallazione di un programma
sono alle prime armi con kubuntu e devo disinstallare un programma (aMule).. Come si fa?? AIUTO!!!