Configurare SUDO per gestire le attività degli amministratori: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(→‎Configurazione: aggiunto warning e link)
(estesa e verificata)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili}}
== Introduzione ==
== 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 <code>sudo</code>, con che comando e quando.
''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).


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 <code>sudo</code> se se si vuole permetter loro di utilizzare questo strumento.
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 <code>sudo</code>, con che comando e quando.
 
Su Debian, a partire da Squeeze <code>sudo</code> è 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'' ===
=== Perché ''sudo'' ===
Usare ''sudo'' è meglio (più sicuro) che aprire una sessione come root, in particolare per i seguenti motivi:
Usare <code>sudo</code> è 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).
* Non c'è bisogno di password di root, ma sudo richiede la password dell'utente corrente. Fondamentale per permettere a più persone di svolgere attività di amministrazione senza condividere la stessa password.
* 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.
* 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, il passaggio a root con <code>sudo -i</code> (o <code>sudo su</code>) è generalmente sconsigliato perché annulla le caratteristiche di cui sopra. Nel seguito della guida vedremo come disabilitare questa possibilità.
Per le ragioni esposte, il passaggio a root con <code>sudo -i</code> (o <code>sudo su</code>) è generalmente sconsigliato perché annulla le caratteristiche di cui sopra. Nel seguito della guida vedremo come disabilitare questa possibilità.
Riga 16: Riga 18:


== Installazione ==
== Installazione ==
Per installare ''sudo'' su Debian è sufficiente utilizzare apt:
Per installare <code>sudo</code>, se non è presente, su Debian è sufficiente utilizzare [[apt-get]] con [[privilegi di amministratore]]:
<pre>
<pre>
# apt-get install sudo
# apt-get install sudo
Riga 22: Riga 24:


== Configurazione ==
== Configurazione ==
Il file di configurazione di '''sudo''' (<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>.


Per aggiungere un utente, per esempio ''pippo'' a questo gruppo:
Va però aggiunto il proprio utente, per esempio ''pippo'', a questo gruppo:
<pre>
<pre>
# adduser pippo sudo
# adduser pippo sudo
Riga 31: Riga 33:
È necessario un logout e un nuovo login per risultare iscritti al gruppo.
È necessario un logout e un nuovo login per risultare iscritti al gruppo.


Eventualmente, per modificare il file di configurazione, è consigliato usare il comando <code>visudo</code>, che effettua anche un controllo sulla sintassi utilizzata.
Si può verificare di essere membri di ''sudo'', digitando '''senza''' privilegi di amministratore:
<pre>
$ groups
</pre>
 
Eventualmente, per modificare il file di configurazione, è consigliato l'uso del comando <code>visudo</code>, che effettua anche un controllo sulla sintassi utilizzata.


=== Disabilitare root ===
=== Disabilitare root ===
Riga 46: Riga 53:


=== Esempio di configurazione ===
=== Esempio di configurazione ===
Un esempio di configurazione può essere questo:
Per modificare il file di configurazione, con [[privilegi di amministratore]] digitare:
<pre>
<pre>
# visudo
# visudo
</pre>
</pre>
Equivalentemente con <code>sudo</code>, se abilitato per tutti i comandi, il comando di prima può essere digitato come segue con i privilegi del proprio utente:
<pre>
$ sudo visudo
</pre>
Un esempio di configurazione può essere questo:
<pre>
<pre>
# /etc/sudoers
# /etc/sudoers
Riga 101: Riga 114:


== Esempio di sessione ''sudo'' ==
== Esempio di sessione ''sudo'' ==
Una tipica sessione di ''sudo'' si presenta così:
Una tipica sessione di <code>sudo</code> si presenta così:
<pre>
<pre>
utente1@server $ sudo comando
utente1@server $ sudo comando
Riga 120: Riga 133:


== File di log ==
== File di log ==
Il comando ''sudo'' 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>


{{Autori
{{Autori
| Autore = [[Utente:Ferdybassi|Ferdybassi]] 12:42, 6 nov 2010 (CET)
| Autore = [[Utente:Ferdybassi|Ferdybassi]] 12:42, 6 nov 2010 (CET)
| Verificata_da =
: [[Utente:Stemby|Stemby]]
: [[Utente:HAL 9000|HAL 9000]] 21:40, 31 ago 2014 (CEST)
| Estesa_da =
| Estesa_da =
: [[Utente:Stemby|Stemby]]
: [[Utente:Stemby|Stemby]]
| Numero_revisori = 1
: [[Utente:HAL 9000|HAL 9000]]
| Numero_revisori = 2
}}
}}


[[Categoria:Shell]]
[[Categoria:Shell]]
[[Categoria:Monitoraggio]]
[[Categoria:Monitoraggio]]

Versione delle 19:40, 31 ago 2014

Debian-swirl.png 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 è 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 per permettere a più persone di svolgere attività di amministrazione senza 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, 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, se non è presente, su Debian è sufficiente utilizzare apt-get con privilegi di amministratore:

# 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.

Va però aggiunto il proprio utente, per esempio pippo, a questo gruppo:

# 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.

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

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


Warning.png 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 /etc/sudoers con un editor qualsiasi e, se anche questi venissero ristretti, sarebbe sempre possibile fare copie di una shell con altri nomi e perfino creare nuovi eseguibili che modifichino file con privilegi di amministratore.

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) Swirl-auth60.png Debianized 60%
Estesa da:
Stemby
HAL 9000
Verificata da:
Stemby
HAL 9000 21:40, 31 ago 2014 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized