venerdì 26 ottobre 2007

VirtualBox: su, sudo e cartelle condivise in guest Linux

Prologo: questo post riguarda tutte le distribuzioni Linux che usano il comando su invece che sudo come in Ubuntu per eseguire operazioni riservate all'amministratore di sistema. Come distribuzione di esempio è stata usata Mandriva 2008.

Dicevo qualche post fa che Mandriva è una delle distribuzioni che più mi piacciono fra quelle che non uso. Visti però i recenti problemi di installazione della openSUSE 10.3 in VirtualBox, ho deciso di farne la distribuzione da affiancare alla Ubuntu quando ci sono da fare esempi concreti nei post.

Una delle cose che inizialmente mi ha messo in difficoltà nell'usarla, è stata la differente gestione della modalità amministrativa rispetto ad Ubuntu. In poche parole Mandriva usa la modalità classica con il comando su che cambia la nostra utenza trasformandoci direttamente nell'amministratore; Ubuntu invece usa il comando sudo che eleva momentaneamente i nostri privilegi a quelli dell'amministratore restando però chi siamo.

Il comando sudo ha una serie di vantaggi rispetto a su: permette infatti un controllo molto più fine su quali attività amministrative l'utente può fare (scelte sempre dall'amministratore), usando direttamente la password utente: l'amministratore in questo modo non deve esporre la sua password ma può comunque concedere a determinati utenti la possibilità di fare cose che solo lui potrebbe. Ubuntu in realtà è andata oltre, disabilitando del tutto l'amministratore e usando solo il comando sudo per le attività amministrative; risulta comunque sempre possibile riattivare su con il comando sudo passwd root.

A seconda che la distribuzione usi il comando su oppure il comando sudo il comportamento della stessa cambia. Chi come Michele Benvegnù ha provato infatti a seguire quanto indicato nel post relativo alla condivisione cartelle su guest Linux, si è sicuramente accorto che le cose con Mandriva non funzionano. Vediamo allora come attivare il comando sudo per tutte le distribuzioni che, come Mandriva, di default usano il comando su.

Il file da modificare si trova in /etc e si chiama sudoers. Aprite la shell, in Mandriva e tutte le distribuzioni con l'interfaccia grafica KDE, si chiama Konsole (fig. 1), quando l'interfaccia grafica è Gnome si chiama Terminale (l'abbiamo visto in molti altri post con Ubuntu dove appunto si usa Gnome).

Fig. 1 - attivazione comando sudo - apertura konsole
fig. 1


Ora date i seguenti comandi (fig. 2):

cd /etc [invio]
su [invio]


Con questi comandi vi siete spostati nella directory etc e siete diventati amministratore (necessario per modificare il file sudoers altrimenti immodificabile per un utente normale).

Potete notare anche visivamente la differenza fra utente normale e amministratore: se guardate la forma del prompt, noterete che prima di dare il comando su, quindi utente normale, il prompt terminava sempre con $, dopo essere diventati amministratore la riga termina sempre con #. Quando non sapete se siete utente normale o amministratore, guardate l'ultimo carattere della riga: $ utente normale, # amministratore.

Ora date il comando:

visudo [invio]

Fig. 2 - attivazione comando sudo - comando visudo
fig. 2


Il contenuto del file sudoer si apre all'interno di un editor (fig. 3), fate molta attenzione: come avvisa anche la 3a riga del file, occorre usare esclusivamente il comando visudo per modificare sudoers. Questo perché quando salverete le modifiche, vengono eseguiti ulteriori controlli per evitare che errori di sintassi nel file taglino fuori tutti gli utenti del sistema.

Ora fate ancora più attenzione: l'editor in cui vi trovate funziona come vi (pronuncia vì ai): come utenti Windows non assomiglia a nulla di ciò che conoscete, perciò vi prego di fare esattamente come vi dico.

Prima cosa da sapere: ogni riga che inizia con il simbolo cancelletto #, è un commento (ogni file di configurazione di Linux è così, è una sua caratteristica generale, ricordatela).
Seconda cosa: vi, l'editor, ha due modalità di funzionamento: appena entrati, come in questo momento, è in modalità comando. Se scrivete una lettera adesso (non lo fate, per carità!), questa non comparirebbe come testo ma verrebbe interpretata come comando, perciò buoni e fermi, non premete nulla di più di quanto vi dico.

Ok, ora portate con i tasti freccia il cursore d'inserimento al punto dove lo vedete in fig 3 (il rettangolo chiaro sullo sfondo nero sul lato sinistra della schermata). Questo perché è in quel punto che vogliamo inserire del testo.

Fig. 3 - attivazione comando sudo - contenuto file sudoers
fig. 3


Premete il ":" (due punti) sulla tastiera. Vedrete il quadratino schizzare verso il fondo della schermata e lì comparirà il ":". Aggiungete la lettera "i" (fig. 4) e date invio.


Fig. 4 - attivazione comando sudo - modalità inserimento
fig. 4


Sia il ":" che la "i" scompariranno ma il cursore resterà sul posto. Siete entrati in modalità inserimento, e tutto ciò che da questo momento scrivete viene inserito come testo nel punto in cui si trovava inizialmente il cursore (ricordate? Nello spazio vuoto sotto la prima riga visibile in fig. 4). Bene, ora con la massima attenzione, date un invio, e anche se sembra non sia successo nulla, scrivete:

VostraUser ALL=(ALL) SETENV: ALL

dove al posto di "VostraUser" mettete il nome della vostra user, quella che usate per entrare nel sistema. Date un altro invio, poi premete il tasto Esc sulla tastiera. Dopo qualche attimo l'editor uscirà dalla modalità inserimento tornando alla modalità comando, e ciò che avete inserito comparirà magicamente al suo posto (fig. 5, la riga che inizia per gds, la mia user).

Fig. 5 - attivazione comando sudo - inserimento completato
fig. 5


A questo punto salvate il tutto e uscite dall'editor con il comando ":wq" e dando invio.

Se per qualche motivo doveste sbagliare, non allarmatevi: tornate in modalità comando con Esc e date il comando ":q!" seguito da invio. Uscirete dall'editor senza salvare, rientrate con il comando visudo e riprendete d'accapo.

Bene, se avete fatto tutto correttamente, ora il comando sudo è attivo anche per la vostra user. A questo punto non vi resta che seguire il post sulle cartelle condivise in guest Linux e vedrete che questa volta tutto funzionerà correttamente anche su Mandriva e le altre distribuzioni.

@:\>