Introduzione

Il comando sudo consente di eseguire programmi come un altro utente, per impostazione predefinita l'utente root. Se passi molto tempo sulla riga di comando, sudo è uno dei comandi che userai abbastanza frequentemente.

L'uso di sudo invece dell'accesso come root è più sicuro perché è possibile concedere privilegi amministrativi limitati ai singoli utenti senza che siano a conoscenza della password di root.

In questo tutorial, spiegheremo come usare il comando sudo.

Installare Sudo

Il pacchetto sudo è preinstallato sulla maggior parte delle distribuzioni Linux.

Per verificare se il pacchetto sudo è installato sul tuo sistema, apri la console, digita sudo e premi Enter. Se hai installato sudo il sistema visualizzerà un breve messaggio di aiuto, altrimenti vedrai qualcosa di simile sudo command not found.

Se sudo non è installato, puoi installarlo facilmente usando il gestore pacchetti della tua distribuzione.

Installare Sudo su Ubuntu e Debian

apt install sudo

Installare Sudo su CentOS e Fedora

yum install sudo

Aggiungere un utente al gruppo Sudo

Per impostazione predefinita sulla maggior parte delle distribuzioni Linux, garantire l'accesso sudo è semplice come aggiungere l'utente al gruppo sudo definito nel file sudoers. I membri di questo gruppo saranno in grado di eseguire qualsiasi comando come root. Il nome del gruppo può differire da distribuzione a distribuzione.

Nelle distribuzioni basate su RedHat come CentOS e Fedora, il nome del gruppo sudo è wheel. Per aggiungere l'utente all'esecuzione del gruppo :

usermod -aG wheel username

Su Debian, Ubuntu e i loro derivati, i membri del gruppo sudo hanno accesso sudo:

usermod -aG sudo username

L' account utente root in Ubuntu è disabilitato di default per motivi di sicurezza e gli utenti sono incoraggiati ad eseguire attività amministrative di sistema usando sudo. L'utente iniziale creato dal programma di installazione di Ubuntu è già un membro del gruppo sudo, quindi se si esegue Ubuntu è probabile che l'utente a cui si è effettuato l'accesso sia già concesso con i privilegi di sudo.

Se si desidera consentire a un utente specifico di eseguire solo determinati programmi come sudo, invece di aggiungere l'utente al gruppo sudo aggiungere gli utenti al file sudoers.

Ad esempio, per consentire all'utente noviello di eseguire solo il comando  mkdir come sudo, digitare:

sudo visudo

e aggiungi la seguente riga:

noviello  ALL=/bin/mkdir

Sulla maggior parte dei sistemi, il comando visudo apre il file /etc/sudoers con l'editor di testo vim. Se non hai esperienza con vim, consulta il nostro articolo su come salvare un file e chiudere l'editor vim .

Puoi anche consentire agli utenti di eseguire comandi sudo senza immettere la password:

noviello  ALL=(ALL) NOPASSWD: ALL

Come usare Sudo

La sintassi per il comando sudo è la seguente:

sudo OPTION.. COMMAND

Il comando sudo ha molte opzioni che controllano il suo comportamento ma di solito sudo è usato nella sua forma più semplice, senza alcuna opzione.

Per usare sudo, aggiungi semplicemente il comando prefisso con sudo:

sudo command

Dov'è command il comando per cui si desidera utilizzare sudo.

Sudo leggerà il file /etc/sudoers e verificherà se l'utente che ha invocato è autorizzato con sudo access. La prima volta che usi sudo in una sessione, ti verrà chiesto di inserire la password dell'utente e il comando verrà eseguito come root.

Ad esempio, per elencare tutti i file nella directory /root dovresti usare:

sudo ls /root
[sudo] password for noviello:
.  ..  .bashrc	.cache	.config  .local  .profile

Timeout password

Per impostazione predefinita, sudo ti chiederà di inserire nuovamente la password dopo cinque minuti di inattività di sudo. È possibile modificare il timeout predefinito modificando il file sudoers. Apri il file con visudo:

sudo visudo

Imposta il timeout predefinito aggiungendo la riga seguente, dove 10 è il timeout specificato in minuti:

Defaults  timestamp_timeout=10

Se si desidera modificare il timestamp solo per un utente specifico, aggiungere la seguente riga, dove user_name è l'utente in questione.

Defaults:user_name timestamp_timeout=10

Eseguire un comando come utente diverso da root

Generalmente sudo viene utilizzato solo per fornire autorizzazioni di root a un utente normale. In realtà, è possibile utilizzare sudo per eseguire un comando come qualsiasi utente.

L'opzione -u consente di eseguire un comando come utente specificato.

Nel seguente esempio stiamo usando sudo per eseguire il comando whoami come utente "piero":

sudo -u piero whoami

Il comando whoami stamperà il nome dell'utente che esegue il comando:

piero

Come reindirizzare con Sudo

Se si tenta di reindirizzare l'output di un comando su un file in cui l'utente non dispone di autorizzazioni di scrittura, verrà visualizzato l'errore "Permission denied".

sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied

Ciò accade perché il reindirizzamento > dell'output viene eseguito sotto l'utente a cui si è effettuato l'accesso, non l'utente specificato da sudo. Il reindirizzamento avviene prima che venga richiamato il comando sudo.

Una soluzione è invocare una nuova shell come root usando sudo sh -c:

sudo sh -c 'echo "test" > /root/file.txt'

Un'altra opzione è collegare l'output come utente normale al comando tee come mostrato di seguito:

echo "test" | sudo tee /root/file.txt

Conclusione

Hai imparato come usare il comando sudo e come creare nuovi utenti con privilegi sudo.