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 qualsiasi altro utente). La filosofia di base è quella di dare meno privilegi possibile. Sudo può anche essere usato per registrare chi ha usato un dato comando e quando.
Contents
Ragioni per cui viene usato o non usato sudo
Perché alcune persone non usano sudo
Storicamente i sistemi in stile Unix non usavano sudo. Permettere l'accesso con sudo crea il rischio di danni, attraverso errori, bug nel programma sudo stesso e può incoraggiare le persone ad eseguire comandi come root rendendo 'troppo facile' ottenere privilegi.
Molti amministratori Debian non installano sudo. Eseguono invece i comandi come root (per esempio con su - da un normale account utente) quando ne hanno bisogno. Ciò evita la necessità di digitare "sudo" davanti ad ogni comando.
Perché alcune persone usano sudo
Usare sudo può essere più familiare ai nuovi utenti provenienti da altre distribuzioni. È meglio (più sicuro) che permettere ad un utente normale di aprire una sessione come root dato che:
Nessuno deve conoscere la password di root (sudo chiede la password dell'utente attuale).
- Privilegi aggiuntivi possono essere concessi temporaneamente ad utenti singoli e poi essere tolti senza la necessità di un cambio di password.
È facile eseguire solo i comandi che necessitano di privilegi speciali con sudo; per il resto del tempo si lavora come utenti non privilegiati, e ciò riduce i danni che possono essere causati da errori.
- Audit/Log: quando viene eseguito un comando con sudo, vengono registrati il nome utente originale e il comando.
Per i motivi suddetti, passare a root usando sudo -i (o sudo su) è solitamente deprecato perché annulla molte delle caratteristiche descritte sopra.
Installare sudo
A differenza di altre distribuzioni, come Ubuntu, Debian non richiede affatto che sia installato sudo.
Per installare sudo è necessario diventare root usando, ad esempio, il comando su, installare il pacchetto sudo, aggiungere il proprio utente al gruppo sudo e poi disconnettere l'utente e rifare il login.
Se non è stata impostata una password di root durante l'installazione Debian, l'account utente normale che è stato creato al momento dell'installazione è in grado di eseguire 'sudo' senza password: fare il log in come tale account ed eseguire sudo passwd per impostare una password di root prima di continuare.
$ 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 disconnettersi e rifare il login.
Configurare sudo
Il file principale di configurazione di sudo è /etc/sudoers. Questo file è in sola lettura, anche per root: esiste un comando visudo che permette di modificare il file, ma è meglio mettere la configurazione locale in un file nuovo in /etc/sudoers.d. L'uso di /etc/sudoers.d/ assicura che le modifiche locali rimangano in effetto anche se il manutentore del pacchetto Debian modifica /etc/sudoers in una nuova versione del pacchetto sudo package.
L'esempio sottostante imposta un ambiente pulito, che include un percorso sicuro; permette all'utente root di eseguire qualsiasi comando; permette a qualsiasi membro del gruppo sudo di eseguire qualsiasi comando come root; permette all'utente deb di eseguire il comando piuparts e carica altra configurazione dai file in /etc/sudoers.d.
Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Defaults use_pty root ALL=(ALL:ALL) ALL %sudo ALL=(ALL:ALL) ALL deb ALL=/usr/sbin/piuparts @includedir /etc/sudoers.d
Il simbolo di percentuale (%) viene usato per indicare un gruppo nel file di configurazione (vedere la riga %sudo sotto. In maniera predefinita Debian non fornisce un gruppo wheel, a differenza di altre famiglie BSD di sistemi operativi.
Richiedere la password di root
Se si desidera rendere necessaria la password di root per l'uso di sudo, invece della password dell'utente, aggiungere la riga:
Defaults rootpw
ad un file in /etc/sudoers.d.
Non richiedere alcuna password
Se si desidera che i membri del gruppo sudo eseguano comandi senza alcuna password (che è solitamente una cattiva idea), aggiungere la riga:
%sudo ALL=(ALL) NOPASSWD: ALL
ad un file in /etc/sudoers.d. Tenere a mente che ciò permette a chiunque che compromette tale account utente di ottenere molto facilmente l'accesso come root.
Personalizzare il periodo di scadenza
In modo predefinito, dopo aver chiesto una password, le credenziali vengono messe da sudo in una cache per 15 minuti. Si può cambiare questo comportamento impostando un diverso periodo di scadenza per un utente specifico:
Defaults:foobar timestamp_timeout=30
Concedere l'accesso con 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:
$ groups pippo sudo
Se sudo non è presente nell'output, l'utente non appartiene al gruppo sudo. In modo simile l'output del comando id dovrebbe avere un aspetto simile a
uid=1001(pippo) gid=1001(pippo) groups=1001(pippo),27(sudo)
Aggiungere un utente 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 accesso sudo
Creare un nuovo utente con accesso sudo quando si installa Debian
A partire da Debian Squeeze, se si dà a root una password vuota durante l'installazione, sudo viene installato e l'account utente che è stato creato al momento dell'installazione sarà in grado di usare sudo per ottenere l'accesso come root (viene aggiunto al gruppo sudo). Il sistema configura anche gksu e aptitude per usare sudo. Si dovrebbe comunque verificare l'appartenenza al gruppo dopo aver fatto il login come l'utente installato.
Creazione di un nuovo utente con accesso sudo 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.
Problemi e suggerimenti
Spiacente, all'utente mario non è consentito eseguire ...
Se si ottiene un errore del tipo:
$ 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.
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.
Vedere anche
Pagine man: sudoers(5), sudo(8), visudo(8), sudoedit(8), sudoreplay(8)
Doas - Uno strumento più leggero e minimalista con lo stessa funzione, con una configurazione più semplice.
CategoryRoot | CategorySystemSecurity | CategorySystemAdministration
