Configurare SUDO per gestire le attività degli amministratori: differenze tra le versioni
(aggiunte avvertenze e istruzioni per ripristinare le configurazioni) |
|||
Riga 8: | Riga 8: | ||
=== Perché ''sudo'' === | === Perché ''sudo'' === | ||
Usare <code>sudo</code> è meglio (più sicuro) che aprire una sessione come [[root]], in particolare per i seguenti motivi: | Usare <code>sudo</code> in alcune circostanze è meglio (più sicuro) che aprire una sessione come [[root]], in particolare per i seguenti motivi: | ||
* Non c'è bisogno di password di root, ma sudo richiede la password dell'utente corrente. | * Non c'è bisogno di password di root, ma sudo richiede la password dell'utente corrente. È fondamentale nel caso si debba permettere a più persone di svolgere attività di amministrazione, senza bisogno di condividere la stessa password. | ||
* In una shell i comandi vengono eseguiti come utente corrente (cioè non privilegiato) e per impostazione predefinita non viene avviata una shell privilegiata, permettendo di evitare errori. Solo i comandi preceduti da sudo vengono eseguiti come [[root]]. | * In una shell i comandi vengono eseguiti come utente corrente (cioè non privilegiato) e per impostazione predefinita non viene avviata una shell privilegiata, 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. | * Verifica/registrazione: quando un comando è eseguito con sudo il nome dell'utente e il comando sono registrati. | ||
Per le ragioni esposte, | Per le ragioni esposte, utilizzare una [[shell]] privilegiata con <code>sudo -i</code> (<code>sudo -s</code>, <code>sudo sh</code>, <code>sudo su</code> ed equivalenti) è generalmente sconsigliato perché annulla le caratteristiche di cui sopra. Nel seguito della guida vedremo come disabilitare questa possibilità. | ||
Si noti che per un sistema con un singolo utente, che è il caso per la maggior parte degli utenti desktop, i benefici di ottenere [[privilegi di amministratore]] con <code>sudo</code> sono inesistenti rispetto all'uso di <code>su</code>, se si permette di eseguire una shell come [[root]]. Sarebbe invece necessario studiare il file di configurazione e personalizzarlo in modo opportuno, restringendone l'uso il più possibile, cercando il giusto compromesso tra sicurezza e comodità d'uso. | |||
Si noti che per un sistema con un singolo utente, che è il caso per la maggior parte degli utenti desktop, i benefici di ottenere [[privilegi di amministratore]] con <code>sudo</code> sono | |||
== Installazione == | == Installazione == | ||
Per installare <code>sudo</code>, se non è presente, su Debian | Per installare <code>sudo</code>, se non è presente, su Debian basta installare il [[pacchetto]] '''sudo'''. Per esempio con [[apt-get]] e [[privilegi di amministratore]] basta: | ||
<pre> | <pre> | ||
# apt-get install sudo | # apt-get install sudo | ||
Riga 29: | Riga 26: | ||
Il file di configurazione di <code>sudo</code> (<code>/etc/sudoers</code>) è già preconfigurato per permettere un utente di eseguire ogni comando come amministratore, se appartiene al gruppo <code>sudo</code>. | Il file di configurazione di <code>sudo</code> (<code>/etc/sudoers</code>) è già preconfigurato per permettere un utente di eseguire ogni comando come amministratore, se appartiene al gruppo <code>sudo</code>. | ||
Va | Ciò '''non''' significa che si debba aggiungere il proprio utente a tale gruppo, specialmente se l'account [[root]] è attivo. Va fatto soltanto se si vuole utilizzare <code>sudo</code> come sostituto per tutte le attività di amministrazione. | ||
Se è questo il caso, per aggiungere il proprio utente, per esempio ''pippo'', al gruppo ''sudo'' va eseguito: | |||
<pre> | <pre> | ||
# adduser pippo sudo | # adduser pippo sudo | ||
Riga 42: | Riga 41: | ||
Eventualmente, per modificare il file di configurazione, è consigliato l'uso del comando <code>visudo</code>, che effettua anche un controllo sulla sintassi utilizzata. | Eventualmente, per modificare il file di configurazione, è consigliato l'uso del comando <code>visudo</code>, che effettua anche un controllo sulla sintassi utilizzata. | ||
Per rimuoversi invece da tale gruppo, se per esempio il proprio utente si chiama ''pippo'', basta: | |||
<pre> | |||
# deluser pippo sudo | |||
</pre> | |||
Prima di questo comando si consiglia di ottenere i [[privilegi di amministratore]] con l'uso di <code>su</code>, per verificare che l'account [[root]] è attivo prima di rimuoversi dal gruppo. | |||
=== Disabilitare root === | === Disabilitare root === | ||
Se si intende utilizzare soltanto <code>sudo</code> 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 | Se si intende utilizzare soltanto <code>sudo</code> 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: | ||
<pre> | <pre> | ||
$ sudo passwd --lock root | $ sudo passwd --lock root | ||
Riga 50: | Riga 55: | ||
Ora è possibile ottenere i [[privilegi di amministratore]] soltanto utilizzando <code>sudo</code>, scrivendolo prima del comando da eseguire come amministratore. | Ora è possibile ottenere i [[privilegi di amministratore]] soltanto utilizzando <code>sudo</code>, scrivendolo prima del comando da eseguire come amministratore. | ||
Per riattivare [[root]], | Non sarà possibile né effettuare il login come utente ''root'', né utilizzare il comando <code>su</code>. | ||
Per riattivare [[root]], permettendo nuovamente sia il login che l'utilizzo di <code>su</code>, dare invece il seguente comando: | |||
<pre> | <pre> | ||
$ sudo passwd --unlock root | $ sudo passwd --unlock root | ||
Riga 137: | Riga 144: | ||
== File di log == | == File di log == | ||
Il comando <code>sudo</code> logga tutte le sue attività nel file <code>/var/log/auth.log</code> | Il comando <code>sudo</code> logga tutte le sue attività nel file <code>/var/log/auth.log</code> | ||
== Sitografia == | |||
* [http://wiki.debian.org/it/sudo Debian Wiki] | |||
{{Autori | {{Autori | ||
Riga 142: | Riga 152: | ||
| Verificata_da = | | Verificata_da = | ||
: [[Utente:Stemby|Stemby]] | : [[Utente:Stemby|Stemby]] | ||
: [[Utente:HAL 9000|HAL 9000]] | : [[Utente:HAL 9000|HAL 9000]] 13:22, 1 set 2014 (CEST) | ||
| Estesa_da = | | Estesa_da = | ||
: [[Utente:Stemby|Stemby]] | : [[Utente:Stemby|Stemby]] |
Versione delle 11:22, 1 set 2014
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 in particolare è quella di consentire i privilegi di amministratore a meno comandi 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), ma di default nessun utente può usarlo, a meno che in fase di installazione si sia disabilitato root.
Perché sudo
Usare sudo
in alcune circostanze è meglio (più sicuro) che aprire una sessione come root, in particolare per i seguenti motivi:
- Non c'è bisogno di password di root, ma sudo richiede la password dell'utente corrente. È fondamentale nel caso si debba permettere a più persone di svolgere attività di amministrazione, senza bisogno di condividere la stessa password.
- In una shell i comandi vengono eseguiti come utente corrente (cioè non privilegiato) e per impostazione predefinita non viene avviata una shell privilegiata, 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, utilizzare una shell privilegiata con sudo -i
(sudo -s
, sudo sh
, sudo su
ed equivalenti) è generalmente sconsigliato perché annulla le caratteristiche di cui sopra. Nel seguito della guida vedremo come disabilitare questa possibilità.
Si noti che per un sistema con un singolo utente, che è il caso per la maggior parte degli utenti desktop, i benefici di ottenere privilegi di amministratore con sudo
sono inesistenti rispetto all'uso di su
, se si permette di eseguire una shell come root. Sarebbe invece necessario studiare il file di configurazione e personalizzarlo in modo opportuno, restringendone l'uso il più possibile, cercando il giusto compromesso tra sicurezza e comodità d'uso.
Installazione
Per installare sudo
, se non è presente, su Debian basta installare il pacchetto sudo. Per esempio con apt-get e privilegi di amministratore basta:
# 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
.
Ciò non significa che si debba aggiungere il proprio utente a tale gruppo, specialmente se l'account root è attivo. Va fatto soltanto se si vuole utilizzare sudo
come sostituto per tutte le attività di amministrazione.
Se è questo il caso, per aggiungere il proprio utente, per esempio pippo, al gruppo sudo va eseguito:
# adduser pippo sudo
È necessario un logout e un nuovo login per risultare iscritti al gruppo.
Si può verificare di essere membri di sudo, digitando senza privilegi di amministratore:
$ groups
Eventualmente, per modificare il file di configurazione, è consigliato l'uso del comando visudo
, che effettua anche un controllo sulla sintassi utilizzata.
Per rimuoversi invece da tale gruppo, se per esempio il proprio utente si chiama pippo, basta:
# deluser pippo sudo
Prima di questo comando si consiglia di ottenere i privilegi di amministratore con l'uso di su
, per verificare che l'account root è attivo prima di rimuoversi dal gruppo.
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.
Non sarà possibile né effettuare il login come utente root, né utilizzare il comando su
.
Per riattivare root, permettendo nuovamente sia il login che l'utilizzo di su
, dare invece il seguente comando:
$ sudo passwd --unlock root
Esempio di configurazione
Per modificare il file di configurazione, con privilegi di amministratore digitare:
# visudo
Equivalentemente con sudo
, se abilitato per tutti i comandi, il comando di prima può essere digitato come segue con i privilegi del proprio utente:
$ sudo visudo
Un esempio di configurazione può essere questo:
# /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
Sitografia
Guida scritta da: Ferdybassi 12:42, 6 nov 2010 (CET) | Debianized 60% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |