- Root è il superutente di Linux, con controllo totale sul sistema, a differenza degli account normali con permessi limitati.
- Sudo e su sono gli strumenti chiave per ottenere i privilegi di root: sudo per comandi specifici e su per cambiare utente.
- La configurazione in /etc/sudoers consente di definire chi può usare sudo, quali comandi può eseguire e se è richiesta o meno una password.
- L'uso imprudente di root può danneggiare seriamente il sistema, quindi è consigliabile limitarne l'uso diretto e affidarsi a sudo.

Se siete appena passati a GNU/Linux da Windows o macOS, una delle prime cose che dovreste capire è come funzionano i permessi e chi è il vero responsabile del sistema . Questo "capo supremo" si chiama root e, se non lo conoscete bene, è facile commettere un grave errore con un singolo comando.
L'idea di base è semplice: in Linux, non tutti gli utenti possono fare tutto. Esistono account normali con limitazioni e un account speciale con poteri assoluti. In questo articolo vedremo esattamente cos'è l'utente root in Linux, a cosa serve, come usarlo con saggezza e i rischi di un utilizzo imprudente . Esamineremo inoltre in dettaglio i comandi `sudo` e `su` , la gestione della password di root e alcuni consigli pratici.
Cos'è root in Linux e quali tipi di utenti ci sono?
In qualsiasi sistema Unix-like, incluso GNU/Linux, l' utente root è il superutente che può fare e annullare qualsiasi operazione desideri : leggere, modificare o eliminare qualsiasi file, installare o rimuovere software, cambiare i permessi, formattare i dischi o spegnere il computer quando lo ritiene opportuno.
Per capire perché esiste l'utente root, è utile distinguere tra i tipi di account che coesistono in un tipico sistema Linux . In linea generale, esistono tre categorie: utenti normali, l'utente root stesso e utenti di sistema speciali utilizzati da servizi e demoni.
Gli account utente normali sono destinati all'uso quotidiano : navigazione, programmazione, modifica di documenti, giochi... Hanno accesso limitato alle parti critiche del sistema, non possono installare pacchetti a livello globale né scrivere in directory come /etc , /usr o /var senza privilegi elevati.
All'estremo opposto troviamo l' utente root, equivalente all'amministratore di Windows, ma con una libertà d'azione ancora maggiore . Quasi nulla è precluso a questo utente: può modificare i file di sistema, manomettere il processo di avvio, modificare permessi e proprietà di qualsiasi elemento e persino cancellare l'intero file system con un singolo comando eseguito in modo errato.
Nel mezzo, esiste una categoria meno visibile: i cosiddetti utenti di sistema o di servizio (daemon) . Si tratta di account senza sessioni interattive, con autorizzazioni molto limitate, utilizzati per garantire che servizi come server web, database o daemon di sistema funzionino in modo più sicuro.
Come funzionano i permessi e il gruppo sudo
Per sua stessa natura, Linux prende molto sul serio la separazione dei privilegi: un utente normale non può modificare il sistema senza richiedere esplicitamente l'autorizzazione . Questo può risultare un po' spiazzante se si proviene da un sistema in cui il proprio account ha sempre i privilegi di amministratore.
Per consentire a un utente normale di eseguire occasionalmente attività amministrative, esiste lo speciale gruppo `sudo` . Qualsiasi account appartenente a questo gruppo può eseguire comandi specifici con privilegi di root utilizzando il comando `sudo`.
Aggiungere un utente al gruppo appropriato è molto semplice: basta eseguire un comando come `sudo usermod -aG sudo username` . Da quel momento in poi, quell'utente diventa un "sudoer" e può elevare i privilegi quando necessario.
Il comportamento previsto è che, eseguendo ad esempio il comando `sudo apt-get update` , il sistema chieda la password di quell'utente (non di root) e, se è corretta e autorizzata, esegua il comando con privilegi di amministratore.
Questo meccanismo consente di eseguire attività di manutenzione senza dover accedere come utente root . Infatti, in molte distribuzioni moderne, è il metodo consigliato e persino l'unico supportato di default per operare con privilegi elevati.
Cos'è la radice e a cosa serve nella pratica
Quando parliamo di utente root, ci riferiamo all'account che detiene tutti i privilegi amministrativi sul sistema . È essenziale per molte attività, ma il suo utilizzo diretto dovrebbe essere limitato perché un errore con questo account è solitamente irreversibile.
La buona notizia è che non è quasi mai necessario accedere direttamente come root: è possibile richiedere privilegi temporanei utilizzando sudo o su , eseguire ciò che serve e poi tornare a lavorare come utente normale.
Nell'uso quotidiano, gli usi più comuni della radice (direttamente o indirettamente) sono, tra gli altri, i seguenti:
- Installazione e rimozione del softwareQualsiasi gestore di pacchetti (apt, dnf, pacman, ecc.) necessita dei permessi di superutente per installare, aggiornare o eliminare programmi a livello di sistema.
- Modifica dei file di configurazione critici: file come / Etc / hosts, /etc/fstab, /etc/passwd oppure le configurazioni del servizio possono essere modificate solo con privilegi elevati.
- Modifica delle password degli account di sistema, inclusa la password di root: comandi come root passwd Richiedono autorizzazioni speciali per aggiornare il database delle password.
- Esecuzione di comandi potenzialmente distruttivi: strumenti come rm, chmod, chown o mkfs Possono distruggere il sistema se utilizzati in modo improprio; ecco perché richiedono privilegi per operare su percorsi sensibili.
- Azioni di gestione del sistemaRiavviare, spegnere, gestire i servizi, montare e smontare le partizioni, gestire utenti e gruppi... tutto questo richiede autorizzazioni di superutente.
Ogni volta che un'azione restituisce un messaggio di "permesso negato" , è molto probabile che eseguendo lo stesso comando con sudo o come root l'operazione venga completata senza problemi... se sia opportuno farlo o se sia sicuro è un'altra questione.
Comando sudo: esegui come root pur rimanendo te stesso
Il comando `sudo` è attualmente il metodo consigliato per eseguire un comando specifico con privilegi di superutente mantenendo la propria identità utente normale. È come ottenere i privilegi di root per qualche secondo.
Il suo utilizzo di base consiste nell'anteporre la parola `sudo` al comando che si desidera eseguire con privilegi elevati . Ad esempio, se si desidera installare un programma dai repository di una distribuzione basata su Debian, si digiterà qualcosa come `sudo apt install gparted`.
Quando esegui questa operazione, il sistema ti chiederà la password del tuo utente (se appartieni al gruppo sudoers). Non ti verrà richiesta la password di root, il che rappresenta un vantaggio significativo dal punto di vista della sicurezza, poiché nessuno ha bisogno di conoscere la password principale del sistema.
Una volta inserita la password e dopo la sua convalida, solo quel comando verrà eseguito con privilegi di root, dopodiché tornerai alle tue normali restrizioni . In altre parole, non diventerai root; eseguirai semplicemente un comando "per suo conto".
Inoltre, sudo prevede un "periodo di grazia" : per alcuni minuti dopo un utilizzo riuscito, in genere consente di eseguire altri comandi sudo senza che venga richiesta nuovamente la password. Questo è comodo, anche se alcuni lo considerano una piccola vulnerabilità di sicurezza perché, se qualcuno ottiene il controllo della sessione durante tale intervallo, potrebbe eseguire comandi pericolosi senza bisogno della password.
comando su: cambia utente (e diventa root)
Il comando `su` sta per "substitute user" (utente sostitutivo) ed è progettato per passare da un account utente all'altro dal terminale senza disconnettersi dalla sessione corrente . Apre una nuova shell con le credenziali di un utente diverso.
Se esegui semplicemente `su` senza argomenti, il sistema presuppone per impostazione predefinita che tu voglia diventare root . In tal caso, ti chiederà la password dell'account root e, se è corretta, ti mostrerà il prompt di superutente.
È possibile utilizzarlo anche per passare a un altro utente digitandone il nome utente . In tal caso, verrà richiesta la password di quell'utente specifico e, se la si inserisce correttamente, si otterrà la sua identità, ma si rimarrà nell'ambiente dell'utente precedente a meno che non si scelgano determinate opzioni.
Per "accedere come se si fosse effettuato l'accesso grafico" con quell'utente (ovvero, per caricare il suo ambiente, le variabili, la directory home, ecc.), si consiglia di utilizzare `su -` o `su -nomeutente` . L' opzione `-` (equivalente a `-l` o `-login` ) forza l'accesso alla shell di login.
Mentre sei connesso, tutti i comandi che eseguirai saranno eseguiti come l'utente a cui sei passato . Per tornare al tuo account originale, digita semplicemente `exit` , che ti riporterà alla shell precedente.
Ottieni una sessione root e confrontala con sudo
Sebbene non sia il metodo più sicuro, ci sono situazioni in cui può essere utile lavorare per un certo periodo con una shell root , ad esempio in attività di amministrazione o ripristino molto intensive.
Nelle distribuzioni in cui l'account root è abilitato, è sufficiente eseguire `su -` e inserire la password di root. Da quel momento in poi, vedrete il prompt cambiare, con il simbolo `$` sostituito dal simbolo `#` — un chiaro indicatore visivo che state giocando in modalità "tutto è permesso".
Sui sistemi simili a Ubuntu, dove l'utente root è bloccato per impostazione predefinita, è più comune utilizzare `sudo -i` . Questo comando fornisce una shell di login come root utilizzando la propria password (se si è autorizzati sudoers), senza dover ricordare una password diversa.
La differenza fondamentale con il sudo "normale" è che sudo -i ti mette in una sessione root persistente : puoi concatenare i comandi senza premettere sudo a ciascuno di essi, finché non digiti exit e torni al tuo utente.
In termini di sicurezza, è più sensato usare `sudo` per comandi specifici e riservare la shell di root solo a casi molto particolari. Più tempo si trascorre come root, più è facile eseguire accidentalmente qualcosa di pericoloso.
Il file /etc/sudoers e le impostazioni sudo avanzate
Dietro la magia di sudo si cela il file /etc/sudoers , che definisce chi può usare sudo, da dove e per eseguire quali comandi . Si tratta di un file delicato: modificarlo in modo errato può impedire di elevare i privilegi.
Pertanto, si raccomanda vivamente di utilizzare il comando visudo per modificarlo. Questo strumento apre il file /etc/sudoers nel vostro editor preferito e ne verifica la sintassi prima del salvataggio . In caso di errore, vi avviserà e vi impedirà di creare un file danneggiato.
In un sistema tipico, vedrai righe come `root ALL=(ALL:ALL) ALL` , che indicano che root può eseguire qualsiasi comando, come qualsiasi utente e gruppo, da qualsiasi host . Sono comuni anche le voci per gruppi speciali come `%sudo` o `%admin` , che consentono ai loro membri di utilizzare `sudo` .
Il file supporta gli alias per utenti, comandi e contesti di esecuzione , il che è molto utile per evitare di dover scrivere elenchi lunghissimi ogni volta. Ad esempio, è possibile raggruppare diversi utenti sotto un alias User_Alias e diversi comandi potenzialmente pericolosi sotto un alias Cmnd_Alias , e quindi definire regole come "questo gruppo di persone può eseguire questo set di comandi".
Esistono anche tag come NOPASSWD o NOEXEC che possono essere utilizzati per modificare il comportamento di sudo. Il più noto è NOPASSWD, che consente di eseguire determinati comandi con sudo senza richiedere la password , utile in automazioni o script in cui non è presente nessuno per digitare la password.
Consenti i comandi di root senza richiedere una password
In alcuni scenari molto specifici, potrebbe essere opportuno consentire a un utente di eseguire uno o più comandi con privilegi di root senza dover inserire una password . Ad esempio: spegnere il computer tramite un pulsante, ricaricare un modulo del kernel da uno script o eseguire un'attività pianificata.
Questo viene solitamente fatto creando un alias di comando in /etc/sudoers e includendo il tag NOPASSWD :. Un esempio classico potrebbe essere qualcosa come myuser ALL=NOPASSWD: /sbin/shutdown, /sbin/reboot , che autorizza quell'utente a spegnere o riavviare il sistema senza che sudo richieda la password.
È inoltre possibile definire alias utente (User_Alias) e alias di comando (Cmnd_Alias) per semplificare: ad esempio, raggruppando diversi utenti amministrativi in GROUP e diversi comandi di gestione dell'alimentazione in POWER, e quindi impostando GROUP ALL = NOPASSWD: POWER.
Il segreto è non esagerare assegnando NOPASSWD a tutto . Idealmente, limitatelo ai comandi strettamente necessari e, se possibile, a host o reti specifici utilizzando gli alias host.
Una piccola curiosità divertente: aggiungendo l' opzione `insults` alla riga `Defaults` in `sudoers`, è possibile fare in modo che `sudo` vi insulti educatamente in inglese quando inserite la password sbagliata . Non migliora la sicurezza, ma rende sicuramente l'esperienza più divertente.
Rischi derivanti dall'uso improprio di Root
Avere i privilegi di superutente è essenziale, ma usare l'utente root con noncuranza è il modo più rapido per mandare in tilt il sistema . Linux è progettato per essere robusto, ma se esegui tutto come root, cancelli file alla cieca o modifichi i permessi senza sapere cosa stai facendo, non ci saranno miracoli.
Uno dei pericoli più noti è la cancellazione accidentale di parti critiche del file system . Comandi come `rm -rf /` o `rm -rf /*` sono letali se eseguiti come root: in pochi secondi ci si può ritrovare senza un sistema operativo.
A volte il problema non è nemmeno un comando palesemente pericoloso, ma l'effetto di una variabile espansa in modo errato . Ad esempio, se si digita qualcosa come `rm -rf "$directory"/*` e la variabile è vuota a causa di un bug nello script, si potrebbe finire per eliminare una posizione che non si intendeva eliminare.
Un altro grave rischio è l'esecuzione di script o programmi di installazione scaricati da Internet con privilegi di root senza verificarne il contenuto . Se il contenuto è dannoso, un malintenzionato può installare rootkit, backdoor o spyware con accesso completo, infiltrandosi in profondità nel sistema e nascondendosi a livello del kernel.
Bisogna inoltre fare attenzione quando si modificano i permessi su percorsi sensibili con chmod o chown . Un comando come chmod 000 /etc/ o una modifica sostanziale a /boot o al bootloader (GRUB) può lasciare il sistema in uno stato tale da impedirne persino l'avvio, costringendovi a ricorrere a metodi di ripristino.
Per questi motivi, ogni volta che si lavora con sudo, su o root è una buona idea ricontrollare il comando, verificare il percorso con ls prima di usare rm e, in caso di dubbio, non eseguire nulla finché non si è sicuri di cosa accadrà.
Perché molte distribuzioni disabilitano la root per impostazione predefinita?
Distribuzioni come Ubuntu e altre derivate scelgono di bloccare l'account root fin dall'inizio e di delegare tutta l'amministrazione a sudo. Si tratta di una scelta progettuale volta a ridurre i rischi, soprattutto per gli utenti meno esperti.
Questo significa che, sebbene l'utente root esista internamente, non è possibile accedervi perché non dispone di una password valida . Pertanto, l'utente creato durante l'installazione viene automaticamente aggiunto al gruppo sudo.
Per l'uso quotidiano, questo non è un problema: è possibile installare programmi, aggiornare il sistema o modificare le impostazioni utilizzando `sudo` quando necessario . Questo impedisce agli utenti non autorizzati di accedere come root e lavorare permanentemente con permessi illimitati.
Tuttavia, se per qualche motivo hai bisogno di una password di root, puoi abilitare l'account impostando una password con `sudo passwd root` . Da quel momento in poi, puoi passare a root con `su` o persino accedere graficamente con quell'account (anche se quest'ultima opzione non è consigliata).
Se in seguito preferisci ripristinare il comportamento di sicurezza originale, puoi sempre bloccare nuovamente l'account con `sudo passwd -dl root` , il che impedirà l'utilizzo diretto dell'account anche se `sudo` continuerà a funzionare per gli utenti autorizzati.
Disabilitare temporaneamente l'account root
In ambienti in cui più persone utilizzano la stessa macchina, può accadere che la password di root finisca per circolare di mano in mano , aprendo la porta a modifiche indesiderate o installazioni di software incontrollate.
Un modo per mitigare questo problema è bloccare l'account root utilizzando `sudo passwd -l root` . Questo comando disabilita la password di root e impedisce agli utenti di accedere come root o di utilizzare `su a root` , pur consentendo a `sudo` di funzionare per coloro che appartengono al gruppo appropriato.
Quando si blocca l'accesso come root in questo modo, chiunque voglia eseguire attività amministrative dovrà utilizzare sudo con la propria chiave utente , il che lascia una traccia più chiara e riduce la necessità di condividere una password principale.
Se in futuro dovessi aver bisogno di utilizzare nuovamente l'account root con la relativa password, ti basterà impostarne una nuova con il comando `sudo passwd root` . Questo riattiverà l'account e ti permetterà di utilizzarlo come prima.
Questo approccio è particolarmente utile in computer condivisi, aule scolastiche o piccoli server, dove non è auspicabile che chiunque possa ottenere i privilegi di root senza controllo , ma è comunque consigliabile mantenere un meccanismo di amministrazione flessibile.
Recupera o ottieni la password di root
È possibile che tu abbia disabilitato l'account root o semplicemente dimenticato la sua password . Fortunatamente, la maggior parte delle distribuzioni Linux offre metodi di ripristino tramite il boot manager o utilizzando un LiveCD.
Un metodo comune consiste nell'utilizzare il menu GRUB . All'avvio del dispositivo, è possibile accedere alle opzioni avanzate e selezionare Modalità di ripristino . Da lì, di solito è presente un'opzione di root che apre una console di superutente con il sistema montato in modalità di sola lettura.
Per cambiare la password, è necessario montare la directory root con i permessi di scrittura utilizzando un comando simile a `mount -o rw,remount /` . Dopodiché, è sufficiente eseguire `passwd root` , inserire una nuova password e infine eseguire `sync` e `reboot` per salvare le modifiche e riavviare il computer.
Se questo metodo non funziona o preferisci un'altra opzione, puoi sempre utilizzare un LiveCD o una LiveUSB di qualsiasi distribuzione (ad esempio, Ubuntu). Avvia il computer dal supporto, scegli l'opzione "prova senza installare" e apri un terminale.
In quel terminale, per prima cosa si diventa temporaneamente root con `sudo su` . Quindi si usa `fdisk -l` per identificare la partizione in cui è installato Linux che si desidera riparare (ad esempio, `/dev/sda1`) e si crea un punto di mount come ` mkdir /mnt/recover` seguito da ` mount /dev/sda1 /mnt/recover`.
Successivamente, esegui `chroot /mnt/recover` per "accedere" a quel sistema come se fosse il tuo , e infine esegui `passwd root` per impostare una nuova password di superutente. Dopo essere uscito e riavviato, il sistema si avvierà con la password appena configurata.
Gestione quotidiana con root: esempio di file, permessi e comandi base
Al di là della pura teoria, i privilegi dell'utente root sono particolarmente evidenti quando si lavora nelle directory di sistema ed si eseguono operazioni di manutenzione . Se, ad esempio, si desidera spostare un font scaricato in una directory globale dei font, saranno necessari tali privilegi.
Immagina di avere un file chiamato Underdog (in formato ZIP e anche come cartella) nella cartella Download e di volerlo spostare in /usr/share/fonts/ . Poiché si tratta di un percorso protetto, dovrai utilizzare sudo cp o sudo mv per copiare o spostare questi file e cartelle nella destinazione.
Analogamente, per aggiornare il sistema dal terminale, si dovrebbe eseguire un comando come `sudo apt update` seguito da `sudo apt upgrade` sulle distribuzioni basate su Debian. Senza `sudo`, il gestore di pacchetti restituirà errori di autorizzazione quando si tenta di aprire i suoi file di stato.
Quando si naviga tra i percorsi di sistema, è molto utile padroneggiare comandi come ls, cp, mv, rm, chmod e chown . ls elenca il contenuto, cp e mv copiano o spostano, rm elimina, chmod modifica i permessi numericamente (ad esempio, 644 in modo che il proprietario possa leggere e scrivere e tutti gli altri possano solo leggere) e chown cambia il proprietario.
Operazioni come la modifica del proprietario di un file con il comando `chown`, assegnandolo al tuo utente normale, possono evitarti di dover usare costantemente `sudo`. In genere, si esegue un comando simile a `sudo chown debian:debian file` in modo che, da quel momento in poi, l'utente "debian" possa manipolare quel file senza privilegi elevati.
In breve, una solida comprensione di cosa sia l'utente root, di come interagiscono sudo e su, di come configurare /etc/sudoers e dei pericoli derivanti dall'abuso dei privilegi di superutente vi permetterà di sfruttare al meglio Linux senza mettere a rischio il sistema a ogni comando . Usato con saggezza, il superutente è uno strumento incredibilmente potente per la gestione di server e computer personali; usato in modo sconsiderato, è il modo più rapido per ritrovarsi a dover reinstallare tutto da zero.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.