
Su qualsiasi sistema GNU/Linux, il utente root È quella figura che tutti rispettano (e di cui dovreste avere un po' timore). È l'equivalente dell'"amministratore" in altri sistemi, con la differenza che qui i permessi sono così ampi che un comando scritto male può mandare in tilt il sistema in pochi secondi. Per comprendere appieno cosa sia l'utente root, quali siano i privilegi di root e come gestirli. Fa la differenza tra un sistema stabile e uno che si rompe alla minima provocazione.
Inoltre, ogni distribuzione ha un modo particolare di gestire questi privilegi. Ubuntu, Debian, Void, openSUSE e altre distribuzioni Non si comportano esattamente allo stesso modo con l'account root, con gruppi come ruota o con il file sudoersSe gestisci server (VPS, cloud o dedicati) o semplicemente desideri gestire il tuo sistema Linux con facilità, ti sarà utile capire come funzionano l'utente root e il comando `root`. sudo, l'uso di su e la gestione delle autorizzazioni amministrative.
Che cos'è esattamente l'utente root in Linux?
In Linux e in altri sistemi simili a UNIX, l'utente root è l'account con UID 0L'identificativo speciale che garantisce il pieno controllo del sistema. Questo account è solitamente associato anche al ID 0 (gruppo principale) root), che consente di leggere, modificare o eliminare qualsiasi file, gestire i processi, cambiare i permessi e accedere a qualsiasi sezione del file system, senza restrizioni.
Quando parliamo di “essere radice”, ci riferiamo a accedi o ottieni una shell che viene eseguito con UID 0. Non si tratta semplicemente di "avere più permessi": si tratta di utilizzare l'account che ha potere assoluto sul sistemaTutto ciò che fai sotto quell'identità viene eseguito senza barriere.
Questa è un'altra questione. avere privilegi di rootCiò significa che il tuo utente normale (ad esempio, con UID 1000) può, tramite strumenti come sudoQuesto permette di eseguire determinati comandi "come se si fosse root", senza che l'identità della sessione cambi in modo permanente. In pratica, è possibile svolgere le stesse attività amministrative, ma in tempi più controllati e con una migliore tracciabilità.
Differenza tra essere root e avere privilegi di root
È importante separare chiaramente i concetti, perché Accedere come root non è la stessa cosa che eseguire qualcosa con i privilegi di root.È qui che entrano in gioco sia l'account UID 0 sia i meccanismi di escalation dei privilegi (sudo, su, gruppi come wheel, ecc.).
Quando Tu sei l'utente root (UID 0, GID 0) e fai un idVedrai qualcosa del genere:
uid=0(root) gid=0(root) groups=0(root)
Questo indica che la sessione corrente appartiene a root e che tutto ciò che eseguirai avrà tali permessi. Non è necessario digitare nulla. sudo davanti al nulla: qualsiasi comando ha carta biancaEcco perché è così pericoloso rimanere troppo a lungo in un guscio di radice.
Tuttavia, quando si utilizza sudoNormalmente, manterrai il tuo utente "normale" (ad esempio, UID 1000), ma il comando verrà eseguito temporaneamente come UID 0. Se esegui:
sudo apt update
La tua sessione rimane quella del tuo utente, ma solo quel comando specifico Viene eseguito con privilegi di amministratore. Lo stesso vale se si avvia:
sudo systemctl restart apache2
In entrambi i casi, l'identità mostrata nei log di autenticazione indica quale utente ha utilizzato sudo, che contribuisce tracciabilità e responsabilità individuale.
Il caso di Wheel, Sudoers e dei gruppi dirigenziali
In alcune distribuzioni (come Void Linux o molti derivati BSD) c'è un gruppo ruota, che viene utilizzato per controllare chi può usare sudoIn altri (come Ubuntu e Debian nella loro configurazione tipica) il gruppo viene utilizzato sudo per concedere tale possibilità. Ogni distribuzione lo organizza a modo suo, ma l'idea è la stessa: solo gli utenti che appartengono a determinati gruppi possono elevare i propri privilegi.
Se Void Linux ti dice di aggiungere il tuo utente a ruotaLa cosa normale da fare sarebbe eseguire qualcosa del genere:
sudo usermod -aG wheel tu_usuario
Quindi, quando lo fai idDovresti vedere il gruppo di ruote elencato tra i sottogruppi. Se non appare, potrebbe essere che La modifica non verrà applicata finché non effettuerai il logout.o che il sistema gestisce l'accesso in un modo leggermente diverso (ad esempio, facendo affidamento su PAM o su una configurazione specifica di sudo o su (ciò non richiede l'inclusione di una ruota in tutti i casi).
Nei sistemi come Ubuntu o Debian, il gruppo chiave è solitamente sudoPer aggiungere un utente:
sudo adduser nombre_de_usuario sudo
Il livello di controllo più preciso si ottiene modificando il file / etc / sudoers (o file in /etc/sudoers.d/) sempre utilizzando visudocosì puoi definire quali comandi specifici ciascun utente o gruppo può eseguire. con privilegi di root, invece di concedere completa libertà d'azione.
Root in Ubuntu: politica di sicurezza e utilizzo di sudo
Ubuntu segue una filosofia piuttosto chiara: L'account root esiste, ma non viene utilizzato per accedere direttamente.Al momento dell'installazione del sistema, root ha UID 0, come in qualsiasi sistema UNIX, ma non gli viene assegnata una password utilizzabile per l'accesso. Invece, l'uso intensivo di sudo.
Ciò significa che, per impostazione predefinita, Non è possibile accedere al TTY o all'interfaccia grafica come root con una passwordperché non è stata configurata alcuna password per quell'utente. Questa decisione riduce la superficie di attacco contro i tentativi di forza bruta e impedisce alle persone di passare inutilmente tutta la giornata lavorando come root.
Il flusso "normale" in Ubuntu è: accedi con il tuo utente, quell'utente appartiene al gruppo sudoE quando devi fare un po' di amministrazione, esegui il comando con sudo e tu scrivi la tua passwordNon l'account root. In questo modo, il sistema registra chi ha fatto cosa, quando e con quale comando.
Se in qualsiasi momento desideri una shell completa come root (ad esempio, per eseguire una serie di operazioni in successione), puoi utilizzare:
sudo -i
sudo su -
Entrambi te ne daranno uno shell root interattivaQuesto solitamente carica l'ambiente di login dell'utente. Per uscire da questa modalità, è sufficiente eseguire exit o premere Ctrl + D.
L'utente root è sempre disponibile?
La distribuzione non ha importanza: L'account root esiste sempre internamente perché è quello con UID 0. Ciò che cambia a seconda della distribuzione è se quell'account ha una password valida o meno, se è consentito l'accesso diretto o meno e in quali condizioni può essere utilizzato.
Nel caso di openSUSE (ad esempio, Tumbleweed), durante l'installazione è tecnicamente possibile lasciare vuota la password di root o configurare il sistema in modo che l'utente normale abbia privilegi amministrativi utilizzando sudoCiò può causare non sono sicuro che il root sia "attivo" Oppure no. Ma l'account root è sempre presente; è solo che... non puoi autenticarti con esso perché non è stata impostata una password o perché il sistema la blocca tramite PAM o criteri di accesso.
quando usi su Per passare a root e inserire la password utente invece della password di root, normalmente dovrai non funzionaa meno che la distribuzione non lo abbia configurato su per accettare la password dell'utente sudoer invece di quella di root (meno comune), più comunemente, su Chiederà la password dell'utente di destinazione, ovvero la password di root se si esegue un semplice su.
Inoltre, se noti che quando fai su Per diventare root, la tua shell continua a leggere funzioni o alias dal tuo utente normale; potresti utilizzare una variante come su senza trattino (su contro su -), il che lo rende L'ambiente di login root non si carica completamenteEcco perché puoi continuare a usare il tuo .bashrc o la tua configurazione zsh, generando errori in funzioni che non esistono per l'account root.
Accesso remoto come root tramite SSH
In molti server, quando noleggi un VPS o un server dedicato, il fornitore ti dà Accesso SSH diretto come rootcon una password o, ancora meglio, con una chiave SSH. Da un sistema Linux, la connessione è semplicissima:
ssh root@IP-del-servidor
In Windows è comune utilizzare un client come PuTTYÈ sufficiente inserire l'indirizzo IP del server nell'apposito campo. Host Name, clicca su Apri e, quando appare la finestra del terminale, Accedi come root con la password fornita. oppure con il tasto configurato.
Puoi anche connetterti con qualsiasi altro utente sul server e, una volta dentro, eleva i privilegi di root con sudo o su se tale utente appartiene ai gruppi appropriati o ha la configurazione corrispondente in /etc/sudoersIn tal caso, si lavora con autorizzazioni limitate finché non è necessario eseguire un'attività amministrativa specifica.
Rischi derivanti dall'uso improprio di Root
I privilegi di root sono incredibilmente utili, ma anche un'arma a doppio taglio. Qualsiasi errore di battitura o comando frainteso Ciò può comportare la perdita totale dei dati, l'instabilità del sistema o la presenza di falle di sicurezza che rendono il computer vulnerabile.
Uno dei pericoli più evidenti è eliminazione o modifica accidentale dei file di sistemaCome root, non esiste "Sei sicuro?" né il cestino. Un comando come:
sudo rm -rf /
oppure una variante con errori di ortografia (con il percorso sbagliato, uno spazio in più, un carattere jolly fuori posto...) può Elimina metà del file system senza chiedere confermaE la guarigione, se possibile, è solitamente complicata e molto parziale.
C'è anche la questione dell'esecuzione script scaricati da Internet con permessi di rootSe uno script è dannoso o programmato male, può eliminare file sensibili, modificare impostazioni critiche, installare malware, disabilitare le difese o aggiungere backdoor a tua insaputa. E se lo hai avviato con sudoGli hai concesso permessi illimitati.
Negli ambienti con più server (produzione, test, sviluppo), lavorare come root su più terminali contemporaneamente aumenta il rischio di eseguire un comando sulla macchina sbagliataUn semplice riavvio o una cancellazione effettuata per errore in ambiente di produzione possono mettere offline un servizio e causare un grave problema.
Per peggiorare le cose, quando ci si abitua a lavorare sempre come root, è facile rilassarsi troppo e non ricontrollare ciò che scriviRidurre il tempo trascorso con privilegi elevati e rivedere attentamente i comandi prima di premere Invio è fondamentale per evitare di commettere errori.
Accesso root e sicurezza: attacchi, registri e audit
Dal punto di vista della sicurezza, il root è un singolo punto di erroreSe un utente malintenzionato ottiene i privilegi di root (rubando le credenziali, sfruttando una vulnerabilità o inducendo l'utente a eseguire un programma dannoso), acquisisce il controllo completo della macchina.
Sui server esposti a Internet, abilitare l'accesso root diretto tramite SSH utilizzando solo una password significa aprire la porta a attacchi continui di forza brutaI bot automatizzati tentano di accedere come root Verifichiamo costantemente le combinazioni di password. Se la password è debole o viene riutilizzata per altri servizi, sei nei guai.
Inoltre, se si lavora sempre come root, qualsiasi applicazione vulnerabile in esecuzione con tale identità (un browser, un server web mal configurato, ecc.) può fungere da punto di ingresso. Non appena tale applicazione viene compromessa, l'attaccante eredita tutti i permessi.
Un altro problema importante è il mancanza di tracciabilitàQuando si utilizza sudo, le azioni amministrative vengono registrate /var/log/auth.log o nella rivista (journalctl): quale utente ha lanciato quale comando e quando. Se, d'altra parte, tutti accedono direttamente come root, i log indicano solo "root ha fatto questo", senza essere in grado di determinare chi c'era effettivamente dietro.
Negli ambienti in cui sono richiesti standard di sicurezza (ISO 27001, PCI DSS e simili), la tracciabilità e la responsabilità individuale sono fondamentali. Lavorare sempre come root senza usare sudo rende più difficili i controlli.Ciò complica la risoluzione dei problemi e spesso va contro le migliori pratiche richieste da molti framework di conformità. Inoltre, l'uso di hardware sicuro come dev-tpm0 e TPM Può rafforzare l'integrità e la verificabilità del sistema.
Metodi per ottenere i privilegi di root
In pratica, la maggior parte delle distribuzioni moderne utilizza tre meccanismi principali per accedere ai privilegi di amministratore: sudo, su e accesso diretto (locale o remoto). Ciascuna opzione presenta contesti e rischi specifici.
Per eseguire un singolo comando con privilegi di root, il metodo più comune è il seguente:
sudo comando argumentos
Ad esempio:
sudo apt update
sudo apt install firefox
sudo systemctl restart apache2
sudo nano /etc/ssh/sshd_config
Con questo, Non si cambiano gli utenti in modo permanenteSolo quel comando viene eseguito con UID 0 e registra chi lo ha avviato. Per la maggior parte delle attività amministrative quotidiane, questa è l'opzione più sicura.
Se hai bisogno di una sessione root più persistente perché intendi eseguire diversi comandi in sequenza, puoi utilizzare:
sudo -i
sudo su -
Questi comandi ti danno una shell di root, caricando in genere l'ambiente di login di root (variabili, PATH, ecc.). Questo è molto comodo per certe attività lunghe, ma È meglio abbandonare quella modalità non appena hai finito. con exitMeno tempo si trascorre come utente root, minore è la probabilità di commettere errori.
Abilita e gestisci la password di root
In Ubuntu e in altre distribuzioni, sebbene sia sconsigliato, è possibile assegnare una password all'account root per consentirne l'utilizzo diretto. Il comando tipico è:
sudo passwd root
Il sistema richiederà prima la password dell'utente (per convalidare l'uso di sudo) e poi ti chiederà due volte la nuova password che vuoi assegnare a root. Da quel momento in poi, L'utente root avrà una password definita E, se le politiche di autenticazione lo consentono, potresti accedere localmente o utilizzare su inserendo quel tasto. Su dispositivi come Raspberry Pi, ad esempio, è consigliabile modificare la password predefinita.
Se in qualsiasi momento lo desideri blocca l'accesso root Senza eliminare l'account, puoi:
sudo passwd -l root
Questa operazione disabilita la password (senza rimuoverla completamente), impedendo l'accesso diretto. Per ripristinare l'impostazione:
sudo passwd -u root
In ogni caso, soprattutto con Ubuntu, la raccomandazione generale è Non utilizzare l'utente root con password per le attività quotidiane.È molto più sensato continuare a lavorare con il proprio account utente normale e utilizzare sudo solo quando necessario.
Configurazione SSH per consentire o negare l'accesso come root
Per motivi di sicurezza, molte installazioni di server includono Accesso root tramite SSH disabilitatoPer modificare questo comportamento (sebbene non sia l'ideale), è necessario modificare il file di configurazione di OpenSSH: /etc/ssh/sshd_config.
La procedura tipica è:
- Assicurati che l'utente root abbia una password Se intendi utilizzare questo metodo di autenticazione:
sudo passwd root. - Modifica le impostazioni SSH con privilegi di root:
sudo nano /etc/ssh/sshd_config - Individuare (o aggiungere) la direttiva
PermitRootLogine impostarlo inyesse si desidera consentire l'accesso root diretto con una password. - Riavvia il servizio SSH per applicare le modifiche:
sudo systemctl restart ssh(osshd(a seconda della distribuzione).
La cosa più sensata da fare, se hai bisogno di un po' di flessibilità senza aprire troppo la porta, è usare PermitRootLogin proibisci-password così che solo coloro che accettano autenticazione a chiave e non tramite password. Tuttavia, l'opzione preferita è solitamente quella di accedere come utente normale e quindi utilizzare sudo.
Se vuoi rafforzare la sicurezza, inverti semplicemente questi passaggi: in sshd_config pones PermitRootLogin no, riavvia il servizio e, se vuoi, blocca l'account root con sudo passwd -l rootCiò li costringe a Tutte le operazioni di amministrazione remota devono essere eseguite tramite utenti specifici con privilegi sudo.Come misura complementare, si consiglia di utilizzare dm-verity su Linux per proteggere l'integrità del sistema.
Modifica il file sudoers e concedi i permessi di root ad altri utenti.
Ci sono momenti in cui è necessario che un utente appena creato sia in grado di eseguire i comandi come rootAd esempio, immagina di aver creato un utente testftp con useradd o adduserMa quando provi a usare sudo Visualizzerai il seguente messaggio: testftp is not in the sudoers file.
Il modo "rapido" in molte distribuzioni basate su Debian/Ubuntu è aggiungere l'utente al gruppo sudo:
sudo adduser testftp sudo
In altri ambienti, o se si desidera un controllo più preciso, è possibile modificare il file. /etc/sudoers (oppure aggiungi un file specifico in /etc/sudoers.d/) sempre utilizzando:
sudo visudo
All'interno, puoi aggiungere una riga che copia il modello radice ma per quell'utente:
testftp ALL=(ALL:ALL) ALL
Con questo, testftp sarà in grado di eseguire qualsiasi comando come root. Utilizzando sudo, proprio come con i privilegi di root (ma con tracciabilità). Se hai bisogno di restrizioni più severe, puoi limitare i comandi consentiti, richiedere l'utilizzo di un TTY, imporre l'inserimento della password, ecc.
Sui server più sensibili, è prassi comune non concedere "poteri completi" a nessun utente del gruppo sudo, ma piuttosto definire in sudoers esattamente cosa si può e cosa non si può fareAd esempio, consentendo la gestione solo di un servizio specifico o di determinati script amministrativi.
Una volta modificato e salvato con visudoL'utente interessato non dovrebbe più visualizzare l'errore "non presente nel file sudoers" e sarà in grado di elevare i propri privilegi in modo controllato.
Procedure consigliate quando si utilizzano i privilegi di root e sudo
Lavorare con i privilegi di root non significa solo sapere quali comandi usare, ma anche adottare abitudini di sicurezza sensateAlcuni consigli fondamentali da tenere a mente:
Innanzitutto, prova Utilizzare sudo solo per comandi specifici. Quando possibile. Meno tempo si trascorre in una shell con privilegi di root, minore è la probabilità di commettere errori gravi. Una breve serie di comandi con `sudo` è generalmente più sicura che aprire una sessione root e dimenticare di disconnettersi.
Se hai bisogno di usare sudo -i o sudo su -Fallo solo quando sei sicuro di dover eseguire una serie di attività amministrative una dopo l'altra. Non appena hai finito, esci come root. con exitLasciare una sessione root aperta in background, soprattutto su una macchina condivisa o su un desktop accessibile, aumenta notevolmente il rischio.
Non aprire mai un browser, un client di posta elettronica o documenti sospetti da una sessione root. Qualsiasi vulnerabilità che interessi queste applicazioni potrebbe essere pericolosa. Erediterà le autorizzazioni dell'account che le esegue.Ogni volta che interagisci con contenuti non attendibili, fallo come un normale utente.
Un altro punto chiave è Non eseguire script sconosciuti con sudo senza prima leggerli. Se qualcuno ti dice di "incollare questo curl | sh con sudo" e tu lo fai senza guardare, gli stai dando le chiavi del tuo sistema. Apri lo script in un editor di testo, controlla cosa fa, da dove proviene e, se non lo capisci o non ti fidi, non eseguirlo.
Quando possibile, scarica software e script da fonti ufficiali o altamente autorevoliVerifica i checksum, se disponibili, e, in caso di dubbio, esegui prima un test in una macchina virtuale o in un container che puoi eliminare se qualcosa va storto.
Infine, approfitta dell'archivio /etc/sudoers applicare il principio del privilegio minimoConcede a ciascun utente solo i permessi necessari, niente di più, e registra tutte le azioni con sudo, permettendoti di verificare cosa ha fatto ogni persona in caso di problemi.
Comprendere cosa sia l'utente root, in che modo i privilegi di root differiscono da quelli dell'account UID 0 e utilizzare strumenti come sudo, su, gruppi admin e configurazione SSHÈ possibile gestire qualsiasi sistema Linux con molta più sicurezza e tranquillità, evitando inutili preoccupazioni e sapendo sempre chi ha fatto cosa e con quali permessi.
