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.