Configurare SUDO per gestire le attività degli amministratori
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
Sudo è un programma progettato per far sì che gli amministratori di sistema permettano ad alcuni utenti di eseguire certi comandi come root (o altro utente). La filosofia di base è quella di dare meno privilegi possibile, ma permettere ancora di compiere il proprio lavoro di amministrazione. Sudo è anche un modo efficace per registrare l'attività di root: chi ha usato sudo
, con che comando e quando.
Su Debian, a partire da Squeeze sudo è installato e abilitato (se è stato scelto il metapacchetto Desktop durante l'installazione). Tuttavia, è necessario iscrivere gli utenti al gruppo sudo
se se si vuole permetter loro di utilizzare questo strumento.
Perché sudo
Usare sudo è meglio (più sicuro) che aprire una sessione come root, in particolare per i seguenti motivi:
- Non c'è bisogno di password di root (sudo richiede la password dell'utente corrente).
- Per impostazione predefinita i comandi vengono eseguiti come utente corrente (cioè non privilegiato), permettendo di evitare errori. Solo i comandi preceduti da sudo vengono eseguiti come root.
- Verifica/registrazione: quando un comando è eseguito con sudo il nome dell'utente e il comando sono registrati.
Per le ragioni esposte, il passaggio a root con sudo -i
(o sudo su
) è generalmente sconsigliato perché annulla le caratteristiche di cui sopra. Nel seguito della guida vedremo come disabilitare questa possibilità.
(Fonte: Debian Wiki)
Installazione
Per installare sudo su Debian è sufficiente utilizzare apt:
# apt-get install sudo
Configurazione
Il file di configurazione di sudo (/etc/sudoers
) è già preconfigurato per permettere un utente di eseguire ogni comando come amministratore, se appartiene al gruppo sudo
.
Per aggiungere un utente, per esempio pippo a questo gruppo:
# adduser pippo sudo
È necessario un logout e un nuovo login per risultare iscritti al gruppo.
Eventualmente, per modificare il file di configurazione, è consigliato usare il comando visudo
, che effettua anche un controllo sulla sintassi utilizzata.
Disabilitare root
Se si intende utilizzare soltanto sudo
per tutti i comandi, si consiglia di disabilitare l'utente root, così da disporre di un unico modo per diventare amministratori. Per disabilitare l'utente root digitare il seguente comando:
$ sudo passwd --lock root
Ora è possibile ottenere i privilegi di amministratore soltanto utilizzando sudo
, scrivendolo prima del comando da eseguire come amministratore.
Per riattivare root, permettendone sia il login che l'utilizzo di su
, dare invece il seguente comando:
$ sudo passwd --unlock root
Esempio di configurazione
Un esempio di configurazione può essere questo:
# visudo
# /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset # Configurazione di default per root # L'utente root ha i permessi su ogni comando root ALL=(ALL) ALL # Definisco un alias contenente una lista # di utenti amministratori del server User_Alias ADMINS = utente1, utente2, utente3 User_Alias SUPERUSERS = utente4, utente5 # Definisco eventuali alias per gli utenti # Definisco degli alias per i comandi di sistema Cmnd_Alias SHUTDOWN = /sbin/shutdown, /sbin/reboot, /sbin/halt Cmnd_Alias PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude # Definisco degli alias per i comandi che voglio impedire Cmnd_Alias NSHELLS = /bin/sh,/bin/bash Cmnd_Alias NSU = /bin/su Cmnd_Alias NVISUDO = /usr/sbin/visudo # Definisco eventuali privilegi degli utenti # Gli utenti del gruppo ADMINS possono gestire i pacchetti deb e riavviare # il server ADMINS ALL = PKGMGMT, SHUTDOWN # Gli utenti del gruppo SUPERUSERS possono fare tutto e impersonare qualsiasi # utente, tranne eseguire una shell di root, usare l'hack "sudo su" e # modificare la configurazione di sudo SUPERUSERS ALL = ALL, !NSHELLS, !NSU, !NVISUDO
ATTENZIONE Le restrizioni operate con ! non sono MAI realmente efficaci contro malintenzionati se si permette l'uso di ALL, vista la difficoltà di immaginare a priori tutti i comandi possibilit. Al limite comunicano che i SUPERUSERS non dovrebbero eseguire tali comandi o equivalenti con lo stesso effetto. Infatti le restrizioni sono facilmente aggirabili modificando direttamente L'unico modo per restringere le attività che un utente può eseguire come amministratore è limitarlo a una lista predeterminata di eseguibili, valutando singolarmente che non siano sfruttabili anche per altre azioni, come per esempio eseguire una shell o alterare il sistema in modo arbitrario. |
Esempio di sessione sudo
Una tipica sessione di sudo si presenta così:
utente1@server $ sudo comando Ci auguriamo tu abbia ricevuto la notifica dall'amministratore locale di sistema. Che si riduce solitamente a queste tre cose: #1) Rispetta la privacy altrui. #2) Pensa prima di digitare. #3) Da grandi poteri derivano grandi responsabilità. [sudo] password for utente1:
Nel caso si ricevesse la risposta:
Spiacente, all'utente utente1 non è consentito eseguire '/usr/bin/comando' come root su localhost
significa che sono stati impostati in maniera incorretta i privilegi sudo dell'utente.
File di log
Il comando sudo logga tutte le sue attività nel file /var/log/auth.log
Guida scritta da: Ferdybassi 12:42, 6 nov 2010 (CET) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |