sudo
sudo (superuser do) esegue un comando con i privilegi di un altro utente, di solito root, senza dover accedere come root.
Uso base
sudo comando
sudo apt update
sudo systemctl restart nginx
La password richiesta è la tua, non quella di root. Resta valida per alcuni minuti.
Opzioni utili
sudo -i
sudo -s
sudo -u altroutente comando
sudo -l
sudo -k
sudo !!
| Comando | Significato |
|---|---|
sudo -i | Shell di login come root (ambiente di root) |
sudo -s | Shell come root mantenendo parte del tuo ambiente |
sudo -u utente cmd | Esegue come un altro utente |
sudo -l | Elenca cosa puoi eseguire con sudo |
sudo -k | Dimentica la password in cache |
sudo !! | Ripete l'ultimo comando con sudo (funziona in bash) |
Reindirizzamenti con sudo
Questo non funziona:
sudo echo "testo" > /etc/file
Il reindirizzamento > viene eseguito dalla tua shell, non da sudo. Usa tee:
echo "testo" | sudo tee /etc/file
echo "testo" | sudo tee -a /etc/file
Oppure:
sudo sh -c 'echo "testo" > /etc/file'
Configurazione: visudo
Il file /etc/sudoers va modificato solo con:
sudo visudo
perché controlla la sintassi prima di salvare. Un errore potrebbe toglierti l'accesso a sudo.
Meglio ancora, usa file separati:
sudo visudo -f /etc/sudoers.d/michele
Esempi di regole:
michele ALL=(ALL:ALL) ALL
michele ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
%wheel ALL=(ALL:ALL) ALL
Dare a un utente il permesso di usare sudo:
sudo usermod -aG wheel michele
sudo usermod -aG sudo michele
Il gruppo è wheel su Arch e Fedora, sudo su Debian e Ubuntu. L'utente deve rieseguire il login.
Buone pratiche
- Evita
NOPASSWD: ALL: concedi solo i comandi strettamente necessari. - Usa
sudoper il singolo comando invece di restare in una shell root. - Controlla i tentativi in
journalctl -t sudo. - Non usare
sudoper programmi grafici o per lanciare editor su file personali: crea file di proprietà di root.