Root
Da Wiki italiano Mandriva.
Chi è root
Unix e i suoi derivati, tra cui figura GNU/Linux sono sempre stati fin dall'inizio sistemi multi-user. Quando venne creato, i personal computer non esistevano ancora e l'elaborazione dati era prerogativa di un sistema centralizzato detto mainframe a cui gli user si connettevano tramite terminale.
Il sistema così configurato necessitava di una persona che gestisse la suddivisione dei compiti: l'amministratore di sistema, o sysadmin conosciuto anche come superuser o root ovvero colui che sta alla radice ( in inglese root appunto ) del filesystem ( è utile ricordare in un sistema GNU/Linux esiste un unico filesystem organizzato in directory all'interno del quale vengono montate periferiche, dischi e le partizioni utenti. ) ed è l'unico che abbia l'accesso in lettura e scrittura alla directory radice / .
La differenziazione tra l'account user e root è stata conservata anche in GNU/Linux che fondamentalmente è destinato all'uso sui personal computer con un solo utente. Questa precisa distinzione tra gli account è ciò che a tutti gli effetti rende questo tipo di sistema operativo molto sicuro. Il nome root è associato al superuser e rappresenta una convezione ben radicata quindi non è mai consigliabile rinominarlo ( il rischio è che taluni file di configurazione semplicemente non funzionino più ) ma il nome comunque non è obbligatorio. Cioè che dona all'utente root privilegi assoluti nel sistema è lo user ID ovvero lo UID cioè il suo numero di identificazione che tutt'ora è 0
Potete verificare il valore dello UID di root loggandovi come superuser in una consolle:
Questo comando legge il contenuto della variabile d'ambiente $UID, dove risiede l'identificativo dell'utente « corrente » Il file /etc/passwd assegna sempre l'UID (User ID) 0 al superutente root :
... usando il comando grep per evidenziare la riga contenente root.
Il file di configurazione /etc/passwd contiene una riga di impostazione per ogni utente del sistema. Ogni riga è formata da « campi » separati dai due punti. Il primo campo contiene il nome dell'utente corrente: nell'esempio root gli altri campi rappresentano identifiativi numerici (UID). Il sistema dei Permessi nel file system di Unix è stato programmato per l'imitare l'accesso degli utenti normali ai file di configurazione di sistema, lasciando il compito esclusivamente a root e, poichè tutto in GNU/Linux, si fa partendo dai file di configurazione root dispone di controllo illimitato del sistema.
Usare root può essere pericoloso
Loggarsi come root è una operazione che presenta sempre dei rischi. Chi è abituato a sistemi operativi che non gestiscono i permessi può trovarsi spiazzato nel non poter agire subito ma dover "sottostare" alle regole gerarchiche. La tentazione di loggarsi sempre come root è forte .. ma questo modo d'agire può portare a risultati spiacevoli in un batter di "tastiera". La stabilità e sicurezza di linux dipende anche dall'uso consapevole delle sue potenzialità. Loggarsi come root va usato esclusivamente per le operazioni di amministrazione strettamente necessarie. Essere root presuppone la conoscenza di ciò che si sta facendo: un comando errato non sarà mai preceduto da messaggi che avvisano del potenziale pericolo, semplicemente se il comando non è corretto succederà l'irreparabile.
« Ecco una piccola storiella: Avete presente il file sendmail.cf in /etc. Bene stavo lavorando su sendmail e volevo sbarazzarmi di tutta una serie di file sendmail.cf.xxx, ho dunque proceduto ad usare il comando rm e ho digitato
rm -f sendmail.cf. *
Sul momento, sono rimasto alquanto perplesso per il tempo che l'operazione stava impiegando.... quando l'ho interrotta... era troppo tardi: il danno era già stato fatto »
(Richard Eiger dans comp.unix.admin)
Avete capito cosa è successo? No ? .. allora ecco la spiegazione
L'autore di questa storia avrebbe dovuto digitare rm -f sendmail.cf.* , ma lo spazio aggiunto tra il punto finale e lo spazio, ha lanciato il comando non solo su sendmail.cf. ma anche su tutte le directory presenti sotto la /etc che come è noto contiene tutti file di configurazione del sistema.. (!) (per il significato dell'asterisco leggete L'asterisco).
Loggandosi come root in un sistema linux, come visto nell'esempio, si può far più danni che in un sistema Win32, perché non esiste protezione di sorta
Cercate di lavorare sempre come semplice utente piuttosto che root vi proteggerete dai pericoli della rete, da utenti malintenzionati e soprattutto da voi stessi !!
Unix-style !
Utilizzare un sistema differente da quello a cui siete abituati, forzandolo a comportarsi allo stesso modo di quello che avete sempre usato non ha molto senso vi pare ? Cosa succederà il giorno in cui dovrete confrontarvi con un sistema in cui non potrete assolutamente diventare root ? Non riuscirete mai ad interagire con linux se non riuscirete a capire che determinati vincoli servono perché il sistema lavori sempre in modo impeccabile e non per rovinare l'esistenza ai suoi utenti ( anche se a volte .. se ne ha comunque la sensazione :P )
Sicurezza
Tutti i processi lanciati come root hanno i relativi privilegi e quindi la possibilità di fare ciò che vogliono. Non c'è bisogno che vengano lanciati da programmi « malevoli », tipo virus o trojan per far dei danni ..( anche perché di malware per linux tutt'ora non se n'è mai avuto notizia)
Come ben saprete, gli utenti di GNU/linux sono implicitamente anche tester dei nuovi programmi che vengono di volta in volta proposti e che molto spesso contengono errori e bug di programmazione.. ( non sarebbero in test altrimenti ;) ). Tutto questo è possibile grazie alla gestione dei permessi che evita che un programma possa far danni irreparabili, tuttavia se i questi programmi li lanciate come root, non avrete nessuna giustificazione se poi il vostro sistema si « pianterà » clamorosamente.
Anche i programmi stabili possono comunque avere lo stesso delle falle di sicurezza, (i cosiddetti exploits), queste falle possono permettere, ad un utente malintenzionato che conosce il bug, di eseguire comandi privilegiati. Se eseguirete un programma che contiene una falla di sicurezza come root, consegnerete le chiavi del vostro sistema ad un utente malintenzionato.
La regola di base per la massima sicurezza è dunque : usare root esclusivamente per le operazioni che lo richiedono.
Mandriva rende immediatamente disponibili gli aggiornamenti di sicurezza dei proprio programmi .. confermando, se ancora ci fossero dubbi, l'importanza del software gestito tramite i repository ufficiali
Operazioni che richiedono la presenza di root
Ci sono dei task che richiedono per forza i privilegi di root, ad esempio se volete utilizzare il centro di controllo Mandriva e ci sono delle utility che vi permettono di ottenere temporaneamente i privilegi di root ogni volta che ne avrete bisogno e di cui tratteremo nella prossima sezione. Tipicamente ci sono due compiti ben definiti che richiedono i privilegi di root:
- Creare o cancellare o copiare file o directory di sistema o nelle directory di sistema
- Modificare il contenuto di un file si sistema
Creare, cancellare o copiare i file e le directory di sistema richiede di avere i privilegi di root, perché si va ad alterare la configurazione originale. Prendiamo ad esempio il file /etc/wpa_supplicant.conf che è il file di configurazione di accesso ad una rete wifi e cerchiamo di visualizzarne il contenuto senza privilegi di root. Inevitabilmente otterremo questo messaggio:
cat: /etc/wpa_supplicant.conf: Permission denied
[user@localhost ~]$
.. accesso vietato, la stessa cosa se cercassimo di creare una directory all'interno di /etc
mkdir: impossibile creare la directory `/etc/pippo': Permission denied
[user@localhost ~]$
La stessa cosa accadrà se si cercherà di modificare il contenuto di un file di configurazione, manualmente o tramite uno strumento dedicato, o se si esegue un programma che scrive nei file di configurazione: uno qualsiasi dei tool di Mandriva contenuto nel centro di controllo oppure urpmi che permette di installare il sofware pacchettizzato rpm.
Un'altra operazione che può richiedere i privilegi di root è la modifica dei permessi su file o directory di cui non si è proprietari. Operazione da effettuare sempre con molta attenzione. Per maggiore informazioni vedi la pagina Wiki sulle autorizzazioni.
Esistono comunque alcune eccezioni:
Quando si compila un programma a partire dai sorgenti, si può fare in modo di configurarlo affinché la compilazione parta dalla propria directory /home ed in questo caso non è necessario avere i privilegi di root perché state lavorando all'interno della vostra directory personale.
./configure e make, sono due comandi eseguibili come user, mentre make install dovrà essere effettuato come root se si vorrà rendere il programma utilizzabile da tutti gli user del sistema. Leggete come installare software
Molti software hanno la directory di configurazione all'interno della directory utente: /home ad esempio: amarok o thunderbird. In questo caso le modifiche ai file di configurazione non necessiteranno i privilegi di root (Il loro nome di solito inizia con un punto: .Mozilla, .Kde ecc... Essi sono considerati file "nascosti").
Per vedere il contenuto di un file di sistema non è sempre necessario essere root, nella maggior parte dei casi potrete fare questa operazione come semplici user
Nella prossima sezione vedremo che strumenti utilizzare per diventare root a comando
Diventare root usando "su -" ovvero substitute user
IMPORTANTE:A partire da Mandriva 2009.0 per poter usufruire delle variabili d'ambiente di root è "obbligatorio" utilizzare il commando su - completo di trattino. Usare su da solo è comunque possibile, ma non riuscirete praticamente ad utilizzare nessun comando come superuser
su -
Per effettuare delle operazioni come root, utilizzando l'ambiente completo di root, directory /home inclusa, non è necessario ( .. e nemmeno consigliabile ! ) riavviare il sistema e loggarvi come root, sarà sufficiente utilizzare il comando su - nella finestra di una « shell » (la consolle) e fornire la password di root. :
Usando su - state obbligando la shell a comportarsi come una shell di login che utilizza i relativi file di configurazione contenuti in /etc/profile e ~/.bash_profile. In altri termini è come se ogni volta faceste login come root all'avvio del sistema.
Fatta questa operazione sarete root a tutti gli effetti e potrete effettuare tutte le operazioni necessarie da root compresa l'esecuzione di programmi. Potete utilizzare su - sia che siate in modalità grafica: ad esempio utilizzando Konsole di KDE4, che in modalità testuale o in una consolle richiamata con <CTRL+ALT+F7...Fn>
Utilizzando più consolle è facile fare confusione, vi consigliamo di utilizzarne una sola per tutti i compiti da SuperUser necessari in una sessione di lavoro. Se utilizzate un gestore di consolle grafico, ad esempio Konsole di KDE4 potete utilizzare più finestre contemporaneamente.
cercate sempre di utilizzare "su -" direttamente sulla macchina che dovete amministrare, evitando nel limite del possibile connessioni via rete, Inoltre vi raccomandiamo di chiudere il terminale o fare logout da root se in seguito dovrete andare su internet
su - -c
Una delle principali opzioni di su è: su - -c "comando" . Rispettando gli spazi nella sintassi eseguirà il "comando" con i diritti di root, quindi se vogliamo fare una delle operazioni più comuni, ovvero eseguire il file manager dolphin come root sarà sufficiente digitare:
.... et voilà ! dolphin si aprirà in modalità superuser
Quando volete lavorare su uno specifico file, ad esempio se volete effettuare l'edit di un file di sistema utilizzando kwrite, il comando dovrà essere inserito tra le " ... " :
Un inconveniente fastidioso di su - -c è che il completamento automatico non funziona quando il contenuto del comando è racchiuso tra le virgolette. Questa "mancanza" si fa sentire soprattutto se dovete richiamare un file dal nome complesso con spazi e caratteri speciali. Esistono due metodi per aggirare il problema:
- Digitare il comando senza le virgolette, usare il tab per il completamento automatico ed in seguito aggiungerle spostandosi all'inizio e alla fine della riga con il tasto home oppure ctrl+a o il tasto end oppure ctrl+e....che può andar bene se dovete sporadicamente richiamare l'edit di qualche file di configurazione.
- Modificare il file /etc/inputrc in modo permanente in modo che l'aggiunta delle virgolette avvenga automaticamente. Questa operazione vi permetterà di usare il completamento automatico per richiamare file dal nome complesso con rapidità e di trovarvelo già completo di virgolette in modo automatico. Aggiungete la seguente sintassi nel file citato, dopo averne fatto una copia di sicurezza:
"\C-x": "\C-e\"\C-asu - -c \""
.. quindi salvate.
D'ora in poi potrete digitare il comando da usare sotto root usando anche l'auto completamento
... , dopodiché digitando <CTRL x+INVIO>, otterrete automaticamente questa risulato:
Una bella comodità no ? immaginate di dover modificare ogni giorno una certa quantità di file come root: questa è la soluzione definitiva !
Che cosa è stato fatto ?
La linea contente "\C-x": "\C-e\"\C-asu - -c \"" aggiunta in inputrc fa eseguire le seguenti operazioni ( Nota: C sta per ctrl ) quando premete ctrl+x e INVIO (\C-x):
- il cursore si sposta alla fine della riga (\C-e)
- Una coppia di virgolette viene inserita(\"), e la riga diventa kwrite /etc/wpa_supplicant.conf"
- il cursore si sposta all'inizio della riga (\C-a)
- inserisce il comando che manca (su - -c), e le virgolette (\") e otteniamo: su - -c "kwrite /etc/wpa_supplicant.conf"
fatto !
Per conoscere le varie opzioni del file di configurazione /etc/inputrc potete consultare questa pagina della "linux gazzette n° 55" ( in francese) oppure la sezione Readline nel manuale di bash (man bash).
su -p o -m
Se state usando Mandriva linux a partire dalla versione 2009.0 utilizzare l'operatore "-p" è pressoché inutile, in quanto non si può utilizzare su senza l'operatore "-" che effettua il login come root utilizzando le relative variabili d'ambiente
l'opzione -p è qualcosa di molto specifico per gli utenti avanzati. Se non riuscite bene a comprendere l'argomento potete saltare questa sezione senza problemi...
I valori della variabile $PATH possono variare a seconda che siate utenti normali o root. Usando il comando echo "$PATH" dovreste ottenere qualcosa che assomiglia a questo:
- valore di $PATH per lo user:
/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/usr/lib/qt4/bin:/home/user/bin
- valeur de $PATH per root:
/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
... come potete vedere il PATH varia a seconda del fatto che siate utente o root. Ovviamente se il PATH varia in funzione di chi sta lanciando i comandi, quello che potete fare come root non lo potete fare come user: se lanciate un file eseguibile che risiede in /usr/sbin e siete loggati come user.. semplicemente .. non potrete farlo, il sistema vi restituirà un errore.
Tuttavia se siete user e usate su da solo senza "-p" ( o "-m" ) il $PATH di root coinciderà con quello dello user che ha lanciato su Potrete rendervi conto di questa cosa dal fatto che la HOME non è cambiata: invece della tilde, che segnala la /home di root HOME de root troverete il nome dell'utente:
- Usando solo su
- Usando su -p
Perché è importante l'uso di su -p allora ?
Perché se non si usa l'operatore "-p" la directory /sbin/ non farà più parte della variabile d'ambiente e quindi, lanciando uno degli gli eseguibili in essa contenuti, utili per l'amministrazione del sistema, il percorso di riferimento non sarà più valido e il sistema restituirà ogni volta un errore, obbligandovi a dover fornire ogni volta il /percorso/completo/verso/l'eseguibile/che/vi/serve una bella perdita di tempo non trovate ?
Tornare user
Per "uscire" da root e tornare semplici user, digitate :
... o se preferite usate la combinazione di tasti <Ctrl-d>.
Per ragioni di sicurezza, vi suggeriamo di non lasciare mai aperta inutilmente una consolle loggata come root specialmente se la macchina su cui state lavorando è connessa in rete .. e ad internet..
Dentro e fuori da root in un batter d'occhio
Il comando suspend che viene presentato in questa sezione non funzionerà se vi loggate come root con il comando su -'
Se state usando Mandriva linux a partire dalla versione 2009.0 il comando suspend è pressoché inutile, in quanto non si può utilizzare su senza l'operatore "-" che effettua il login come root utilizzando le relative variabili d'ambiente
Il comando suspend è qualcosa di molto specifico per gli utenti avanzati. Se non riuscite bene a comprendere l'argomento potete saltare questa sezione senza problemi...
Quante volte vi è capitato di dover passare continuamente da root a user e viceversa, ed ogni volta avete dovuto digitare e ridigitare la password di superuser ( ovviamente lunga e complessa ;) ? Sicuramente non è la cosa più divertente che si possa fare con il vostro PC.. allora ecco una soluzione che può venirvi in soccorso.
Cominciate passando a root come siete abituati a fare
Fate tutti i vostri "compiti" da root, e quando deciderete di dover tornare user, invece di digitare exit o <Ctrl-d> digitate :
Lungo da digitare? che ne dite di imparare ad usare il completamento automatico digitate "sus" e premete "tab" ! fatto ! :P "suspend" mette l'istanza di bash lanciata come root in sospensione .. appunto, facendovi tornare user. Quando vorrete ritornare a root dovrete semplicemente digitare fg che riattiva la shell (fg = foreground) :
Ora non vi resta che utilizzare suspend e {{fg} a vostra discrezione
Cambiar la password di root
Per cambiare la password di root è sufficiente digitare passwd dopo essersi loggati come superuser:
Quando ci si dimentica la password di root..
La password di root è modificabile utilizzando la modalità safe mode, all'avvio di mandriva, una volta che il sistema s'è avviato la procedura è la medesima del cambio di password.
Se nelle impostazioni di sicurezza del sistema avete cambiato il livello di sicurezza da normale ad uno superiore, può succedere che questa operazione non sia possibile farla.
Mini "How To": usare programmi come root
Questo mini "how to" spiega come fare due operazioni di uso comune che a prima vista possono sembrare estremamente complesse, e una di uso assolutamente non comune che mettiamo per completezza di informazioni e che consigliamo fin d'ora di evitare.
Richiamarli direttamente dalla consolle
Operazioni di copia, incolla, sposta e crea directory agendo come superuser nei file di sistema possono essere fatti dalla consolle, loggandosi come root e digitando chilometri di caratteri. Se anche voi siete per il motto "Digitare è bello.. ma stanca", sappiate che tutto questo si può fare graficamente lanciando il file manager ( l'hanno fatto apposta DOH ! ) del vostro ambiente grafico ( konqueror, dolphin, nautilus o thunar ) come root:
Una volta che il file manager si apre, sarà in modalità root e vi permetterà di fare tutti i danni le operazione che vorrete su file e contenuti di file.
Similmente è possibile utilizzare lo stesso sistema per aprire qualsiasi programma in modalità root
Creare una voce nel menù stella di KDE4
Se utilizzate sempre un determinato programma come superuser sarebbe forse più comodo per voi crearvi una voce direttamente nel menù stella, che vi permetta di lanciare il programma direttamente in modalità root ( e .. magari crearvi un collegamento sul pannello in basso )
Supponiamo di voler creare una versione root di Konsolle
1.Prima di tutto, è necessario sbloccare gli oggetti, cliccate col tasto destro sul menu stella -> "sblocca oggetti"
2.Cliccate di nuovo col tasto destro->modifica il menù->aprite la sezione di riferimento "strumenti"
3.Cliccate su "nuova voce" nella barra in altro della finestra dell'editor dei menù"->assegnategli un nome, ad esempio "rootkonsole"
Una volta che la voce è creata selezionatela col mouse, nella metà destra dell'editor ci sono una serie di campi che vi permetteranno di personalizzare il collegamento:
4.aggiungete una descrizione, ad esempio "apre Konsole come root "
5.Potete anche scegliere una icona personalizza, cliccate sul pulsante con l'icona rappresentante un punto di domanda
Nel nostro caso dobbiamo far in modo che il collegamento nel menù usi il comando "su -" lo faccia come root e ovviamente all'interno di Konsole quindi:
6.alla voce "comando" scrivete: su -
7.cliccate sulla tendina "avanzate"-> e spuntate le seguenti voci
- esegui in un terminale (che fa aprire Konsole)
- esegui come un altro utente, nel nostro caso root
Ora potete anche associarvi una scorciatoia da tastiera, salvate .. Fatto! Ora avrete nel vostro menù stella una voce che vi permetterà di aprire direttamente Konsole come root dovrete solo digitare la password quando richiesta
Loggarsi graficamente come root
Questa operazione va contro qualsiasi buonsenso in termini di sicurezza, tuttavia viene inserita nel wiki per completezza di informazioni. Inutile dire che è una operazione con un potenziale equivalente di una bomba termonucleare..'
Questa è una operazione per utenti smaliziati e dotati di buon senso, se siete principianti, forse è il caso che impariate prima ad usare correttamente il sistema
Avviate normalmente Mandriva Linux, quando arrivate alla finestra di login grafico, digitate <alt+n> passerete al terminale.. ora non vi resta che fare login come root e poi lanciare la sessione grafica digitando il comando startx
Mandriva funzionerà in tutto e per tutto come siete abituati, ma come utente sarete root. Buona Fortuna.
Tradotto e aggiornato da --Dom-X 14:47, 19 gen 2010 (UTC)

