Con il comando su, qualsiasi utente che conosce la password di root può "ottenere root" e fare qualsiasi cosa l'utente root possa fare. Un account che utilizza "su - root" è essenzialmente l'amministratore del server. Questo è spesso molto più potere di quanto dovrebbe essere delegato agli utenti. Una pratica migliore consiste nel delegare funzioni specifiche agli utenti anziché concedere privilegi di root a livello di sistema.
Il comando sudo consente all'amministratore del server di delegare comandi specifici a utenti specifici senza concedere loro privilegi completi sul server. La delega viene eseguita nel file /etc/sudoers utilizzando l'editor visudo. A utenti e gruppi possono essere assegnati comandi specifici da eseguire per adempiere alle proprie responsabilità senza disporre dei privilegi di amministratore completi.
Sintassi
La sintassi del comando sudo è:
$ sudo [options] {command}
Se si verifica l'errore seguente durante l'esecuzione del comando sudo:
sudo: command not found
puoi provare a installare il pacchetto sudo come mostrato di seguito secondo la tua scelta di distribuzione.
Distribuzione | Comando |
---|---|
Debian | apt-get install sudo |
Ubuntu | apt-get install sudo |
Alpino | apk aggiungi sudo |
Arci Linux | pacman -S sudo |
Kali Linux | apt-get install sudo |
CentOS | yum install sudo |
Fedora | dnf install sudo |
Raspbian | apt-get install sudo |
Esempi di comando sudo
1. Esegui un comando come superutente:
$ sudo less /var/log/syslog
2. Modifica un file come superutente con il tuo editor predefinito:
$ sudo --edit /etc/fstab
3. Eseguire un comando come un altro utente e/o gruppo:
$ sudo --user=user --group=group id -a
4. Ripetere l'ultimo comando preceduto da `sudo` (solo in `bash`, `zsh`, ecc.):
$ sudo !!
5. Avviare la shell predefinita con privilegi di superutente ed eseguire file specifici per l'accesso (`.profile`, `.bash_profile`, ecc.):
$ sudo --login
6. Avvia la shell predefinita con privilegi di superutente senza modificare l'ambiente:
$ sudo --shell
7. Avvia la shell predefinita come utente specificato, caricando l'ambiente dell'utente e leggendo i file specifici per l'accesso (`.profile`, `.bash_profile`, ecc.):
$ sudo --login --user=user
8. Elenca i comandi consentiti (e vietati) per l'utente che esegue il richiamo:
$ sudo --list
Conclusione
come funziona esattamente il programma sudo che può fare qualsiasi cosa? È più semplice di quanto pensi! Fare riferimento al seguente codice:
$ which sudo /usr/bin/sudo $ ls -l $(which sudo) -rwsr-xr-x 1 root root 145040 Jun 13 2022 /usr/bin/sudo
Notiamo che l'eseguibile binario sudo è in realtà un programma setuid-root! Quindi pensaci:ogni volta che esegui un programma con sudo, il processo sudo viene eseguito immediatamente con un privilegio di root, senza password, senza problemi. Ma, ovviamente, per sicurezza, l'utente deve inserire la password; una volta inserito correttamente, sudo continua l'esecuzione ed esegue il comando desiderato, come root. Se l'utente non riesce a inserire la password correttamente (in genere entro tre tentativi), sudo interrompe l'esecuzione.