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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(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. Fondamentale per permettere a più persone di svolgere attività di amministrazione senza condividere la stessa password.
* 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, 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, 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à.
<br/><br/>
(''Fonte: [http://wiki.debian.org/it/sudo Debian Wiki]'')


 
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 molto ridotti rispetto all'uso di <code>su</code> per eseguire una shell come [[root]], salvo si studino le opzioni supportate e si personalizzi il file di configurazione in modo opportuno, restringendone l'uso il più possibile.


== Installazione ==
== Installazione ==
Per installare <code>sudo</code>, se non è presente, su Debian è sufficiente utilizzare [[apt-get]] con [[privilegi di amministratore]]:
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 però aggiunto il proprio utente, per esempio ''pippo'', a questo gruppo:
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 [[root]] digitare il seguente comando:
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]], permettendone sia il login che l'utilizzo di <code>su</code>, dare invece il seguente comando:
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]] 21:40, 31 ago 2014 (CEST)
: [[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

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


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

Sitografia




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 13:22, 1 set 2014 (CEST)

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