Differences between revisions 28 and 29
Revision 28 as of 2021-11-29 11:19:54
Size: 9328
Comment: sync with English master v.54
Revision 29 as of 2023-09-08 07:42:39
Size: 11004
Comment: sync with English master v.58
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
== Note per i nuovi utenti Debian ==

Alcuni nuovi utenti di Debian, solitamente provenienti da Ubuntu, sono sorpresi da problemi del tipo "sudo non funziona in Debian". Tuttavia, ciò accade solamente se è stata impostata una password di root durante l'installazione di Debian.

Se piace usare sudo e si vuole installarlo (anche se lo si è saltato durante l'installazione di Debian), lo si può fare, ma nel modo che non usa sudo, perciò diventando root con il comando {{{su}}}, installandolo e aggiungendo sé stessi al gruppo {{{sudo}}} e facendo una completa disconnessione e rifacendo il login.

Esempio:

 {{{#!plain
$ su --login
Password: (inserire qui la password dell'utente root che è stata specificata durante l'installazione di Debian, e premere Invio)

# apt install sudo

# adduser mario-rossi sudo
}}}

(Ovviamente si deve sostituire a "mario-rossi" il proprio nome utente)

Poi fare una completa disconnessione e rifare il login.

== Perché non usare sudo? ==

Si deve notare che, storicamente, tutti i sistemi Unix funzionavano perfettamente anche prima dell'invenzione di "sudo". Inoltre, l'avere un sistema senza sudo potrebbe ancora dare benefici in termini di sicurezza, dato che il pacchetto sudo potrebbe essere affetto da gravi problemi di sicurezza, come qualsiasi altra parte aggiuntiva del sistema.

Molti utenti Debian non installano sudo. Aprono invece un terminale come root (per esempio con {{{su -}}} da un normale utente). In questo modo non è necessario far precedere ogni comando da "sudo".
Line 9: Line 36:
Usare {{{sudo}}} è meglio (più sicuro) che aprire una sessione come root per svariati motivi, inclusi: Usare {{{sudo}}} potrebbe essere più familiare per i nuovi utenti e potrebbe essere meglio (più sicuro) che permettere ad un normale utente di aprire una sessione come root. Alcune motivazioni sono:
Line 14: Line 41:
Per le ragioni esposte, il ''passaggio'' a root con {{{sudo -i}}} (o {{{sudo su}}}) è generalmente sconsigliato perché annulla le caratteristiche di cui sopra. Per le ragioni esposte, il ''passaggio'' a root con {{{sudo -i}}} (o {{{sudo su}}}) è generalmente sconsigliato perché annulla la maggior parte delle caratteristiche di cui sopra.


Root > sudo


Sudo (a volte considerato l'abbreviazione di Super-user do) è 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 lavoro. Sudo è anche un modo efficace per registrare chi ha usato un dato comando e quando.

Note per i nuovi utenti Debian

Alcuni nuovi utenti di Debian, solitamente provenienti da Ubuntu, sono sorpresi da problemi del tipo "sudo non funziona in Debian". Tuttavia, ciò accade solamente se è stata impostata una password di root durante l'installazione di Debian.

Se piace usare sudo e si vuole installarlo (anche se lo si è saltato durante l'installazione di Debian), lo si può fare, ma nel modo che non usa sudo, perciò diventando root con il comando su, installandolo e aggiungendo sé stessi al gruppo sudo e facendo una completa disconnessione e rifacendo il login.

Esempio:

  • $ su --login
    Password: (inserire qui la password dell'utente root che è stata specificata durante l'installazione di Debian, e premere Invio)
    
    # apt install sudo
    
    # adduser mario-rossi sudo

(Ovviamente si deve sostituire a "mario-rossi" il proprio nome utente)

Poi fare una completa disconnessione e rifare il login.

Perché non usare sudo?

Si deve notare che, storicamente, tutti i sistemi Unix funzionavano perfettamente anche prima dell'invenzione di "sudo". Inoltre, l'avere un sistema senza sudo potrebbe ancora dare benefici in termini di sicurezza, dato che il pacchetto sudo potrebbe essere affetto da gravi problemi di sicurezza, come qualsiasi altra parte aggiuntiva del sistema.

Molti utenti Debian non installano sudo. Aprono invece un terminale come root (per esempio con su - da un normale utente). In questo modo non è necessario far precedere ogni comando da "sudo".

Perché sudo

Usare sudo potrebbe essere più familiare per i nuovi utenti e potrebbe essere meglio (più sicuro) che permettere ad un normale utente di aprire una sessione come root. Alcune motivazioni sono:

  • non è necessario che alcuno conosca la password di root (sudo richiede la password dell'utente attuale); si possono dare privilegi extra a utenti specifici temporaneamente e poi rimuoverli senza dover cambiare password;

  • è facile eseguire soltanto i comandi che richiedono privilegi speciali come root, usando sudo; per tutto il resto del tempo si lavora come utente non privilegiato, il che riduce i danni che possono essere causati da sbagli;

  • 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 la maggior parte delle caratteristiche di cui sopra.

Utenti e sudo

La configurazione predefinita di Debian permette agli utenti nel gruppo "sudo" di eseguire qualsiasi comando attraverso "sudo".

Verificare l'appartenenza a sudo

Una volta che l'utente ha fatto il login, può verificare se appartiene o meno al gruppo sudo usando il comando id o groups. Ad esempio, un utente con ID "pippo" dovrebbe vedere l'output di

  • $ groups

come

  • pippo sudo

Se sudo non è presente nell'output, l'utente non appartiene a quel gruppo. In modo simile l'output più complesso e variabile del comando id dovrebbe avere un aspetto simile a

  • uid=1001(pippo) gid=1001(pippo) groups=1001(pippo),27(sudo)

Aggiungere un utente esistente dalla riga di comando

Per aggiungere un utente esistente con ID "pippo" al gruppo "sudo":

  • $ sudo adduser pippo sudo

In alternativa, si può prima diventare root (ad esempio con sudo su -) e poi eseguire lo stesso comando senza il prefisso sudo:

  • # adduser pippo
    # adduser pippo sudo

Dopo essere stato aggiunto ad un nuovo gruppo, l'utente deve fare il logout e nuovamente il login affinché la modifica abbia effetto. I gruppi vengono assegnati all'utente solamente al momento del login. Una comune fonte di confusione è il fatto che le persone si aggiungono ad un gruppo ma non fanno il logout e poi nuovamente il login, e poi hanno problemi perché non sono stati assegnati al gruppo; assicurarsi di verificare l'appartenenza al gruppo.

Creazione di utenti con sudo

Si possono anche creare nuovi utenti con appartenenza al gruppo sudo:

Creazione di un nuovo utente durante l'installazione del SO

A partire da Debian Squeeze, se si assegna a root una password vuota durante l'installazione, sudo viene installato e il primo utente sarà in grado di usarlo per ottenere l'accesso come root (attualmente l'utente viene aggiunto al gruppo sudo). Il sistema configura anche gksu e aptitude in modo che usino sudo. Si dovrebbe comunque verificare l'appartenenza al gruppo dopo aver fatto il login come l'utente installato.

Creazione di un nuovo utente dalla riga di comando

Un utente che ha già sudo può creare dalla riga di comando un altro utente (ad esempio con ID "pippo") che appartiene al gruppo sudo:

  • $ sudo adduser pippo -G sudo

(oppure diventare prima root, come nella sezione precedente).

Si deve poi fare il login come il nuovo utente e verificare l'appartenenza al gruppo.

Panoramica sulla configurazione

Se si desidera permettere a certi utenti di eseguire specifici programmi, ecco un esempio veloce (per maggiori informazioni, leggere il manuale) che si può mettere in un file in /etc/sudoers.d, probabilmente usando visudo -f /etc/sudoers.d/miofile.

User_Alias      MYADMINS = pippo

Cmnd_Alias      SHUTDOWN = /sbin/reboot, /sbin/poweroff
Cmnd_Alias      PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude

# Gli utenti elencati sopra (in MYADMINS) possono eseguire i gestori dei pacchetti e riavviare il sistema.
MYADMINS ALL = PKGMGMT, SHUTDOWN

Problemi e suggerimenti

Spiacente, all'utente mario non è consentito eseguire ...

Una sessione tipica si presenta così:

  • $ sudo test
    
    We trust you have received the usual lecture from the local System
    Administrator. It usually boils down to these three things:
    
        #1) Respect the privacy of others.
        #2) Think before you type.
        #3) With great power comes great responsibility.
    
    [sudo] password for mario: 
    Sorry, user mario is not allowed to execute '/usr/bin/test' as root on localhost.

Questo messaggio significa esattamente ciò che dice: l'utente che si sta usando non ha il permesso di eseguire il comando specificato sulla macchina. Una ragione possibile che può indurre in confusione è il fatto che l'amministratore ha appena aggiunto mario al gruppo privilegiato, ma si sta usando sempre un accesso alla macchina vecchio che non ha le nuove informazioni sui gruppi e perciò non ha i nuovi permessi sudo. A coloro che si trovano in questa situazione viene solitamente consigliato di fare un logout e poi nuovamente il login, anche se a volte la cosa si può risolvere facendo solamente un nuovo "login a caldo" con su - $USER o cambiare gruppo con newgrp sudo.

La direttiva include

Il file /etc/sudoers standard termina con la riga:

  •  #includedir /etc/sudoers.d

Questo rende possibile ad altri pacchetti fornire pezzetti di configurazione in /etc/sudoers.d/<nomepacchetto>, che modificano la configurazione di sudo. Può sembrare che sia necessario modificare la riga eliminando il carattere "#" iniziale (detto anche cancelletto), ma non è così: il carattere "#" fa parte della direttiva!

È raccomandato fare anche le modifiche locali in un frammento di configurazione.

sudoers è in sola lettura

Sì, il file /etc/sudoers è intenzionalmente impostato in sola lettura, anche per root!

La spiegazione è che questa impostazione motiva gli amministratori a modificarlo solamente usando il comando visudo che fornisce controlli aggiuntivi prima di lasciare il nuovo file nella sua posizione. Si potrebbe pensare che la soluzione per un /etc/sudoers danneggiato sia semplice quanto eseguire su -c visudo, ma sudo è spesso usato in posti in cui fare semplicemente su in root non è possibile, semplicemente perché non si conosce la password di root.

The explanation is that it was set up this way to motivate admins to only ever edit it via the command visudo, which provides additional checking before leaving the new file in place. You might think that the fix for a mangled /etc/sudoers, the fix may be as simple as su -c visudo, but sudo is often used in a place where simply su'ing to root is not possible since you simply don't know the root password.

Fare attenzione che la maggior parte degli editor di testo permette di modificare il file senza lamentarsi del bit di sola lettura, perciò si potrebbe non avere automaticamente questa protezione aggiuntiva.

Richiedere password di root

Se per l'uso di sudo si desidera richiedere la password di root piuttosto che la password utente, aggiungere la riga:

Defaults   rootpw

Nessuna richiesta di password per utenti sudo

Se si desidera che i membri del gruppo sudo eseguano i comandi senza la password, aggiungere la riga:

%sudo ALL=(ALL) NOPASSWD: ALL

Personalizzare il tempo di scadenza delle credenziali in cache

In modo predefinito, dopo aver chiesto una password, le credenziali sono tenute in cache da "sudo" e durano per 15 minuti. Si può cambiare questo comportamento usando il comando visudo e personalizzando il tempo di scadenza per un utente specifico:

Defaults:pippo timestamp_timeout=30


Vedere anche


CategoryRoot | CategorySystemSecurity | CategorySystemAdministration