Linux Guide · 8 min read · Dec 16, 2025

Guida per principianti alla comprensione di sudo su Ubuntu

Hai mai ricevuto un errore ‘Permesso negato’ mentre lavoravi sulla riga di comando di Linux? È probabile che tu stesse cercando di eseguire un’operazione che richiede permessi di root. Ad esempio, lo screenshot seguente mostra l’errore che è stato generato quando stavo cercando di copiare un file binario in una delle directory di sistema:

permesso negato sulla shell

Qual è quindi la soluzione a questo problema? Semplice, usa il comando sudo.

eseguire comando con sudo

L’utente che esegue il comando verrà invitato a inserire la propria password di accesso. Una volta inserita la password corretta, l’operazione verrà eseguita con successo.

Sebbene sudo sia senza dubbio un comando fondamentale per chiunque lavori sulla riga di comando in Linux, ci sono diversi altri dettagli correlati (e approfonditi) che dovresti conoscere per utilizzare il comando in modo più responsabile ed efficace. Ed è esattamente di questo che parleremo qui in questo articolo.

Ma prima di procedere, vale la pena menzionare che tutti i comandi e le istruzioni menzionati in questo articolo sono stati testati su Ubuntu con la shell Bash.

Cos’è sudo?

Il comando sudo, come la maggior parte di voi già saprà, viene utilizzato per eseguire un comando con privilegi elevati (di solito come root). Un esempio di questo è già stato discusso nella sezione introduttiva sopra. Tuttavia, se lo desideri, puoi utilizzare sudo per eseguire il comando come un altro utente (non root).

Questo si ottiene attraverso l’opzione della riga di comando -u che lo strumento fornisce. Ad esempio, nell’esempio mostrato di seguito, ho provato a rinominare un file nella home directory di un altro utente (howtoforge), ma ho ricevuto un errore ‘permesso negato’. E poi ho provato lo stesso comando ‘mv’ con ‘sudo -u howtoforge’, il comando ha avuto successo:

Cos'è sudo

Qualsiasi utente può usare sudo?

No. Affinché un utente possa utilizzare sudo, deve esserci un’entrata corrispondente a quell’utente nel file /etc/sudoers. Il seguente paragrafo - tratto dal sito web di Ubuntu - dovrebbe chiarirlo ulteriormente:

Il file /etc/sudoers controlla chi può eseguire quali comandi come quali utenti su quali macchine e può anche controllare cose speciali come se hai bisogno di una password per comandi particolari. Il file è composto da alias (fondamentalmente variabili) e specifiche utente (che controllano chi può eseguire cosa).

Se stai usando Ubuntu, è facile assicurarti che un utente possa eseguire il comando sudo: tutto ciò che devi fare è rendere quel tipo di account utente ‘amministratore’. Questo può essere fatto andando su Impostazioni di sistema… -> Account utente.

utenti sudo

Sbloccando la finestra:

finestra di sblocco

Poi selezionando l’utente il cui tipo di account desideri cambiare, e poi cambiando il tipo in ‘amministratore’

scegli account sudo

Tuttavia, se non sei su Ubuntu, o la tua distribuzione non fornisce questa funzionalità, puoi modificare manualmente il file /etc/sudoers per apportare la modifica. Dovrai aggiungere la seguente riga in quel file:

[user]    ALL=(ALL:ALL) ALL

Non è necessario dire che [user] dovrebbe essere sostituito con il nome utente dell’account a cui stai concedendo il privilegio sudo. Una cosa importante da menzionare qui è che il metodo ufficialmente suggerito per modificare questo file è tramite il comando visudo - tutto ciò che devi fare è eseguire il seguente comando:

sudo visudo

Per darti un’idea del perché sia così, ecco un estratto dal manuale di visudo:

visudo modifica il file sudoers in modo sicuro. visudo blocca il file sudoers contro modifiche simultanee multiple, fornisce controlli di sanità di base e verifica errori di analisi. Se il file sudoers è attualmente in fase di modifica, riceverai un messaggio per riprovare più tardi.

Per ulteriori informazioni su visudo, vai qui.

Cos’è una sessione sudo?

Se utilizzi frequentemente il comando sudo, sono sicuro che avrai notato che dopo aver inserito correttamente la password una volta, puoi eseguire più comandi sudo senza essere invitato a inserire la password. Ma dopo un po’, il comando sudo richiede di nuovo la tua password.

Questo comportamento non ha nulla a che fare con il numero di comandi abilitati da sudo che esegui, ma dipende invece dal tempo. Sì, per impostazione predefinita, sudo non chiederà la password per 15 minuti dopo che l’utente l’ha inserita una volta. Dopo questi 15 minuti, ti verrà chiesta di nuovo la password.

Tuttavia, se lo desideri, puoi cambiare questo comportamento. Per questo, apri il file /etc/sudoers utilizzando il seguente comando:

sudo visudo

E poi vai alla riga che legge:

Defaults env_reset

env_reset

e aggiungi la seguente variabile (evidenziata in grassetto qui sotto) alla fine della riga

Defaults env_reset,timestamp_timeout=[new-value]

Il campo [new-value] dovrebbe essere sostituito con il numero di minuti che desideri che la tua sessione sudo duri. Ad esempio, ho usato il valore 40.

valore timeout sudo

Nel caso in cui tu voglia essere invitato a inserire la password ogni volta che usi il comando sudo, in tal caso puoi assegnare il valore ‘0’ a questa variabile. E per coloro di voi che vogliono che la loro sessione sudo non scada mai, possono assegnare il valore ‘-1’.

Si prega di notare che l’uso di timestamp_timeout con valore ‘-1’ è fortemente sconsigliato.

La password sudo

Come avrai notato, ogni volta che sudo ti chiede una password e inizi a inserirla, non appare nulla - nemmeno asterischi, che di solito è la norma. Anche se non è un grosso problema in generale, alcuni utenti potrebbero voler avere gli asterischi visualizzati per qualsiasi motivo.

La buona notizia è che è possibile ed è abbastanza facile da fare. Tutto ciò che devi fare è cambiare la seguente riga nel file /etc/sudoers:

Defaults        env_reset

in

Defaults        env_reset,pwfeedback

E salva il file.

Ora, ogni volta che digiterai la password sudo, apparirà un asterisco.

nascondere la password sudo

Alcune importanti opzioni della riga di comando sudo

Oltre all’opzione della riga di comando -u (di cui abbiamo già discusso all’inizio di questo tutorial), ci sono alcune altre importanti opzioni della riga di comando sudo che meritano di essere menzionate. In questa sezione, discuteremo alcune di esse.

L’opzione -k

Considera un caso in cui hai appena eseguito un comando abilitato da sudo dopo aver inserito la tua password. Ora, come già sai, la sessione sudo rimane attiva per 15 minuti per impostazione predefinita. Supponiamo che durante questa sessione tu debba dare a qualcuno accesso al tuo terminale, ma non vuoi che possano utilizzare sudo. Cosa farai?

Fortunatamente, esiste un’opzione della riga di comando -k che consente agli utenti di revocare il permesso sudo. Ecco cosa dice la pagina man di sudo su questa opzione:

-k, --reset-timestamp  
Quando usato senza un comando, invalida le credenziali memorizzate nella cache dell'utente. In altre parole, la prossima volta che viene eseguito sudo sarà richiesta una password. Questa opzione non richiede una password ed è stata aggiunta per consentire a un utente di revocare i permessi sudo da un file .logout.  
Quando usato in combinazione con un comando o un'opzione che potrebbe richiedere una password, questa opzione farà sì che sudo ignori le credenziali memorizzate nella cache dell'utente. Di conseguenza, sudo richiederà una password (se richiesta dalla politica di sicurezza) e non aggiornerà le credenziali memorizzate nella cache dell'utente.

L’opzione -s

Ci potrebbero essere momenti in cui il tuo lavoro richiede di eseguire un gran numero di comandi che necessitano di privilegi di root, e non vuoi inserire la password sudo di continuo. Inoltre, non vuoi modificare il limite di timeout della sessione sudo apportando modifiche al file /etc/sudoers.

In tal caso, potresti voler utilizzare l’opzione della riga di comando -s del comando sudo. Ecco come la pagina man di sudo lo spiega:

-s, --shell  
Esegui la shell specificata dalla variabile d'ambiente SHELL se è impostata o la shell specificata dall'entry del database delle password dell'utente invocante. Se viene specificato un comando, viene passato alla shell per l'esecuzione tramite l'opzione -c della shell. Se non viene specificato alcun comando, viene eseguita una shell interattiva.

Quindi fondamentalmente, ciò che fa questa opzione della riga di comando è:

  • Avvia una nuova shell - per quale shell, viene fatto riferimento alla variabile d’ambiente SHELL. Nel caso in cui $SHELL sia vuoto, viene utilizzata la shell definita nel file /etc/passwd.
  • Se stai anche passando un nome di comando insieme all’opzione -s (ad esempio: sudo -s whoami), allora il comando effettivo che viene eseguito è: sudo /bin/bash -c whoami.
  • Se non stai cercando di eseguire alcun altro comando (significa che stai solo cercando di eseguire sudo -s), allora ottieni una shell interattiva con privilegi di root.

Vale la pena tenere a mente qui che l’opzione della riga di comando -s ti dà una shell con privilegi di root, ma non ottieni l’ambiente root - è il tuo .bashrc che viene sorgente. Ciò significa che, ad esempio, nella nuova shell che esegue sudo -s, l’esecuzione del comando whoami restituirà comunque il tuo nome utente, e non ‘root’.

L’opzione -i

L’opzione -i è simile all’opzione -s di cui abbiamo appena discusso. Tuttavia, ci sono alcune differenze. Una delle differenze chiave è che -i ti dà anche l’ambiente root, il che significa che il tuo .bashrc (utente) viene ignorato. È come diventare root senza effettuare il login esplicitamente come root. Inoltre, non devi inserire nemmeno la password dell’utente root.

*Importante: Si prega di notare che esiste un comando su che ti consente anche di cambiare utente (per impostazione predefinita, ti consente di diventare root). Questo comando richiede di inserire la password ‘root’. Per evitare ciò, puoi anche eseguirlo con sudo (‘sudo su’); in tal caso dovrai solo inserire la tua password di accesso. Tuttavia, ‘su’ e ‘sudo su’ hanno alcune differenze sottostanti - per comprenderle e sapere di più su come ‘sudo -i’ si confronta con esse, vai qui.*

Conclusione

Spero che ormai tu abbia almeno compreso l’idea di base dietro sudo e come modificare il suo comportamento predefinito. Prova a fare le modifiche a /etc/sudoers che abbiamo spiegato qui, e dai un’occhiata alla discussione nel forum (collegata nell’ultimo paragrafo) per ottenere ulteriori informazioni sul comando sudo.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.