Ed eccoci qui nella seconda lezione del corso sul terminale Linux. Prima di iniziare ti voglio ricordare che da questo indirizzo, potrai accedere a tutte le lezioni precedenti sul corso del terminale.
Inoltre ti voglio ricordare che questo corso è incentrato su Fedora. Però le nozioni che imparerai saranno, applicabili, ovviamente con qualche piccola modifica, anche su altre distribuzioni.
Detto questo iniziamo
Partiamo con lo spiegare le due terminologie che vedremo oggi.
SU: Super User, sta per super utente, o utente root
SUDO: Super User Do, sta per super utente esegui un comando (che dovrà essere specificato subito dopo il programma sudo).
Le caratteristiche del comando su
Su è un comando del terminale Linux. E’ un comando che permette di effettuare un vero e proprio login all’interno della propria finestra del terminale. Questo login si effettua per accedere ad un ulteriore account, chiamato root. L’account root è un account vero e proprio. Infatti se noi da terminale diamo il comando ls /, possiamo notare che oltre alla cartella Home (dove sono contenute le directory di tutti gli utenti registrati al computer) e alle altre directory di sistema, abbiamo una home alternativa, chiamata root.
Per dimostrare che noi stiamo effettuando un login vero e proprio, vi mostro questa cosa.
Se noi proviamo, con l’utente root (quindi dopo aver inserito su e password di root) a digitare da terminale:
nautilus /
PS: Nautilus è il nome del file manager di Gnome. Se voi avete altri file manager, scrivete il nome del file manager usato.
Abbiamo questo risultato
Possiamo notare che la directory root è segnata con l’icona della casa, in quanto quella è la home di root.
In sistema come Debian (o anche come Fedora stessa), è possibile all’avvio effettuare il login direttamente come root. Questo sistema è molto comodo, soprattutto nei server.
Questo per dirvi che root non è un solo comando, ma è un vero e proprio account nel computer.
Le caratteristiche del programma sudo
Come avrai potuto notare dal titolo di questo paragrafo, io ho descritto sudo non come un comando, ma come un programma. Esatto è un vero e proprio programma.
Lanciando il comando sudo –version, possiamo vedere anche la sua versione.
Questo programma può essere eseguito solo dagli utenti amministratori, quindi registrati nel file sudoers.
Digitando da root il seguente comando:
nano /etc/sudoers
Possiamo andare a vedere se il proprio utente è registrato nella lista degli utenti con il permesso di amministrazione. Nel caso di Fedora, come succede anche con Debian, il proprio account non è registrato in questa lista.
Possiamo dire che il programma sudo è altamente poco sicuro in quanto:
se qualcuno ha la password dell’account amministratore, può danneggiare il sistema operativo
un account del computer può accedere a file di sistema e modificarli (lo so, si potrebbe mettere gli utenti esterni come utenti standard, ma questa tipologia di utente ti permette di fare poco o niente (per esempio non puoi installare software. E se te ne serve uno?).
Quindi il comando su è nettamente più sicuro. Per questo motivo si separano le due cose. L’accesso come root e l’accesso come utente normale.
Quando si digita il comando sudo (per questa volta lo chiamiamo comando, per semplificare), in realtà non acquisiamo i privilegi di root. Semplicemente ci vengono delegati al momento dal sistema. Ma è solo una delega, che poi viene cancellata al momento della conclusione del comando.
Ogni operazione avvenuta mediante l’accesso ad una risorsa con sudo, viene registrata in un file di log del sistema (solitamente /var/log). Questo log può essere usato dall’utente root per controllare le operazioni svolte da un account amministratore.
PS: Non mostro come vengono disposti i log, per una questione di sicurezza del mio sistema operativo.
Tutte le operazioni effettuate con l’account root vengono registrate nei log?
Come accade per l’account amministratore, al quale vengono registrate tutte le operazioni fatte con il comando sudo o meno (quindi all’interno della propria home o all’esterno), anche l’account root registra tutte le operazioni svolte al suo interno, per una questione di sicurezza.
Per quanto riguarda l’ambiente entherprise, si può dire che i log non vengono solo registrati in /var/log/, ma anche in altre posizioni, stabilite dal proprietario del sistema, per far in modo che i log rimangano originali e non subiscono modifiche da terzi per oscurare delle operazioni svolte.
Alcune caratteristiche importanti di su
Direi di andare ad analizzare un po’ il comando su.
Questo comando, come abbiamo detto, consente di effettuare il login all’account root. Effettuato il login non viene persa la sessione (all’interno del terminale), finché non si esce, mediante il comando exit, o non si chiuda la finestra in uso del terminale.
Loggati all’account root, si potranno eseguire tutte le operazioni senza il comando sudo davanti. Se ci sbagliamo ed inseriamo il comando sudo, mentre siamo loggati come root, non succede nulla. Semplicemente il sistema ignorerà il comando sudo.
Un qualsiasi file creato, modificato come root non sarà accessibile dal proprio utente. Per renderlo disponibile, dobbiamo assegnare i privilegi di lettura / scrittura (o entrambi i diritti), al file o alla directory, per il nome.
I permessi si possono dare a chiunque, tramite il comando chmod 777, oppure si possono assegnare ad un utente per volta. In modo da controllare i file in modo ottimale.
Alcune caratteristiche importanti di sudo
Procediamo quindi con l’analizzare il comando sudo.
Questo comando, come abbiamo detto precedentemente, permette di delegare i privilegi di root ad un account utente. Ogni operazione speciale, che richiede elevati privilegi, dobbiamo ricorrere a sudo.
Sudo ci chiederà la password per il primo comando immesso. Per i successivi non la chiede. Al momento in cui il sistema rileva che non viene eseguito nessun altro comando da un determinato lasso di tempo (che varia a seconda della distribuzione in uso), il sistema richiederà la password dell’account utente amministratore.
Come nel caso di su, anche con sudo, ogni file o directory creata o modificata, dovrà essere assegnato i privilegi per essere eseguita da utenti senza il comando sudo.
In conclusione
In questo post abbiamo visto la differenza tra sudo e su. Spero che questo nuovo articolo ti sia interessato e ti abbia aiutato a comprendere meglio il terminale.
Con questo è tutto… alla prossima!