Come configurare 'Sudo'!

Su ziobudda.net è comparso recentemente un link ad un articolo che prometteva di insegnarci a configurare Sudo e ci spiegava che Sudo è un tool universale applicabile su ogni distro -cliccando sul link abbiamo scoperto però che l'articolo era riservato ai soli iscritti a quel portale e non avendo tempo e voglia di procedere all'ennesima iscrizione abbiamo riesumato un vecchio-ottimo howto reperito in rete apportandovi gli opportuni aggiornamenti
segue..............

Nella maggior parte dei sistemi GNU/Linux, l'amministratore del computer non usa l'utente root (per motivi di sicurezza) ma usa un utente "normale" per svolgere il lavoro quotidiano. Quando ha la necessità di svolgere mansioni di amministrazione apre un terminale e avvia una sessione come utente root, oppure se si trova già in un terminale come utente normale usa il comando su per diventare utente root.
Ubuntu usa un sistema diverso per compiere operazioni amministrative, basato sull'utilizzo del comando sudo.Ma naturalmente si può usare su qualsiasi distribuzione Linux ed infatti noi lo implementeremo su Mandriva 2007.1-spring.

Il programma sudo (superuser do) consente di eseguire un comando come se si fosse un altro utente. Effettua una specie di sostituzione, previa autorizzazione, tra l'utente attuale (colui che esegue il comando sudo) e l'utente target (colui che esegue l'effettivo comando). Mentre con su si cambia utente fino al termine della sessione del terminale, sudo assegna i privilegi dell'utente target al solo processo (e ai suoi processi figli) che viene con esso avviato.
Per eseguire dei comandi con privilegi d'amministrazione utilizzando sudo, bisogna digitare sudo e successivamente il comando che si desidera eseguire come utente root .
una volta installato il pkg Il suo file di configurazione è /etc/sudoers.
E' preferibile utilizzare visudo per modificare questo file perchè usciti dall'editor verrà avviata una procedura di checking della sintassi. Una volta eseguito questo comando verrà richiamato l'editor specificato nella variabile EDITOR o (se non è impostato nessun valore in questa) quello di default cioè vi. Usciti dall'editor verrà avviata una procedura di checking della sintassi, e se il file non è stato modificato correttamente verrà visualizzato un errore e verrà posta la domanda
syntax error, line XX <<<
What now?

Consiglio di scrivere "help" e leggere le varie opzioni messe a disposizione. In linea di massima dovrete premere "e" e rieditare il file. All'interno di questo file si dovranno specificare prima gli alias (meglio: insiemi) di computers da autorizzare all'esecuzione dei programmi, poi gliinsiemi di utenti da autorizzare, poi gli insiemi di programmi da utilizzare, ed infine si associano questi insiemi ad ogni singolo utente (o gruppo diutenti). Vediamo il seguente file di esempio ed analizziamolo riga per riga:
# sudoers file.
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for the details on how to write a sudoers file.
#
# Host alias specification
# Permetterà di utilizzare l'host Mandriva chiamandolo
#LO nelle righe di definizione dei comandi dei singoli
#utenti.
Host_Alias LO=Mandriva
# User alias specification
# Permette di reggruppare sotto uno stesso nome un
#insieme di utenti
User_Alias MIOGRUPPO=nando,emma,franco
# Cmnd alias specification
# Permette di raggruppare la lista di comandi halt
#e shutdown all'interno dell'insieme SHUTDOWN e
#i comandi rm e cat nell'insieme MISC
Cmnd_Alias SHUTDOWN=/sbin/halt,/sbin/shutdown
Cmnd_Alias MISC=/bin/rm,/bin/cat

# User privilege specification
# Queste sono le righe che associano i comandi
#ai singoli utenti: Ovviamente root può tutto!
root ALL=(ALL) ALL
# anche il gruppo wheel se vogliamo - decommentando
# lo statement sottostante può tutto ed è questa
#la via che useremo associando kio al gruppo wheel
%wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# L'utente stefano può utilizzare i comandi dell'insieme
#SHUTDOWN dall'host LO senza dover inserire alcuna
#password
stefano LO=SHUTDOWN,NOPASSWD: ALL
# L'utente pasquale può utilizzare i comandi
#dell'insieme SHUTDOWN dall'host LO,
#ma deve inserire la propria password quando sudo
#la richiederà.
pasquale LO=SHUTDOWN
# Gli utenti del gruppo MIOGRUPPO possono
#utilizzare i comandi dell'insieme MISC ma
#NON quelli dell'insieme SHUTDOWN
MIOGRUPPO LO=MISC, !SHUTDOWN
Queste sono le basi per capire come impostare delle politiche di utilizzo di particolari programmi che solo il root può eseguire. E' altamente consigliata la lettura della pagina di man (5) di sudo. Il file ora mostrato permette di far eseguire agli utenti stefano e pasquale il programma shutdown senza doverlo "suidare". L'utente stefano per spegnere la macchina potrà scrivere:
$ sudo shutdown -h now
E verrà avviata la procedura di shutdown.
L'utente pasquale per spegnere la macchina potrà scrivere:
$ sudo shutdown -h now
Ma gli verrà richiesta la sua password prima di eseguire questo programma. Gli utenti nando, emma e franco potranno eseguire rm e cat, ma non potranno spegnere la macchina, ed in più gli verrà richiesta la password prima di eseguire questi comandi.
l'utente kio associato al gruppo wheel può assumere gli stessi privilegi di root.
Se volessi sostituire vi con nano come editor di default di visudo come procedo ?
semplice modifico o creo se serve il file .bash_profile di root con questo contenuto:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
EDITOR=/usr/bin/nano
export EDITOR

Cosa resta da fare? Eseguire lo script così­ modificato, altrimenti le modifiche fatte avranno effetto soltanto al prossimo login
[root@Mandriva root]# source .bash_profile

howto originale di Stefano Falsetto rivisto by kio