Il comando sudo consente di eseguire programmi come un altro utente, per impostazione predefinita l'utente root. Se trascorri molto tempo sulla riga di comando, sudo è uno dei comandi che utilizzerai abbastanza frequentemente.
L'uso di sudo invece di accedere come root è più sicuro perché puoi concedere privilegi amministrativi limitati a singoli utenti senza che essi conoscano la password di root.
In questo tutorial spiegheremo come usare il sudo
comando.
Installazione di Sudo (comando sudo non trovato) #
Il pacchetto sudo è preinstallato sulla maggior parte delle distribuzioni Linux.
Per verificare se il pacchetto sudo è installato sul tuo sistema, apri la tua console, digita sudo
e premi Enter
. Se sudo ha installato il sistema, verrà visualizzato un breve messaggio di aiuto. Altrimenti, vedrai qualcosa come sudo command not found
.
Se sudo non è installato puoi installarlo facilmente usando il gestore pacchetti della tua distribuzione.
Installa Sudo su Ubuntu e Debian #
apt install sudo
Installa Sudo su CentOS e Fedora #
yum install sudo
Aggiunta utente a sudoers #
Per impostazione predefinita, sulla maggior parte delle distribuzioni Linux concedere l'accesso a sudo è semplice come aggiungere l'utente al gruppo sudo definito in sudoers
file. I membri di questo gruppo potranno eseguire qualsiasi comando come root. Il nome del gruppo può variare da distribuzione a distribuzione.
Nelle distribuzioni basate su RedHat come CentOS e Fedora, il nome del gruppo sudo è wheel
. Per aggiungere l'utente al gruppo, esegui:
usermod -aG wheel username
Su Debian, Ubuntu e i loro derivati, i membri del gruppo sudo
sono concessi con accesso sudo:
usermod -aG sudo username
L'account utente root in Ubuntu è disabilitato per impostazione predefinita per motivi di sicurezza e gli utenti sono incoraggiati a eseguire attività di amministrazione del sistema utilizzando sudo. L'utente iniziale creato dal programma di installazione di Ubuntu è già un membro del gruppo sudo, quindi se stai utilizzando Ubuntu, è probabile che l'utente a cui hai effettuato l'accesso sia già autorizzato con i privilegi sudo.
Per consentire a un utente specifico di eseguire solo determinati programmi come sudo, invece di aggiungere l'utente al gruppo sudo, aggiungi gli utenti a sudoers
file.
Ad esempio, per consentire all'utente linuxize
per eseguire solo mkdir
comando come sudo, digita:
sudo visudo
e aggiungi la seguente riga:
linuxize ALL=/bin/mkdir
Sulla maggior parte dei sistemi, il visudo
il comando apre il /etc/sudoers
file con l'editor di testo vim. Se non hai esperienza con vim, consulta il nostro articolo su come salvare un file e uscire dall'editor di vim.
Puoi anche consentire agli utenti di eseguire comandi sudo senza inserire la password:
linuxize ALL=(ALL) NOPASSWD: ALL
Come usare Sudo #
La sintassi per sudo
il comando è il seguente:
sudo OPTION.. COMMAND
Il sudo
comando ha molte opzioni che controllano il suo comportamento, ma di solito viene utilizzato nella sua forma più semplice, senza alcuna opzione.
Per usare sudo, anteponi semplicemente al comando sudo
:
sudo command
Dove command
è il comando per il quale vuoi usare sudo.
Sudo leggerà il /etc/sudoers
file e controlla se l'utente che esegue il richiamo è autorizzato con sudo assessment. La prima volta che usi sudo in una sessione, ti verrà chiesto di inserire la password utente e il comando verrà eseguito come root.
Ad esempio, per elencare tutti i file in /root
directory che useresti:
sudo ls /root
[sudo] password for linuxize:
. .. .bashrc .cache .config .local .profile
Timeout password #
Per impostazione predefinita, sudo ti chiederà di inserire nuovamente la password dopo cinque minuti di inattività sudo. Puoi modificare il timeout predefinito modificando sudoers
file. Apri il file con visudo
:
sudo visudo
Imposta il timeout predefinito aggiungendo la riga sottostante, dove 10
è il timeout specificato in minuti:
Defaults timestamp_timeout=10
Se desideri modificare il timestamp solo per un utente specifico, aggiungi la riga seguente, dove nome_utente è l'utente in questione.
Defaults:user_name timestamp_timeout=10
Esegui un comando come utente diverso da root #
C'è un'errata percezione che sudo
viene utilizzato solo per fornire i permessi di root a un utente normale. In realtà, puoi usare sudo
per eseguire un comando come qualsiasi utente.
Il -u
l'opzione ti consente di eseguire un comando come un utente specificato.
Nell'esempio seguente, stiamo usando sudo
per eseguire whoami
comando come utente “richard”:
sudo -u richard whoami
Il whoami
command stamperà il nome dell'utente che esegue il comando:
richard
Come reindirizzare con Sudo #
Se provi a reindirizzare l'output di un comando a un file per il quale il tuo utente non ha permessi di scrittura, riceverai un errore "Autorizzazione negata".
sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied
Ciò accade perché il reindirizzamento “>
” dell'output viene eseguito con l'utente a cui si è effettuato l'accesso, non l'utente specificato con sudo. Il reindirizzamento avviene prima del sudo
viene richiamato il comando.
Una soluzione è invocare una nuova shell come root usando sudo sh -c
:
sudo sh -c 'echo "test" > /root/file.txt'
Un'altra opzione è inviare l'output come utente normale al tee
comando, come mostrato di seguito:
echo "test" | sudo tee /root/file.txt
Conclusione #
Hai imparato a usare il sudo
comando e come creare nuovi utenti con privilegi sudo.
Se hai domande, sentiti libero di lasciare un commento.