Invita un amico a visitare questo sito cliccando qua!

Linux: gli incantesimi di base

Nonostante l'interfaccia grafica di Linux sia piuttosto sofisticata ed efficace, la vera potenza di Linux si rivela quando usate la sua interfaccia "vera", cioe quella testuale che trovate ad esempio nelle sue console o nelle finestre di terminale. Quando l'interfaccia grafica non parte, risulta lenta o annaspa, l'interfaccia testuale scatta veloce e risolve ogni problema. Inoltre l'interfaccia di testo e l'unica disponibile nelle installazioni su macchine molto modeste.

Insomma, qualunque cosa facciate, prima o poi vi troverete ad aver bisogno dell'interfaccia non grafica di Linux. Lo so bene, perche troppe volte, durante la stesura di questo libro, non sapevo che pesci pigliare o l'interfaccia grafica si rifiutava di fare quello che le chiedevo; tutto si risolveva aprendo una console e digitando gli arcani comandi dell'interfaccia testuale. Certo, bisogna tribolare per impararli, mentre l'interfaccia grafica "punta e clicca" e molto piu intuitiva, ma se volete il potere, dovete guadagnarvelo.

Solitamente i libri su Linux si dilungano in chilometriche spiegazioni su tutte le possibili varianti di tutti i comandi disponibili nell'interfaccia testuale. Questo no. Tutti gli approfondimenti dei singoli comandi sono disponibili nella documentazione allegata alla vostra copia di Linux; qui vi presento soltanto una selezione dei comandi indispensabili per iniziare a lavorare.

Scorciatoie

Nonostante le dicerie che affermano il contrario, agli utenti Linux non piace usare la tastiera piu dello stretto necessario. Non sono innamorati della riga di comando e non si eccitano a digitare comandi arcani e lunghissimi come find / -type f \( -perm -04000 -o -perm -02000 \) > suid-sgid.txt. Infatti esistono varie tecniche per risparmiare sul numero di caratteri da digitare.

Completamento automatico

Quando digitate un nome di file o di directory, e sufficiente scriverne le prime lettere e poi premere il tasto Tab. Se non ci sono ambiguita, cioe se nella directory corrente c'e un solo file o una sola sottodirectory il cui nome contiene le lettere che avete digitato, Linux scrive automaticamente il resto.

Ad esempio, immaginate di essere in una directory contenente tre programmi dai nomi chilometrici:

  • so-5_2-ga-bin-linux-it.bin

     

  • soa-5_2-ga-bin-linux-it.bin

     

  • sop-5_2-ga-bin-linux-it.bin

     

Come vedrete nei prossimi capitoli, non sono nomi inventati: la maggior parte dei nomi di file in Linux e di questa lunghezza. Questo pero non vuol dire che dovete intrecciarvi le dita nel tentativo di scriverli giusti. Grazie al completamento automatico, per avviare il programma prescelto vi basta digitare l'inizio del suo nome (in alcune configurazioni di Linux, dovrete precederlo con "./", per i motivi spiegati nella sezione Problemi di path piu avanti).

Infatti so- e quanto basta per risolvere le ambiguita (digitare so senza trattino non basterebbe, perche nell'elencazione ci sono tre file che iniziano con so) e consentire a Linux di capire a quale file vi state riferendo. Premendo il tasto Tab, il nome completo verra scritto da Linux per voi.

Comodo, vero? Questo trucchetto vale un po' dappertutto in Linux, sia per i nomi di file, sia per i nomi di directory. Ad esempio, per digitare il percorso /usr/bin/office52/program/setup, basta digitare /u e il tasto Tab, b e di nuovo Tab, off e ancora Tab, p e Tab, e infine se e Tab. In altre parole:

Voi scrivete

Linux completa con...

/u[TAB]

/usr/

b[TAB]

/usr/bin/

off[TAB]

/usr/bin/office52/

p[TAB]

/usr/bin/office52/program/

se[TAB]

/usr/bin/office52/program/setup

(14 battute)

(31 battute)

 

Esiste anche il completamento automatico parziale: ad esempio, supponete che una directory contenga tre soli file i cui nomi cominciano tutti per configurazion (ad esempio configurazione_stampante, configurazioni_schermi, configurazione_account). Digitando cat (un comando di visualizzazione) e il tasto Tab, la parte comune del nome (configurazion) verra scritta automaticamente da Linux.

Se ci sono anche altri file con nomi completamente diversi, basta digitare l'inizio del nome che vi interessa: ad esempio, se nella directory appena citata c'e anche un file di nome impostazione_internet, basta digitare la C minuscola seguita dal tasto Tab per dire a Linux "mi interessa uno dei file che comincia per C minuscola, completa quello che puoi", ottenendo cosi il completamento automatico della parte comune (configurazion). Confusi? E piu facile da mettere in pratica che da descrivere.

Anche molti programmi supportano il completamento automatico nei loro parametri. Se usate un programma che richiede un file come parametro (che so, zip), potete digitare zip seguito dalle prime lettere del nome del file e poi premere Tab per lasciare che Linux completi il nome del file.

Spesso e difficile determinare quante lettere occorre digitare per non essere ambigui e consentire il completamento automatico. In casi come questi potete digitare il tasto Tab due volte: ottenete l'elenco dei file e delle directory che corrispondono alle lettere immesse fino a quel punto.

Questo tipo di scorciatoia non e appannaggio esclusivo dell'interfaccia testuale di Linux. Funziona anche in buona parte dei programmi dell'interfaccia grafica. E inutile tediarvi elencando dove funziona e dove no: ricordatevi di provarlo ogni volta che dovete digitare un percorso o un nome di file, e imparerete presto quali (pochi) punti di Linux non accettano la scorciatoia.

Concisione o crudele ermetismo?

Nelle prossime pagine noterete che i nomi dei comandi di Linux sono incredibilmente corti. Molti sono addirittura di due lettere (mv, ls, cd e simili). Anche questo dimostra che i linuxiani non amano digitare piu del necessario.

Tuttavia molti trovano che questa concisione sia un po' eccessiva e finisca per rendere poco comprensibili i comandi. Quando e stato creato Linux c'era carestia di vocali? Sarebbe stato davvero cosi faticoso digitare, che so, move al posto di mv (il comando per spostare i file)? In fin dei conti, con move se uno sa un minimo d'inglese il senso del comando e chiarissimo: move infatti vuol dire "sposta".

La scelta di essere cosi concisi non deriva da un innato sadismo dei linuxiani. Linux, infatti, non fa altro che imitare fedelmente l'organizzazione e i comandi del sistema operativo UNIX dal quale deriva. UNIX, a sua volta, e cosi conciso perche ai tempi in cui fu concepito non si usavano i monitor: il computer "visualizzava" comandi e risposte su una specie di stampante.

Si, lo so che sembra improbabile a chi si avvicina adesso all'informatica, ma il monitor grafico a colori che diamo oggi per scontato era un costosissimo privilegio di pochi eletti negli anni Sessanta e Settanta: la prossima volta che guardate Guerre stellari (il primo della serie, intendo), fate attenzione alla presentazione degli schemi della Morte Nera. Quello era il massimo livello della grafica computerizzata dell'epoca, altro che i giochi di ombreggiatura tridimensionale che trovate sulla Playstation. Di conseguenza, quasi tutti coloro che avevano accesso agli enormi computer di quegli anni, e quei pazzi che usavano i primi rudimentali personal computer, comunicavano col cervellone tramite stampante.

Sempre in tema di fantascienza, se vi siete mai chiesti perche diavolo il computer di Spazio: 1999 rispondeva principalmente tramite striscioline di carta invece di usare uno schermo, adesso sapete perche. Allora i computer erano fatti cosi, e la fantascienza estrapolava le tecnologie piu moderne del momento. Nel Centro di Comando di base Alpha c'erano tanti teleschermi per la comunicazione video, ma un solo monitor collegato al computer, e lo si usava solo per le grandi occasioni.

Insomma, stampare mv al posto di move consumava il 50% in meno di inchiostro e richiedeva meta tempo. Moltiplicate questo risparmio per cento o mille volte e vedrete che comincia ad essere significativo, soprattutto se siete voi a pagare carta e inchiostro.

In un certo senso, questa estrema brevita dei comandi Linux e linguisticamente democratica. Molti altri sistemi operativi a interfaccia testuale, come ad esempio il DOS, usano parole inglesi come comandi: copy, rename, format, delete, eccetera. Questo ovviamente li rende piu facili per chi mastica l'inglese, ma chi parla altre lingue e svantaggiato.

Con comandi come ls, cp, dd, Linux invece e difficile anche se sapete l'inglese: solo alcuni dei suoi comandi sono basati su parole di questa lingua. Per cui gli anglofoni non partono avvantaggiati.

I comandi piu recenti

Per richiamare sulla riga di comando gli ultimi comandi immessi, premete ripetutamente Ctrl-P o il tasto freccia verso l'alto. Questo vi evita di dover ridigitare sequenze di comandi lunghe e ripetitive e vi consente di riesaminare i comandi immessi, per vedere esattamente che cosa e stato fatto quando qualcosa va storto.

Caratteri jolly

Se avete dimestichezza con il DOS, saprete cosa sono i caratteri jolly. Sono dei caratteri speciali che possono rappresentare uno o piu caratteri (donde il nome) quando dovete specificare un nome di file in un comando.

Ad esempio, supponete di avere nella directory corrente due file di nome pippo1 e pippo2 e di volerli cancellare. Il comando da usare e rm, descritto in dettaglio tra poco. Potreste dare due comandi:

rm pippo1
rm pippo2

Ma potreste essere piu efficienti dando il comando:

rm pi*

Se i file da cancellare fossero piu numerosi, il vantaggio di questo metodo sarebbe ancora piu evidente. L'asterisco, insomma, sta per "qualsiasi carattere o serie di caratteri". Se digitate rm *, tutti i file contenuti nella directory corrente verranno cancellati, qualunque sia il loro nome. Notate la differenza rispetto al DOS, dove "qualsiasi file" si specifica digitando "*.*": in Linux, invece, e sufficiente l'asterisco singolo per indicare anche file che hanno un'estensione.

C'e anche un altro carattere jolly importante, ed e il punto interrogativo. Si comporta in modo simile all'asterisco, con una sola differenza da ricordare: mentre l'asterisco rappresenta qualsiasi numero di caratteri, il punto interrogativo rappresenta un solo carattere.

Ad esempio, se la directory corrente contiene tre file, papero, paperino e paperina, il comando rm paper* significa "cancella tutti i file che cominciano per paper", e quindi cancella tutti e tre i file. Se invece digitate rm paper?, ordinate a Linux di cancellare tutti i file che cominciano per paper e proseguono con un solo carattere. Di conseguenza, cancellate soltanto papero (l'unico file che corrisponde alla specifica), mentre paperino e paperina si salvano.

Taglia e incolla con il mouse

In Linux, il mouse funziona anche nelle finestre di terminale e nelle console e consente di selezionare, copiare e incollare porzioni di testo. Windows fa le stesse cose nelle finestre di MS-DOS. La differenza e il modo in cui si comandano queste funzioni nei due sistemi operativi.

In Windows, per poter selezionare del testo la finestra di MS-DOS non puo occupare tutto lo schermo, ma va ridotta in modo che compaiano i pulsanti per attivare la modalita di selezione, di copia e di incollaggio. Poi trascinate il puntatore del mouse sulla porzione di testo desiderata e premete Invio (o selezionate il pulsante Copia) per mettere la selezione nella memoria temporanea della Clipboard. Infine, quando volete incollare altrove nella finestra di MS-DOS il testo selezionato, cliccate sul pulsante Incolla.

In Linux la cosa e un po' piu semplice, ma richiede del tempo per dimenticare le abitudini acquisite con Windows. Infatti non occorre selezionare pulsanti per attivare le varie modalita: basta trascinare il mouse, senza preamboli, sopra la porzione di testo che vi interessa. Rilasciando il pulsante del mouse, il testo viene automaticamente copiato nella memoria temporanea. Cliccando con il terzo pulsante (reale o emulato), la porzione di testo copiata viene incollata.

Le buone notizie non sono finite. Questo sistema rapido di selezione, copia e incollaggio funziona non solo nelle finestre di terminale, ma anche nelle console, e addirittura da una console all'altra. Fra l'altro, un doppio clic su una parola seleziona automaticamente tutta la parola. Se invece trascinate il mouse sopra l'ultima parola di una riga, possono succedere due cose: se trascinate fino alla fine della parola, copiate la parola; se invece trascinate appena oltre la fine della parola, copiate la parola piu l'"a capo" che c'e a fine riga.

Questo e molto comodo quando occorre venire in soccorso di un Linux che fa le bizze. Infatti mentre in Windows e in genere il mouse il primo a paralizzarsi in caso di avaria mentre la tastiera continua a funzionare, in Linux capita piu spesso che sia la tastiera a dare i numeri e il mouse rimanga operativo. Selezionando le lettere giuste per comporre i comandi e gli "a capo", si puo emulare la tastiera quanto basta per tirarsi fuori dai guai.

Fermo o sparo!

Quelli che presento qui non sono comandi in senso stretto, ma vi conviene conoscerli lo stesso perche vi permetteranno di tirarvi fuori dalle situazioni difficili.

  • All'avvio, i messaggi spariscono dallo schermo troppo in fretta. Di solito questo non e un problema e di certo non siete obbligati a leggere tutti i messaggi che compaiono ad ogni accensione, ma se Linux ha dei problemi di avvio, i primi indizi delle cause di questi problemi si annidano fra questi messaggi. Se avete bisogno di tornare indietro o scorrerli durante l'avvio, magari per leggerli esattamente a qualcuno che vi sta aiutando, usate la combinazione di tasti Maiusc-PgSu per rivedere i messaggi scomparsi dal video e Maiusc-PgGiu per farli scorrere in avanti. Questo trucchetto funziona sia con i messaggi di avvio, sia con quelli di chiusura, a patto di non cambiare console. Piu in generale, funziona in tutte le schermate delle console.

  • Nonostante il trucchetto sopra indicato, i messaggi scorrono troppo veloci perche vengono sostituiti da quelli nuovi. Usate Ctrl-S per sospendere l'arrivo di nuovi messaggi. Quando avete finito, digitate Ctrl-Q per riavviare il flusso di messaggi.

  • Non riuscite a uscire dall'interfaccia grafica. Anche questo puo capitare, ma non e un problema grave come in Windows, perche l'interfaccia grafica e per Linux soltanto un programma come gli altri: il sistema operativo vero e proprio non e influenzato da eventuali magagne dell'interfaccia. Di conseguenza, in caso di blocco dell'interfaccia potete tranquillamente chiuderla brutalmente digitando Ctrl-Alt-Backspace. Il sistema operativo sottostante continuera a funzionare (le applicazioni non grafiche non verranno neppure interrotte); se avete impostato Linux per avviare automaticamente l'interfaccia grafica, dopo una breve attesa l'interfaccia si riavviera.

  • Non riuscite a chiudere Linux. Aprite una console e digitate Ctrl-Alt-Canc. Non e necessario fare login: basta aprire la console. Fate attenzione: in Windows, questa digitazione richiama un menu che consente di interrompere brutalmente un qualsiasi programma e, se ripetuta, chiude ancora piu brutalmente Windows (e l'equivalente di un reset o di un calo di tensione), mentre in Linux le cose funzionano diversamente: basta un solo Ctrl-Alt-Canc per imporre direttamente la chiusura del sistema operativo. Inoltre la chiusura di Linux e ordinata: e come digitare shutdown -r now oppure scegliere Fine sessione dal Pannello e Riavvia il computer dalla schermata grafica di login. In entrambi i casi, comunque, perdete i dati non salvati.
    Alcune installazioni di Linux sono configurate in modo da disabilitare la possibilita di spegnere il sistema digitando Ctrl-Alt-Canc per motivi di sicurezza. La faccenda e spiegata in dettaglio nel Capitolo 18.

Conto fino a tre e poi riavvio

A proposito del comando shutdown: ci sono alcune opzioni interessanti che vale la pena di conoscere. Innanzi tutto, il parametro -r ordina a Linux di spegnersi e riavviarsi; in alternativa, potete dare il parametro -h, che si limita a spegnere il computer senza riavviarlo.

Al posto di now, invece, potete specificare un'ora (nel formato ore:minuti) oppure un tempo (espresso in minuti e preceduto dal segno "+").

Ad esempio:

  • shutdown -h 23:55 avvia la chiusura di Linux cinque minuti prima di mezzanotte e spegne il computer.

  • shutdown -r +5 avvia la chiusura di Linux tra cinque minuti e successivamente riavvia il computer.

Avete presente i classici film d'azione dove l'eroe innesca la superbomba per distruggere tutto e poi ovviamente succede un contrattempo per cui il tempo impostato sul timer non gli basta e deve tornare indietro a fermarlo? Be', il comando shutdown puo incastrarvi allo stesso modo. Capita spesso di dare il comando di chiusura del sistema in modo che si spenga da solo entro cinque minuti per poi rendersi conto che c'e ancora qualcosa di importante da fare prima della chiusura e che non c'e tempo di aspettare il riavvio.

Per casi come questo c'e l'opzione -c. In sostanza, se date il comando shutdown -c e poi digitate Ctrl-C prima dello scadere del tempo, otterrete (dopo una lunga, angosciante pausa) la risposta Shutdown cancelled. Attenzione: dato che shutdown disattiva quasi immediatamente ogni ulteriore possibilita di fare login, in pratica potete dare il comando di cancellazione soltanto dalla console aperta dalla quale avete dato il comando di chiusura.

Ampersand, chi era costui?

Cosa c'entra con l'informatica Hans Christian Ampersand, famoso autore danese di fiabe celebri come La piccola fiammiferaia? Niente, assolutamente niente. Ampersand (non Andersen) e il nome del simbolo "&". Tutti lo chiamano "E commerciale", ma non e il suo nome ufficiale.

Tutto questo preambolo di dubbio umorismo serve a introdurre una funzione molto comoda delle finestre di terminale dell'interfaccia grafica: la possibilita di lanciare un programma digitandone il nome al prompt. Esempio: aprite una finestra di terminale e vi trovate nella necessita di aprire un editor di testi per modificare un file. Vi basta digitare kedit per avviare l'editor.

Sistema comodo, per carita, ma con un difetto: finche non chiudete il programma lanciato in questo modo, la finestra di terminale e inutilizzabile. Il prompt infatti ricompare solo alla chiusura del programma. Magari volete lanciare un'elaborazione molto lunga e intanto fare qualcos'altro, ma non potete. Dovreste aprire una seconda finestra di terminale.

Ecco dove entra in scena il nostro ampersand. Per ovviare a questo problema, infatti, basta digitare l'ampersand dopo il nome del programma (ad esempio kedit &). In questo modo, il programma viene lanciato separatamente dalla finestra di terminale, che quindi ritorna al prompt ed e utilizzabile immediatamente senza dover attendere la fine del programma lanciato.

La sibillina riga di comando

Se siete stati allevati nell'era della grafica computerizzata, probabilmente ritenete che l'interfaccia testuale sia rozza e primitiva. In realta e un sistema molto economico per fornire tante informazioni in poco spazio e senza richiedere ingenti potenze di calcolo. L'unico suo svantaggio e che richiede un po' di uso del cervello da parte dell'utente per interpretarne il significato. E per motivi come questi che Linux non piace a tutti. Molta gente preferisce la pappa pronta e qualcuno che gliela imbocchi.

Ecco come decifrare le informazioni presenti nella riga di comando, o per essere piu precisi, nel prompt dei comandi.

Considerate ad esempio questo prompt:

[root@deepspace9 /root]#

Quel root@deepspace9, che somiglia tanto a un indirizzo di email, e proprio un indirizzo di e-mail: indica chi siete (root) e su che computer vi trovate (deepspace9). Tuttavia funziona soltanto se impostate correttamente il software di smistamento locale della posta. Non confondetelo con il vostro normale indirizzo e-mail su Internet.

Se vi sembra stupido specificare il nome del computer di fronte al quale siete seduti perche sapete benissimo dove siete, ricordate che le console possono essere attivate anche durante una connessione via Internet a un computer remoto: il vostro computer diventa un terminale della macchina remota. In questo caso, il prompt vi indichera il nome della macchina a cui siete collegati per ricordarvi che state dando comandi a quel computer e non a quello davanti al quale siete seduti.

Il prompt prosegue con la specificazione della directory corrente (in questo caso /root) e si conclude con un carattere # (abitualmente chiamato "cancelletto"). Il carattere finale e importante, perche vi ricorda che poteri avete in quel momento: se e il cancelletto, avete i superpoteri di root; se e il dollaro ($), avete i privilegi di un utente normale.

Fare login in una console

C'e una differenza notevole fra usare una finestra di terminale e usare una console. Se aprite una finestra di terminale, Linux presume che vogliate lavorare con l'identita dell'utente che in quel momento sta lavorando nell'interfaccia grafica di Linux, per cui non vi chiede ne nome ne password.

Se fate login da una console, invece, vi viene chiesto esplicitamente chi siete (alla richiesta login: digitate il vostro nome utente) e la vostra password; quindi potete accedere con identita diverse a seconda delle necessita, e lo potete fare anche simultaneamente. Ad esempio, tipicamente si entra in una console come root per la manutenzione e si lavora nell'interfaccia grafica come utente normale.

Ecco un tipico esempio di login:

deepspace9 login: root
Password: [non visualizzata]
Last login: Thu Aug 31 14:19:51 on tty3
[root@deepspace9 /root]#

Una cosa interessante del login da console e che vi viene detto in che giorno e a che ora, e da che terminale o console, l'utente ha effettuato l'ultimo login. Questo e molto utile in termini di sicurezza: se notate che l'ora indicata non corrisponde al vostro ultimo accesso, gatta ci cova.

Per terminare una sessione in una console, digitate il comando logout o exit. Vi conviene imparare a usare exit, dato che questo comando funziona sia per le console, sia per le finestre di terminale.

Problemi di path

A differenza di altri sistemi operativi (tipo il DOS), molte installazioni di Linux non includono automaticamente nel path la directory corrente, specialmente se state lavorando come root. In altre parole, se accedete al computer come root e digitate il nome di un comando o di un programma contenuto nella directory corrente, puo darsi che Linux non lo lanci perche non lo trova.

Dietro questo comportamento apparentemente stravagante ci sono considerazioni di sicurezza molto importanti sulle quali non mi dilungo. L'importante, per ora, e sapere come scavalcare questa limitazione se si presenta: basta digitare "./" (punto e slash) prima del nome del comando o programma da lanciare dalla directory corrente.

Quando serve aiuto: man

Molto presto le brevi e superficiali spiegazioni di questo capitolo non vi basteranno piu. Se volete saperne di piu su un comando o una qualsiasi funzione di Linux, la prima risorsa da consultare e la cosiddetta pagina man corrispondente.

"Man" non e, come potreste pensare, l'inglese di uomo, per cui i linuxiani usano delle misteriose "pagine uomo"; e la contrazione di manual, nel senso di "manuale, guida". In altre parole, pagina man significa semplicemente "pagina del manuale di Linux".

E allora perche non chiamarla semplicemente "pagina del manuale"? Perche il comando che si usa per consultare le pagine del manuale e man. E siccome gli utenti di Linux non sono quei mostri di memoria che si dice in giro, consultano molto, molto spesso le pagine del manuale online di Linux. Usano cosi spesso il comando man seguito dall'argomento su cui vogliono informazioni che parlare di "pagine man" e diventata una consuetudine, anche per distinguere il manuale online da quelli cartacei.

Ad esempio, se volete saperne di piu sul comando cat, digitate man cat.

Potete anche chiedere informazioni sul comando man digitando man man. Anche i piu importanti file del sistema operativo hanno una pagina man apposita: ad esempio, man modules.conf spiega tutti i parametri che potete includere nel file /etc/modules.conf.

Quando usate il comando man, potete usare i tasti PgSu e PgGiu per far scorrere il testo una schermata alla volta e i tasti freccia verticali per farlo scorrere una riga alla volta. Una cosa che probabilmente troverete comoda e, nelle finestre di terminale, la possibilita di "allungare" verticalmente la finestra (cosa impossibile con le finestre DOS di Windows) per visualizzare piu testo: potete anche allargarla orizzontalmente se ridimensionate la finestra prima di avviare il comando man.

Per uscire da man basta digitare q.

Molte di queste pagine man sono in inglese, ma e possibile che ne sia stata preparata una versione italiana non presente nella vostra distribuzione di Linux. Nel Capitolo 22 (Risorse) trovate l'indirizzo Internet da consultare per ottenere la versione italiana piu recente delle pagine man. Nella pagina man del comando man, inoltre, trovate le istruzioni su come installare le pagine man italiane al posto di quelle inglesi.

Panico: Linux grafico non parte

L'avete fatta grossa: siete entrati come root, avete modificato malamente qualche file di configurazione del sistema e adesso l'interfaccia grafica non funziona piu o addirittura gran parte di Linux e completamente inservibile.

Non e uno scenario improbabile: e capitato a tutti almeno una volta, e se non vi e ancora capitato, vi capitera. Sto facendo il menagramo? No, per carita: semplicemente conosco la natura umana. Se siete interessati a Linux, siete interessati anche a smanettarlo, e questo prima o poi vi portera a commettere qualche errore. Ecco come rimediare.

Riavviate il computer, facendo reset se necessario, e all'avvio, quando compare la schermata grafica in cui scegliete fra Linux e DOS (cioe Windows), premete Ctrl-X. Compare la richiesta boot, alla quale rispondete digitando linux 3. Questo fa partire Linux senza avviare l'interfaccia grafica. Se conoscete i comandi descritti in questo capitolo, potete cosi accedere ai file che avete modificato e ripararli, ad esempio usando un editor di testi come pico, che si richiama digitandone il nome sulla riga di comando.

Una volta risolto il problema, potete avviare l'interfaccia grafica digitando startx. Quando la avviate in questo modo, non vi chiede di fare login: l'avete gia fatto nella console, e l'interfaccia grafica si avvia usando il nome e la password che avete dato al login e acquisisce i privilegi che ha l'utente con il quale avete fatto login. In altre parole, se ad esempio avete avviato Linux come root, digitando startx l'interfaccia grafica parte a nome di root e con i suoi privilegi.

Lanciare l'interfaccia grafica in questo modo ha anche un altro effetto interessante. Quando la chiudete, non compare la schermata che vi propone di riavviare il server X: tornate direttamente alla riga di comando, senza troppi salamelecchi. Questo vi consente di entrare e uscire rapidamente dall'interfaccia grafica, e in effetti e il metodo usato dai veri linuxiani, che non avviano automaticamente la grafica ma lo fanno solo al momento del bisogno.

Ancora panico: avete dimenticato la password di root

Come e possibile dimenticarsi una cosa cosi fondamentale come la password di root? Vi assicuro, per esperienza personale, che e facilissimo. Tipicamente capita durante una reinstallazione frettolosa o al ritorno dalle vacanze. Basta passare un po' di tempo lontano dal computer e le password scivolano via dalla memoria con disinvoltura imbarazzante.

Il rimedio e semplice: leggete il Capitolo 18 (Sicurezza), che spiega come scavalcare la password di root (ebbene si, si puo).

Trasformazione!

Per cambiare identita, ad esempio per passare dall'utente cesira all'utente mario, non occorre eseguire tutta la procedura di chiusura e di accesso: si usa il comando su seguito dal nome dell'utente.

Ad esempio, supponete di aver fatto login come cesira, che e il nome di login di un utente normale non privilegiato. La finestra di terminale o la console vi presentera un prompt di questo tipo:

[cesira@deepspace9 cesira] $

Se ora digitate su e premete Invio, vi viene chiesta la password di root (se su non e seguito dal nome di un utente, Linux presume che vogliate diventare root). Immettendo la password, diventate root a tutti gli effetti e con tutti i suoi poteri, e il prompt cambia di conseguenza:

[root@deepspace9 cesira] #

Notate due dettagli importanti: la directory corrente non cambia (siete ancora nella home directory dell'utente cesira), e al posto del simbolo di dollaro c'e il cancelletto, che vi ricorda che siete root. Questo e importante per motivi di sicurezza: e un promemoria per evitarvi di lasciare aperto un accesso root.

Potete usare il comando su anche per cambiare da un utente normale a un altro utente normale. Ad esempio, se l'utente cesira vuole assumere l'identita di dilbert, digita su dilbert e immette la password dell'utente dilbert. E necessario conoscere la password dell'utente per evitare che un utente faccia disastri spacciandosi per qualcun altro o sbirci nel lavoro di un altro utente.

Se siete root, invece, siete onnipotenti. Non vi verra chiesta la password dell'utente di cui volete assumere l'identita: la assumerete, punto e basta.

Per tornare all'utente originale, digitate exit. Mi raccomando, se sovrapponete piu sessioni di su (ad esempio diventate prima root, poi usate ancora su per diventare utente normale), digitate un numero di exit corrispondente al numero di sessioni di su. Non digitatene troppi, altrimenti chiuderete la finestra di terminale o, se siete in una console, dovrete rifare login.

Dove siete?

Anche se il prompt contiene il nome della directory corrente, capita abbastanza spesso di non sapere esattamente dove si trovi questa directory. Ad esempio, in Linux ci sono due directory sbin: una e /usr/sbin e l'altra e /sbin. In entrambi i casi, il prompt visualizza soltanto sbin.

Come sapere in quale delle due directory vi trovate? Basta usare il comando pwd. Digitandolo, Linux vi rispondera con il percorso completo che porta alla directory corrente. Il comando prende il nome dalle iniziali di print working directory, cioe "stampa la directory di lavoro".

Se siete stati attenti, avrete notato che questo problema di orientamento esiste soltanto per le console. Nelle finestre di terminale, infatti, il percorso corrente e indicato chiaro e tondo nella barra del titolo.

Trovare un file

La struttura di directory di Linux e obiettivamente piuttosto complessa, ed e facile dimenticarsi dove si trova un determinato file. Per trovarlo rapidamente dovunque sia nel computer, potete usare due comandi: find e locate.

Primo metodo: find

Usate il comando find seguito dalla directory dalla quale volete iniziare la ricerca, dalla specificazione -name e dal nome del file da ricercare o una sua approssimazione che usi i caratteri jolly (l'asterisco e il punto interrogativo). Troverete che find e decisamente piu veloce della versione grafica di questo comando, cioe kfind.

Per esempio, supponete di dover trovare il programma Xconfigurator. Si tratta di un file importante, che serve per configurare l'interfaccia grafica, per cui puo capitare spesso di averne bisogno. Per trovarlo potete digitare:

find / -name Xconfigurator

Dopo una breve attesa, otterrete la risposta:

/usr/X11R6/bin/Xconfigurator
/usr/X11R6/share/Xconfigurator

In altre parole, nel computer ci sono due file di nome Xconfigurator: uno si trova in /usr/X11R6/bin/ e l'altro si trova in /usr/X11R6/share/.

C'e un problema: specificando il carattere slash dopo il comando find, la ricerca esplora l'intera struttura di directory partendo dal livello piu alto (la root directory). Ovviamente un'esplorazione cosi approfondita puo richiedere un bel po' di tempo: se una ricerca dura troppo a lungo, potete interromperla digitando Ctrl-C.

Se avete un'idea di dove si trovi il file, potete specificare un percorso al posto dello slash: in questo modo find limita la ricerca alle directory e sottodirectory di quel percorso, e il tempo necessario si riduce massicciamente. Ad esempio:

find /usr/ -name Xconfigurator

ricerca il file Xconfigurator soltanto nella directory /usr/ e in qualsiasi sua sottodirectory.

Se omettete il percorso, find cerca soltanto nella directory corrente e nelle sue sottodirectory. Alcune configurazioni di Linux non "vedono" il contenuto della directory corrente per motivi di sicurezza e quindi e possibile che dobbiate digitare "./" per includere la directory corrente nell'area ricerca di find.

Fin qui tutto bene, a patto di sapere esattamente come si chiama il file, il che significa ricordarsi anche se e scritto in maiuscolo o in minuscolo. Per fortuna find accetta anche i caratteri jolly, per cui potete specificarli al posto del nome del file. Ad esempio:

find /usr/ -name Xconf*

trova tutti i file che sono presenti nella directory /usr/ o in una sua sottodirectory e il cui nome inizia per Xconf. Specificando un punto interrogativo, invece, find trova qualsiasi file il cui nome ha un qualsiasi carattere (uno solo) al posto del punto interrogativo. Ad esempio:

find /usr/ -name ?configurator

trova qualsiasi file, nella directory /usr/ e nelle sue sottodirectory, il cui nome inizia con qualsiasi lettera o cifra e prosegue con configurator. Questo e un buon sistema da usare quando non ricordate se il nome del file contiene delle lettere maiuscole.

Ma si puo fare di meglio. Infatti se specificate iname al posto di name, il comando find non fara distinzione tra maiuscole e minuscole, per cui:

find /usr/ -iname xconfigurator

trovera il file Xconfigurator anche se il suo nome ha l'iniziale maiuscola.

Secondo metodo: locate

Se la ricerca e a largo raggio, ad esempio perche include tutta la struttura di directory del computer, ci possono volere alcuni minuti prima che find finisca di spazzolarsi tutti i dischi a caccia del file che gli avete chiesto. In casi come questo si usa il comando locate seguito dal nome del file.

Ad esempio, per trovare il solito file Xconfigurator digitate locate Xconfigurator.

Questo comando e velocissimo perche invece di leggersi tutti i dischi legge un database contenente i nomi e le ubicazioni di tutti i file. Tuttavia ha un difetto: il database deve essere aggiornato, altrimenti non rispecchia la situazione reale e allora addio ricerca. Per aggiornare il database si usa il comando updatedb (bisogna essere root per eseguirlo), che richiede un po' di tempo per l'esecuzione.

Morale della favola: se state cercando file che sono presenti sul disco da tempo, usate locate, perche li trovera senza dover prima eseguire l'aggiornamento del database con updatedb. Se invece dovete trovare file creati di recente, o prima dell'ultimo aggiornamento del database, usate find.

Cambiare la password

Puo capitare che la password di un utente venga scoperta da qualcuno. In genere questo avviene per sbadataggine dell'utente, tipicamente perche non centra il tasto Invio alla richiesta di login e quindi la sua password viene digitata in chiaro sullo schermo e dietro di lui c'e qualcuno che sbircia. Anche se l'utente non commette errori, e abbastanza facile carpire la sua password guardando la tastiera mentre la digita, soprattutto se la password e corta.

Come regola generale, insomma, cambiate la vostra password ogni volta che avete il dubbio che qualcuno l'abbia vista, e comunque cambiatela lo stesso periodicamente. Il comando da digitare e passwd.

Alla risposta Changing password for, seguita dal nome dell'utente e dalla richiesta (current) UNIX password, rispondete con la password attuale. Alla richiesta New UNIX password, rispondete con la nuova password. Infine, alla richiesta Retype new UNIX password, rispondete digitando di nuovo la password. Se Linux risponde con passwd: all authentication tokens updated successfully, ce l'avete fatta.

Cambiare la password puo essere meno facile di quel che sembra, soprattutto nel caso degli utenti normali. Linux e molto schizzinoso in fatto di password. Ad esempio, rifiutera la nuova password:

  • se e troppo simile a quella vecchia;

  • se e troppo corta;

  • se e basata su una parola del dizionario interno di Linux, che considera anche le parole scritte a rovescio;

  • se coincide con il nome dell'utente;

  • se gli gira (giuro). Per essere piu precisi, Linux memorizza in un file le password gia usate e adopera delle complesse regole per decidere se la password nuova che proponete e troppo simile ad una password gia usata.

Il superutente root non e soggetto a queste limitazioni, peraltro dettate dal buonsenso informatico, e puo scegliersi la password che vuole. Non solo: non gli viene chiesta neppure quella vecchia. Per questo motivo non dovete mai lasciare aperta una sessione di root e allontanarvi dal computer. Chiunque puo passare di li e digitare semplicemente passwd, scegliersi una nuova password e diventare padrone del vostro computer, chiudendovi fuori. E come farsi rubare le chiavi di casa, insomma.

Trovate maggiori dettagli su come scegliersi una buona password nel Capitolo 18 (Sicurezza).

Il superutente root, essendo amministratore, puo inoltre cambiare la password agli altri utenti: il comando e passwd seguito dal nome dell'utente. Non gli viene chiesta la vecchia password: questo significa che l'utente normale puo cambiarsi la password quante volte gli pare, ma l'amministratore di sistema puo a sua volta cambiargliela senza aver bisogno di chiedergli quella attuale. Mettiamo bene in chiaro chi comanda, insomma.

Andare in giro per il computer

Inevitabilmente prima o poi avrete bisogno di passare da una directory a un'altra, soprattutto per evitare di digitare ogni volta il percorso completo che porta a un file. Cambiare directory e semplice: si digita cd seguito dal nome della directory di destinazione, preceduto se necessario dal suo percorso.

Ad esempio, supponiamo che siate nella directory /home/cesira. Se volete andare nella directory /home/cesira/Desktop, cioe in una directory che sta sotto quella corrente, basta digitare cd Desktop/.

Per salire di un livello, ad esempio per passare dalla directory /home/cesira/Desktop/ alla directory /home/cesira/, vi basta digitare cd .. (attenzione: e "cd" seguito da uno spazio e da due punti; non confondetevi con il comando CD del DOS, che accetta anche la forma senza spazio).

Se invece volete andare nella directory /usr/bin/, cioe in una directory situata lungo un altro ramo della struttura di directory, dovete digitare anche il percorso: cd /usr/bin/.

Altra finezza: dovunque siate, se digitate cd e basta venite teletrasportati direttamente alla vostra home directory.

Mi raccomando, non pensate di poter scorrazzare liberamente per il disco come fate in Windows. Se state lavorando come utente non privilegiato e cercate di passare a una directory per la quale non avete diritto d'accesso, Linux vi rispondera con un bel Permesso negato. Soltanto root ha il diritto di esplorare tutto il computer.

Elencare i file di una directory

In Linux ci sono due comandi di elencazione dei file: uno e dir, che vi sara familiare se avete usato il DOS o la finestra DOS di Windows. L'altro, piu diffuso, e ls, ed e questo il comando che vi presento qui.

Per elencare il contenuto della directory corrente e sufficiente digitare ls. Se volete includere anche i file nascosti (cioe quelli che iniziano con il punto), aggiungete il parametro -a.

Se volete elencare i file di una directory diversa da quella corrente, digitate ls seguito dal percorso della directory che vi interessa. Ad esempio, ls /tmp elenca tutti i file (non nascosti) contenuti nella directory /tmp. Se volete elencare soltanto i file che hanno un nome specifico, indicate il nome alla fine del comando, come in ls /tmp/foto* per elencare tutti i file contenuti nella directory /tmp/ il cui nome inizia per foto.

Questo formato del comando, pero, elenca soltanto i nomi dei file. Se volete maggiori dettagli, aggiungete il parametro -l, che elenca anche la data di ultimo aggiornamento dei file e lo spazio complessivo occupato dai file elencati.

Fra l'altro, il comando ls -l, se non specificate un nome di file da elencare, elenca tutti i file presenti nella directory e vi dice quanto spazio (espresso in kilobyte) occupano nella riga che inizia con totale.

Un'altra opzione molto comoda e --color (si, con due trattini): attiva la visualizzazione a colori dei nomi dei file e delle directory. Le directory sono elencate in blu, i file in bianco, i file di testo in bianco (in nero nelle finestre di terminale) e i file non di testo (binari) sono elencati in fucsia. Di solito quest'opzione e attivata automaticamente.

Come per tutti gli altri comandi di Linux, anche qui valgono i permessi. Un utente normale non puo elencare i file contenuti nella home directory di un altro utente normale: solo root vede tutto e puo tutto.

Copiare un file

Il comando per copiare un file o una directory, cioe scriverne una copia in un altro posto (o con un altro nome) senza pero cancellare l'originale, e cp. Specificate prima il nome del file di partenza e poi quello di destinazione.

Supponiamo che l'utente cesira abbia nella propria home directory (/home/cesira/) il file foto_fidanzato.jpg e ne voglia creare una copia di nome copia_foto_fidanzato.jpg (si vede che e un fidanzato che le piace proprio tanto): in tal caso il comando diventa:

cp foto_fidanzato.jpg copia_foto_fidanzato.jpg.

Se il file di partenza e/o quello di destinazione non sono nella directory corrente, si specifica il loro percorso. Considerate l'esempio precedente, ma supponete che l'utente cesira voglia creare una copia del suo file nella directory /tmp. Il comando diventa allora:

cp foto_fidanzato.jpg /tmp/foto_fidanzato.jpg

Potete usare i caratteri jolly per specificare un insieme di file, e potete cambiare a vostro piacimento il nome del file di destinazione. Al posto del nome di destinazione potete anche specificare un nome di directory: in questo caso i file verranno copiati dentro la directory che avete specificato.

Una delle stranezze di Linux rispetto al mondo Windows e la gestione delle date dei file. Infatti in Windows, quando copiate un file, la sua data di ultima modifica rimane invariata. In Linux no: la copia prende la data e l'ora in cui e stata creata. Questo puo scombussolare non poco, soprattutto se state creando delle copie di sicurezza e volete sapere qual e la piu recente. Se volete che Linux mantenga uguali le date nel file di partenza e nel file di destinazione, specificate il parametro -p.

Ad esempio, se l'utente cesira vuole creare una copia del file foto_fidanzato.jpg e chiamarla copia_foto_fidanzato.jpg nella medesima directory, ma vuole che la data della copia rimanga uguale a quella dell'originale, deve digitare cp -p foto_fidanzato.jpg copia_foto_fidanzato.jpg.

Spostare un file

Se sapete copiare un file, sapete quasi tutto quello che occorre sapere per spostarlo da un punto a un altro del computer. La struttura del comando mv che si usa per spostare i file e infatti molto simile a quella del comando cp.

Ad esempio, per spostare il file pippo.txt dalla directory corrente alla sottodirectory /Desktop si usa questo comando:

mv pippo.txt Desktop/

Come in cp, potete specificare, se necessario, il percorso dell'attuale ubicazione del file da spostare. Anche qui valgono le solite limitazioni derivanti dai permessi: se siete un utente normale, non potete spostare file da e verso directory sulle quali non avete diritti di scrittura.

Con mv potete spostare sia i file, sia le directory. A differenza di cp, mv non cambia le date dei file.

Rinominare un file

Per cambiare il nome a un file o a una directory non c'e un comando apposito: si usa ancora il comando mv, specificando il nome vecchio e il nome nuovo. Ad esempio:

mv foto_fidanzato.jpg foto_ex_fidanzato.jpg

rinomina il file foto_fidanzato.jpg assegnandogli il nome foto_ex_fidanzato.jpg.

Cancellare un file

C'e poco da raccontare in proposito: il comando e rm seguito dal nome del file da cancellare. Come al solito, non potete cancellare file per i quali non avete i permessi appropriati, e potete specificare il percorso se il file non si trova nella directory corrente.

Una particolarita degna di nota e che rm, quando vi chiede di confermare o meno la richiesta di cancellare un file, accetta sia la Y di Yes, sia la S di Si. Inoltre se specificate -r dopo rm, potete usare questo comando per cancellare una directory e tutte le sue sottodirectory e i file contenuti.

Se dovete eseguire cancellazioni di massa, inoltre, vi conviene usare il parametro -f, che evita la richiesta di conferma per ogni singolo file e procede direttamente alla cancellazione. Assicuratevi di sapere esattamente quello che state facendo!

Visualizzare un file di testo semplice

Questa e senz'altro un'attivita molto frequente, visto il numero di file di questo tipo presenti in qualsiasi installazione di Linux, per cui il sistema operativo e dotato di piu di un comando per gestirla. I due principali sono cat e less. Cominciamo da cat, che equivale al comando type sotto DOS: cat seguito dal nome del file visualizza il contenuto del file. Se il file e troppo lungo per essere contenuto nella schermata, la visualizzazione scorre fino alla fine del file.

Ovviamente questo non e molto utile se vi interessa leggere tutto il file: va bene soltanto se dovete visualizzare rapidamente un file molto breve. Se volete sfogliare per bene un file piu grande, usate less, che ha una miriade di opzioni (leggete bene la sua pagina man) ma ha un uso di base molto semplice: digitate less seguito dal nome del file e usate i tasti PgSu e PgGiu per far scorrere il file. Quando avete finito, digitate q per terminare.

Gestire le directory

Per creare una directory si usa il comando mkdir seguito dal nome della directory da creare; per cancellare una directory esistente, si usa invece rmdir seguito dal nome della directory da cancellare. Attenzione, pero: la directory da cancellare deve essere vuota. Se non lo e, usate il comando rm con il parametro -r seguito dal nome della directory.

Per cambiare nome a una directory, invece, si usa il comando mv che avete gia visto.

Spazio libero

Per sapere quanto spazio libero avete sul disco rigido, digitate df. Per essere precisi, questo comando elenca sia lo spazio libero sia quello utilizzato, e lo fa non soltanto per il disco rigido, ma per tutti i filesystem visibili a Linux. Ad esempio, in Figura 12-4 la risposta del comando df elenca la situazione di ben tre partizioni: /dev/hda1, che e la partizione Windows; /dev/hda2, che e la partizione Linux e risiede sullo stesso disco rigido che ospita la partizione Windows; e /dev/hdb1, che e la partizione unica di un secondo disco rigido.

Nel suo formato standard, df elenca il numero di blocchi da 1024 byte. Tuttavia, coi tempi che corrono, e probabile che troviate piu comprensibile il formato che usa i megabyte come unita di misura: come mostrato in Figura 12-4, il comando per ottenere questo formato e df -m.

Tenere a bada i programmi

Uno dei motivi principali per cui si ricorre alla console e l'eliminazione dei programmi che sono andati in tilt. Linux e stabile, ma non e detto che lo siano tutte le applicazioni che gli girano sotto. Quello che sto per descrivere e molto simile a quello che succede in Windows premendo Ctrl-Alt-Canc: compare una finestra che elenca le applicazioni attive e consente di sceglierle e terminarle individualmente, in modo da riportare Windows al funzionamento normale.

Quando il computer sembra rallentare o bloccarsi, il primo passo per tornare alla normalita e scoprire quale applicazione sta intasando la macchina. Il comando per scoprirlo e top, che elenca i programmi (tecnicamente si chiamano processi) in esecuzione. Lo stesso comando visualizza anche il consumo di memoria e di swapfile e varie altre statistiche di utilizzo.

In caso di applicazioni in crisi, la colonna piu importante e quella dell'utilizzo del processore (%CPU), seguita dalla colonna che indica il consumo di memoria. Un programma che ha un consumo smodato di queste due risorse mentre la macchina e apparentemente inattiva e molto probabilmente bloccato ed e quindi candidato al patibolo digitale.

Per interrompere brutalmente ma non troppo l'esecuzione di un programma, dandogli una piccola possibilita di salvare i file che sta manipolando, si usa il comando kill seguito dal nome del programma (desunto dalla colonna Command della schermata di top). Se kill da solo non riesce a interrompere il programma, digitate kill -9 al posto del normale kill. Questo fermera immediatamente il programma recalcitrante, lasciando cocci dappertutto.

Per motivi abbastanza evidenti, un utente normale non puo cancellare l'esecuzione di programmi che ha lanciato un altro utente. Il compito di poliziotto della CPU e riservato all'utente root.

Proprietari dei file

Ciascun file ha uno o piu proprietari (owner) i cui nomi si scoprono usando il comando ls -l. Ad esempio, un'elencazione di questo tipo:

-rw-r--r-- 1 cesira cesira 1155894 set 16 00:45 foto_fidanzato.jpg

indica che il proprietario e l'utente cesira: il nome e ripetuto due volte perche la prima indica l'utente proprietario, il secondo indica il gruppo di utenti che ne condivide la proprieta. E un'informazione importante, perche il proprietario di un file ha sempre dei diritti (o permessi, come vedremo tra poco) maggiori rispetto agli altri utenti. Ad esempio, un file puo essere modificabile soltanto dal suo proprietario e/o dal gruppo specificato e gli altri lo possono leggere e basta. Ovviamente root puo sempre fare tutto quel che gli pare.

L'indicazione del proprietario di ciascun file ha anche lo scopo di facilitare l'amministrazione del sistema quando ci sono tanti utenti. Chi ha creato quell'enorme file che ha intasato il disco rigido? E facile scoprirlo: il file e firmato con il nome del suo creatore.

Capita spesso di dover cambiare il proprietario di un file. Ad esempio, un file creato da root puo servire a un utente non privilegiato che lo deve modificare, ma se il proprietario del file rimane root, l'utente non privilegiato non puo modificarlo. Allora root cambia il proprietario del file e ne assegna la proprieta all'utente non privilegiato, che puo cosi lavorarci senza ulteriori problemi.

Un altro caso tipico e quando root installa un programma e desidera che l'utente normale possa eseguirlo: root puo assegnarne la proprieta all'utente normale.

Ovviamente questo meccanismo ha delle limitazioni per motivi di sicurezza. Un utente comune, non privilegiato, puo cambiare soltanto le proprieta dei propri file ma non quelle degli altri. Certamente non puo prendere un file che appartiene a root e intestarselo, ne puo prendere uno dei propri file e intestarlo a root.

L'utente normale puo assegnare la proprieta dei propri file soltanto ad utenti normali. E grazie a questa protezione che i file di sistema di Linux sono protetti dagli errori (e dalle incursioni intenzionali) degli utenti comuni: sono tutti intestati a root.

Per cambiare proprietario a un file si usa il comando chown, seguito dal nome del nuovo proprietario e dal nome del file. Tornando all'esempio della foto del fidanzato di Cesira, root puo assegnare il file a un altro utente (diciamo dilbert) digitando chown dilbert foto_fidanzato.jpg. Cosi facendo, le proprieta del file diventeranno le seguenti:

-rw-r--r-- 1 dilbert cesira 1155894 set 16 00:45 foto_fidanzato.jpg

Lo stesso comando puo cambiare anche il gruppo che e proprietario del file: basta specificare, oltre al nome dell'utente, anche il nome del gruppo, separandoli con il segno di "due punti". Ad esempio, chown dilbert:utenti_sfigati foto_fidanzato.jpg assegna la proprieta del file all'utente dilbert e al gruppo utenti_sfigati.

Se volete modificare soltanto il gruppo proprietario, potete usare il comando chgrp. Ad esempio, chgrp utenti_sfigati foto_fidanzato.jpg mantiene l'utente proprietario originale ma cambia il gruppo proprietario in utenti_sfigati.

Permessi

In Linux, file e directory sono contrassegnati da permessi che definiscono chi puo leggerli, chi puo modificarli e chi puo eseguirli. Quando elencate i file con il comando ls, o con kfm nell'interfaccia grafica, avrete notato quella strana serie di lettere apparentemente senza senso, tipo drwxr-xr-x. Non e marziano: e una forma molto, molto concisa per indicare la natura e i permessi di un file.

Il primo carattere definisce il tipo di file: ad esempio, d indica che si tratta di una directory (in Linux, anche le directory sono considerate come file); il trattino indica che si tratta di un file normale; l segnala che il file e un link. Ci sono anche altre possibilita, ma sorvoliamo.

I nove caratteri rimanenti sono suddivisi idealmente in blocchi di tre: il primo blocco indica i permessi che ha l'utente proprietario del file; il secondo indica quelli che ha il gruppo al quale appartiene l'utente; il terzo indica quelli che hanno tutti gli altri utenti.

I caratteri di ciascun blocco indicano il tipo di permesso concesso agli utenti definiti da quel blocco: r indica il permesso di lettura (dall'inglese read); w indica il permesso di scrittura (da write); x segnala il permesso di esecuzione. Il trattino indica "nessun permesso".

Complicato, vero? Chiarisco con qualche esempio.

Immaginate di avere un file che ls -l elenca in questo modo:

-rw-r--r-- 1 cesira cesira 1155894 set 16 00:45 foto_fidanzato.jpg

Il primo carattere (trattino) indica che si tratta di un file normale, e fin qui niente di difficile. La prima terna di caratteri (rw-) specifica i permessi concessi all'utente proprietario (cesira): dato che sono presenti la R e la W, vuol dire che il file puo essere letto e scritto dall'utente.

La seconda terna di caratteri (r--) specifica invece cosa e permesso fare agli utenti del gruppo (che in questo caso e omonimo di cesira): siccome e specificata soltanto la R, gli utenti del gruppo possono soltanto leggere il file ma non modificarlo.

L'ultima terna di caratteri e uguale alla seconda, e indica i permessi concessi agli utenti che non fanno parte del gruppo: in questo caso l'unico permesso concesso e la lettura.

Non e un sistema molto intuitivo, lo so. L'unica cosa che vi posso consigliare e esercitarvi a decifrNon e un sistema molto intuitivo, lo so. L'unica cosa che vi posso consigliare e esercitarvi a decifrare i permessi elencati da ls -l il piu possibile.

Dopo cotanta premessa, finalmente vengo al sodo. Il comando per modificare i permessi e chmod. La sua sintassi e complicata quanto il meccanismo che ho appena descritto, ma cerchero di semplificarne la presentazione. Non e un comando che userete in continuazione, per cui non vergognatevi se vi trovate a consultare piu volte queste pagine.

Ecco la sequenza delle parti che compongono il comando:

  • La parola chmod.

  • Una lettera che specifica per chi volete modificare i permessi: se volete cambiarli per l'utente, la lettera e u; se volete modificarli per il gruppo, e g; se la modifica deve avere effetto sugli altri utenti, e o. Se volete applicare la modifica contemporaneamente a utente, gruppo e altri utenti, la lettera e a.

  • Un segno "+" o "-", a seconda che vogliate aggiungere o togliere un permesso.

  • Una lettera che specifica il tipo di permesso che volete aggiungere o togliere: r per la lettura, w per la scrittura, x per l'esecuzione. Ce ne sono anche altre, ma non e necessario approfondirle qui.

  • Il file a cui devono applicarsi tutte queste modifiche.

Faccio qualche esempio su un ipotetico file pippo.txt:

  • Per togliere all'utente proprietario il diritto di modificare il file (e quindi concedere questo diritto solo a root), digitate chmod u-w pippo.txt. Notate la mancanza di spazi fra la U e il parametro -w.

  • Per ridare il diritto di modifica all'utente proprietario, il comando diventa chmod u+w pippo.txt.

  • Per togliere agli altri utenti il diritto di lettura, per cui solo l'utente proprietario e gli utenti del gruppo proprietario possono leggere il file, digitate chmod o-r pippo.txt.

  • Per togliere a tutti quanti il diritto di lettura, per cui soltanto root puo avere accesso al file, digitate chmod a-r pippo.txt.

Esiste anche un'altra sintassi del comando chmod che si basa su codici numerici, ma ve la risparmio. E in effetti molto efficiente se sapete a memoria i codici numerici che si applicano ai casi piu ricorrenti, ma per carita, in un libro introduttivo come questo sarebbero fuori posto. Per queste cose c'e la relativa pagina man.

 

Per gli amanti della grafica

La storia dei permessi e dei proprietari e piuttosto complicata, vero? Se pensate che una versione grafica di questi comandi possa rendervi le cose un po' piu chiare, nell'interfaccia grafica, e specificamente in kfm, potete cliccare con il pulsante destro sul nome di un file. Otterrete un menu: scegliendo Proprieta e la scheda Permessi potrete fare graficamente quasi tutte le cose descritte qui.

Caro vecchio DOS: Mtools

Se avete dimestichezza con il DOS, sia come sistema operativo autonomo, sia come finestra all'interno di Windows, vi fara piacere sapere che Linux capisce buona parte dei comandi DOS usati per accedere a dischi e dischetti formattati dal DOS. Basta prefissarli con la lettera M, e non e necessario eseguire prima il mount. Collettivamente, questi pseudo-comandi DOS sono conosciuti come mtools.

Ad esempio:

  • mdir a: elenca i file contenuti nel floppy inserito nel drive che in DOS/Windows sarebbe etichettato dalla lettera A:;

  • mcopy a:pippo.jpg copia il file pippo.jpg dal dischetto in A: alla directory corrente;

  • mformat a: formatta in formato DOS il dischetto contenuto nel drive A:;

  • mren a:pippo.jpg pluto.jpg rinomina il file pippo.jpg sul dischetto in A: e gli assegna il nuovo nome pluto.jpg;

  • mdel a:pippo.jpg cancella il file pippo.jpg dal dischetto in A:.

L'elenco completo dei comandi DOS "emulati" da Linux e nella pagina man mtools.

Il funzionamento di questi comandi DOS in Linux richiede un minimo di configurazione del file /etc/mtools.conf. Di norma, questo file e gia impostato in modo da consentire l'accesso ai drive per floppy (A: e B:). Per attivare anche l'accesso alla partizione Windows del computer, aggiungete una riga con questa istruzione:

drive c: file="/dev/hda1"

Lo stesso sistema si puo applicare ad altre partizioni o altri dischi rigidi eventualmente presenti nel computer: ad esempio, un secondo disco rigido formattato da Windows puo essere reso visibile agli mtools sostituendo "c:" con "d:" e "/dev/hda1" con "/dev/hdb1", e cosi via

 

Tutto il materiale presente in questo sito è stato scaricato dalla rete internet. Nel caso ritenete di possedere la proprietà di qualsiasi cosa presente in questo sito, inviate un e-mail a ; verrà levata immediatamente.

Appunti Chimica - Appunti diritto - maturità 2006


Barzellette
Cocktail
Frasi d'Amore
Cartoline online
Download Giochi
Freeware
Immagini
Leggende Metropolitane
Power Point Divertente
Previsioni Meteo
Programmazione
Programmi stupidi
Pubblicità divertenti
Ricette
SMS Pronti
Scuola
Tablature
Testi stupidi
Trucchi cellulari
Video Divertenti

INFORMATICA & INTERNET
Chat
Crittografia
DIVX
Hardware
Linux
Sicurezza
Troyan

ALTRE SEZIONI:
Cantanti (biografie-testi)

LINK SITI GRATIS!
Automobili
Cartoon
Calcio
Cinema
Città
Divertimento
Grafica e foto
Informazione
Musica
Finanza
Moda
Notizie
Natura
Programmi
Shopping
Sport
Tecnologia
Telefonia
Tempo Libero
Umorismo
Utilità
Varie (tantissimi link)
Videogiochi