Sudo vs SU: che differenze ci sono?
Questo mio vecchio post racchiude una spiegazione davvero esaustiva sulle differenze tra il comando Sudo ed il comando SU per Linux. E’ molto importante conoscerne le differenze: riprendiamolo da dove l’avevo lasciato!
Su Linux diventare superutente è fondamentale. Se non avete i “poteri da superuente” non potrete compiere anche operazioni di livello comune. Sudo e SU non sono la stessa cosa, andiamo a subito a vedere perché.
Il comando su: Come funziona?
Il comando su serve per diventare un superutente, ereditandone identificativo, identificativo del gruppo, privilegi, permessi d’esecuzione e di navigazione ed in alcuni casi anche variabili d’ambiente, aliases, path predefiniti e quant’altro all’interno di una shell o di un terminale virtuale. La sua sintassi di base è
su nomeutente
Se usato senza parametri il nomeutente viene impostato automaticamente a “root”, per cui digitare:
su root
e digitare invece:
su
portano allo stesso risultato: dopo la richiesta della password si diventa letteralmente l’utente root, senza quindi restrizioni di alcun tipo sul sistema. E’ possibile uscire dalla sessione inizializzata con “su” utilizzando il comando exit.
Il comando SUDO: sono così differente?
Il comando sudo, sebbene nelle più comuni configurazioni di sistema si utilizzi per guadagnare privilegi di root (e non diventare l’utente root, attenzione), ha un utilizzo molto più complesso. Infatti permette di ottenere particolari privilegi, in accordo con quanto definito nel suo file di configurazione (/etc/sudoers), non appartenenti di default alla propria tipologia di utente. La sua sintassi di base è:
sudo comando_da_eseguire
Notate già qui la prima differenza rispetto a su: il comando sudo ha come input un comando (e non un utente), e come vi ho già accennato prima, permette di eseguire il comando passato in input con i privilegi definiti nel file /etc/sudoers, impostando provvisoriamente (di default per 15 minuti salvo diversa direttiva) alcuni particolari bit per far sì che ciò accada. In sostanza il comando sudo vi permette di fare ciò che fa un utente “privilegiato” senza il bisogno di possedere la password di root. Di norma, infatti, la password per l’esecuzione dei comandi attraverso “sudo” coincide con la password utente.
Il file /etc/sudoers, in particolare, permette di definire quali utenti possano ottenere privilegi di root invocando il comando “sudo” e permette inoltre di definire nel dettaglio quali comandi possano essere eseguiti da tali utenti in caso di accesso privilegiato.
Ma ecco la vera differenza tra i due comandi
La differenza sta proprio nella modalità di esecuzione dei comandi: con su voi potrete diventare root, con sudo invece potrete agire con privilegi di utente root senza però possederne le credenziali d’accesso. In termini di sicurezza, specie se in un sistema multi-utente, è bene configurare a dovere il file /etc/sudoers per decidere quale utente può ottenere privilegi di root su determinati (o tutti i) comandi anziché mettere a disposizione la password di root a chiunque.
Un esempio: immaginate di gestire un server, di aver bisogno di una mano per eseguire i piccoli task giornalieri e di assumere uno smanettone per farlo. Se voi deste allo smanettone la password di root, nel momento in cui costui smetterà di lavorare per voi sareste costretti a cambiarla (con tutte le conseguenze del caso); se, invece, gli permetteste di eseguire azioni privilegiate tramite il comando “sudo”, qualora lo smanettone smettesse di lavorare per voi vi basterà eliminare il suo nome utente dal file /etc/sudoers ed eliminare successivamente il suo account.
In Ubuntu esiste solo “SUDO” ma non “SU”. Perché?
Per impostazione predefinita in Ubuntu non è impostata password di root, ragion per cui l’account root è inizialmente inutilizzabile ed il comando “su”, semplicemente, non vi permetterà di accedervi. Riuscite comunque ad eseguire comandi con permessi elevati poiché il vostro account (o qualsiasi account di tipo “Amministratore” presente nel sistema) si trova nel file /etc/sudoers ed è configurato per eseguire qualsiasi comando con privilegi di root.
In realtà, leggendo con più attenzione la pagina di manuale, scoprirete che è possibile diventare “materialmente” root anche in Ubuntu utilizzando soltanto il comando “sudo”: vi ho già detto che per impostazione predefinita l’utente di tipo “Amministratore” può eseguire tutti i comandi di sistema con privilegi elevati, per cui vi basterà seguire una shell utilizzando un preciso parametro di sudo:
sudo -s
Se tutto ciò non dovesse bastarvi e voleste comunque abilitare l’account root (NON fatelo, vi ripeto NON fatelo, a meno che non vogliate cimentarvi in una modifica matta e disperata di /etc/sudoers, in tal caso l’account root potrebbe salvarvi la vita in caso di errore) anche su Ubuntu, tutto ciò che dovrete fare sarà invocare il comando passwd attraverso sudo:
sudo passwd
A quel punto vi sarà prima chiesta la vostra password utente, dopodiché dovrete impostare e ripetere la password dell’utente root. Fatto ciò, potrete utilizzare il comando “su” anche in Ubuntu. Per favore, non fatelo. E’ troppo pericoloso.
Voglio approfondire tutta la faccenda! Suggerimenti?
Per approfondire il tutto, vi consiglio di leggere le pagine di manuale di entrambi i comandi (man su e man sudo | qui).
Sono pazzo. Voglio personalizzare quel file per ottenere dei permessi ROOT perenni. Accorgimenti?
Prima di modificare /etc/sudoers, seguite alcune raccomandazioni:
1) Abilitate l’account root se disabilitato e/o accertatevi che la password sia esatta e funzionante: se sbagliate con sudoers, l’unico modo di poter guadagnare privilegi elevati e rimetterlo a posto sarà proprio diventare l’utente root;
2) Leggete attentamente guide e pagine di manuale adatte allo scopo e valutate i pro e i contro prima di salvare qualsiasi modifica: un errore potrebbe costarvi molto caro.
3) Utilizzate il comando “visudo” per modificare il file sudoers; non potrà certo salvarvi dal commettere errori logici però quantomeno vi segnalerà eventuali errori di sintassi (utilissimo).
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.