Introduzione a Linux

[toc]
 

Intro

Cos'è Linux? 

Linux, tecnicamente parlando è un kernel, il nucleo essenziale di un sistema operativo che si occupa della gestione dell'hardware e della rete e che essenzialmente permette a tutti gli altri programmi di girare. La maggior parte delle persone, comunque, quando parlano di LINUX, intendono un sistema operativo completo con tutte le applicazioni che ci girano sopra, alternativo a Microsoft Windows o Apple MacOS.

Linux può rimpiazzare Windows su un PC o Windows NT su di un server. Nel mondo ci sono diversi milioni di utenti di Linux che lo usano nei più disparati ambienti. Linux viene utilizzato come sistema operativo sui server principali da molti siti web e ISP. E' usato come workstation per il design da molti grafici. Viene utilizzato come principale piattaforma di sviluppo per molti programmatori C e Java nel mondo.

Linux è stato originariamente scritto per architetture INTEL 386, ma attualmente gira su di una vasta gamma di hardware sia essa basata sulla famiglia INTEL, su Alpha, SPARC e processori PowerPC. Linux, pur non essendo stato sviluppato all'interno del progetto GNU, viene distribuito in accordo alla GNU GPL.

Linux è un sistema operativo moderno. Gira su architetture a 32-bit e a 64 bit, utilizza il preemptive multitasking, memoria protetta, ed è multiutente. Il che significa che più utenti possono lavorare sul medesimo computer, che ciascuno di essi può eseguire contemporaneamente più programmi e che ciascun programma può eseguire contemporaneamente più funzioni. Quando ci sono molti processi attivi, il sistema può eseguire un programma leggendo dal disco solo un segmento per volta (quello necessario all'esecuzione) allo scopo di ottimizzare la memoria. Inoltre se uno stesso programma viene eseguito più volte contemporaneamente, per esempio da due utenti diversi, la parte di esso non soggetta a modifiche viene condivisa da tutte le istanze. Linux possiede un ricchissimo supporto per il networking: implementa integralmente i protocolli TCP/IP (Transmission Control Protocol / Internet Protocol), SLIP (Serial Line Internet Protocol) e PPP (Point to Point Protocol) per la connessione via modem e PLIP (Parallel Line Internet Protocol). Vengono supportati tutti i servizi di base come TELNET, FTP (File Transfer Protocol), NFS (Network File System) e SMTP (Simple Mail Transfer Protocol).

Linux è stato reso compatibile a livello di codice sorgente con i più noti standard nati intorno a Unix come l'IEEE POSIX, System V e BSD. Per questo motivo su Linux girano quasi tutte le applicazioni che girano su Unix: è sufficiente una ricompilazione. Web server come Apache (che è leader di mercato), potenti mail server come Sendmail e server database (commerciali) come Oracle, Informix, (open source) come MySQL e Postgres girano splendidamente sotto il sistema operativo FREE per eccellenza.

Linux utilizza un proprio file system per la memorizzazione dei file, chiamato ext2fs, ma ne supporta una gamma enorme. Con esso si possono quindi utilizzare anche dischi e dischetti MS-DOS e CD-ROM standard ISO 9660. Attraverso programmi come Samba si può rimpiazzare completamente NT come file server. Attraverso l'uso di tecnologie per il clustering, Linux può essere sfruttato per maneggiare le pesanti richieste per il supercomputing generate da molte applicazioni scientifiche/ ingegneristiche e da ambienti con elevati requisiti di affidabilità.

 

Chi usa Linux ?

Continuiamo l'introduzione a LINUX rispondendo ad una delle più comuni domande che ci si pone all'inizio: Chi usa Linux?

Linux è diffuso ormai sia in organismi statali e governativi (americani! - purtroppo da noi è già tanto che ci sia un vecchio Olivetti!) che nell'industria. In molti casi la decisione iniziale di andare su questo sistema operativo è stata presa per ragioni di costo, ma poi Linux ha dimostrato di essere vincente anche in molti altri aspetti. La NASA ha mandato Linux nello Spazio utilizzandolo sullo Space Shuttle quest'anno(1999), la Kodak lo ha adottato sulla sua nuova piattaforma per il processamento del colore, la Corel ha lanciato nel 98 il suo NC e nonostante Windows CE - il sistema operativo utilizzato è Linux. La Boeing usa Linux, la Xerox lo ha adottato. Le SouthWest Airlines e Sixt Rent-a-Car usano Linux. E non dimentichiamo CISCO, il gruppo IKEA e Mercedes. Si dice che anche Lucent ne faccia uso! Linux è pienamente supportato da Netscape, viene fornito con i servizi di Novell Directory, GroupWare, Netware Client, Java 1.1 SDK; Nonostante la maggior parte delle nuove versioni di sistemi operativi sul mercato siano a 32 bit - Linux è disponibile a 32-bit su macchine a 32 e a 64-bit su macchine a 64 e può essere acquistato nelle più grosse catene di personal computer negli Stati Uniti: EggHead, CompUSA, Fry's, MicroCentre, Computer City, J&R's. Altri luoghi dove Linux ha una significativa quota di penetrazione sul mercato sono web server, Internet provider e Università.
Ciò dimostra che Linux ha davvero qualcosa da offrire. L'architettura Linux è già la seconda piattaforma più comune come Web Server negli USA seconda solo Solaris (utilizzando entrambi l'Apache Web Server). Inoltre molte persone che si sono accorte di aver bisogno di conoscere UNIX per la loro carriera, hanno deciso di usare Linux a casa come strumento di apprendimento. Linux sta diventando, inoltre, diffuso in sistemi avanzati e chiavi in mano, tra cui firewall, routers e Point of Sales systems (POS).

 

Cosa sono le distribuzioni

In passato, per riuscire a far funzionare un PC con Linux occorreva recuperare i vari componenti da siti diversi ed assemblarli, facendo in modo che si "incastrassero" uno con l'altro (Linux è solo il Kernel del Sistema Operativo). Questo compito non era semplicissimo, e solo persone esperte potevano provare a mettere insieme una versione funzionante. Col tempo, alcuni hacker (usato con accezione positiva) che erano riusciti ad assemblare tutti i pezzi, misero a disposizione il frutto del loro lavoro agli altri.

Nacquero così le cosiddette distribuzioni, vale a dire raccolte di software libero basato su Linux, in grado di formare un sistema operativo funzionante, arricchite magari con alcuni programmi non solo OpenSource ma anche di tipo commerciale.

La distribuzione di solito fornisce un programma di installazione con interfaccia "amichevole", diversi strumenti avanzati di amministrazione, e svariati software che arrivano a coprire tutti i campi.

Non esistono distribuzioni migliori o peggiori, ognuna ha un differente utenza di riferimento. Ogni distribuzione si differenzia per alcuni parametri: tipo di supporto tecnico, filosofia, manuali, tipologia di software distribuito, struttura delle directory, installazione, tool di configurazione. Comunque il Sistema Operativo ed il software di base è identico tra tutte le distribuzioni: Linux.

Ecco una breve lista di distribuzioni più comuni:

Red Hat Linux (http://www.it.redhat.com)
La più famosa, e leader di mercato in USA.

S.u.S.E. Linux (http://www.suse.de/it/)
La distribuzione europea, molto facile da installare.

Debian GNU/Linux (http://www.debian.org)
La più "pura", offre solo software libero

Linux Mandrake (http://www.linux-mandrake.com/it/)
Basata sulla Red Hat, ma più facile e veloce da configurare.

Slackware Linux (http://www.slackware.com) (http://www.cdrom.com)
La prima distribuzione in assoluto. Ora non tanto facile da installare.

Caldera OpenLinux (http://www.caldera.com) (http://www.caldera.it)
La distribuzione più commerciale, orientata principalmente alle imprese.

TurboLinux (http://www.turbolinux.com)
Distribuzione orientata alle imprese, molto diffusa in Estremo Oriente.

Essendo composte da moltissimo software le distribuzioni richiedono tempi piuttosto lunghi per essere scaricate via Internet. E' preferibile acquistarli su CD-ROM; i prezzi sono molto bassi in quanto le aziende si fanno pagare solo il costo del lavoro necessario per la realizzazione e la distribuzione del CD-ROM (circa 50.000 lit, esclusa la distribuzione Caldera che ha aggiunto diverso software commerciale e quindi il costo è molto più alto).

Negli ultimi tempi diverse riviste del settore offrono gratuitamente dei CD contenenti le distribuzioni più conosciute. È sufficiente farsi un giro nelle edicole più fornite per trovare qualche qualche CD.
Le distribuzioni che si trovano in edicola sono a volte "monche" rispetto a quelle originali, non tutti i pacchetti sono presenti. Le distribuzioni originali sono composte da più cd-rom ed includono, per bilanciare il loro costo, oltre al manuale d'installazione anche il supporto telefonico o via e-mail.
Oppure potete farvela masterizzare da un amico: è perfettamente legale.

Il "Dual Boot" parte I

Come fare ad installare Linux su un computer, senza togliere Windows? Molte persone "spippolando" costantemente sono diventate abbastanza smaliziate con Windows, e avendo sentito parlare di Linux o essendo curiose o volendo sfidare se stesse si cimentano in Linux.

Queste persone dispongono però di un solo computer e non sono disposte a cancellare Windows.
Linux per fortuna è stato pensato come un sistema flessibile e molte distribuzioni offrono svariati strumenti e utility che permettono di installarlo come secondo sistema operativo sul proprio elaboratore, senza che ci sia la necessità di riinstallare da zero il sistema operativo che originariamente vi si trovava.

Definiamo intanto qualche concetto base. L'hard disk è essenzialmente una massa di spazio libero diviso in sezioni, chiamate partizioni. Per gli utenti di Dos/Windows queste partizioni sono viste come C: e D:, gli utenti di Linux le vedono invece rispettivamente come /dev/hda1 e /dev/hda2. Lo scopo di una partizione è di superare i limiti del disco, permettendo, tra le altre cose, a diversi sistemi operativi di condividere un singolo hard disk (che potenzialmente potrebbe usare diversi formati per l'organizzazione dei file, i cosiddetti "filesystem", su ogni partizione).
Il vostro computer probabilmente vi è arrivato con poche partizioni (tipicamente una), tutte formattate con la FAT o la FAT32, ossia il filesystem che contiene Windows. Il trucco è maneggiare queste partizioni allo scopo di ospitarci LINUX, senza danneggiare alcun dato contenuto.

Il primo strumento che useremo è FIPS:
FIPS è un'utility inclusa in molte distribuzioni di Linux. FIPS è un programma in grado di ridimensionare ("resize") una partizione Windows già esistente allo scopo di creare dello spazio libero su disco. Questa operazione di ridimensionamento di una partizione Windows fornirà lo spazio sul disco necessario ad installare Linux, senza dover stare ad acquistare ed installarne un secondo. (Se poi avete comunque un secondo hard disk, meglio ancora: è la situazione ideale).
Prima di usare FIPS, è assolutamente necessario deframmentare la partizione Windows in modo da muovere tutti i dati nella parte iniziale del disco. Dopo l'operazione di deframmentazione si può partire con il ridimensionamento della partizione.
ATTENZIONE: l'uso di FIPS può causare perdita di dati, per cui è fortemente consigliato effettuare un backup del sistema o quanto meno dei dati piu` importanti.

FIPS può essere scaricato da http://metalab.unc.edu/pub/Linux/system/install oppure da un sito nostrano (andate su un motore di ricerca e digitate FIPS). Insieme a FIPS vi è un file README che fornisce un buon esempio di come usarlo. Ora che avete sufficiente spazio libero siamo in grado di procedere all'installazione di Linux sullo stesso hard disk in cui si trova l'installazione di Windows.
Ripeto, questa utility può causare una perdita di dati e di conseguenza la completa rinstallazione del sistema e dei dati installati originariamente. Quindi procedete con cautela!

Per poter effettuare il partizionamento e il resizing del disco esistono anche dei programmi commerciali, ad esempio Partition Magic, che però costano tanto, soprattutto in rapporto al numero di volte che si utilizzano.

Nel prossimo articolo vedremo LILO, lo strumento principe per il doppio boot.

 

Il "Dual Boot" parte II

LILO (LInux LOader) è il principale strumento che fornisce la possibilità di effettuare il "dual boot" tra LINUX ed un altro sistema operativo. Con LILO si può scegliere con quale sistema operativo fare il boot quando si accende il computer.

Il "Booting" è semplicemente il processo attraverso il quale si tira su il sistema dopo l'accensione.
Ciò include il controllo dei dischi, il caricamento dei programmi essenziali e cosi` via. LILO adempie a queste compiti leggendo un file di configurazione (che si trova in /etc/lilo.conf) che definisce ogni sistema operativo che si trova sul computer e la modalità di accesso al programma di "boot" di ognuno di essi. Questo file di configurazione è creato dall'utente ed è capace di supportare una vasta gamma di sistemi operativi. Dopo aver effettuato ogni modifica a lilo.conf, dovete richiamare un programma (/sbin/lilo) per scrivere tali modifiche nel settore di boot dell'hard disk.
LILO è capace di fare il booting di sistemi operativi da dischi multipli, così come da dischi grandi con più di 1024 cilindri (vale a dire tutti quelli più grandi di 8 Gb).
Quest'ultima funzionalità (il superamento della soglia dei 1024 cilindri) è stata introdotta recentemente e potrebbe richiedere un update del programma, nel caso stiate utilizzando delle distribuzioni vecchiotte.

GRUB è un programma che sta diventando molto comune. Sostanzialmente si tratta di una versione grafica di LILO e in alcune distribuzioni viene fornito come "boot loader" di default. Sia che usiate GRUB o LILO, i benefici sono gli stessi: avete comunque la flessibilita` di installare e di fare il boot di diversi sistemi operativi sullo stesso computer.
La maggior parte delle distribuzioni Linux hanno un proceso di installazione che riconosce la partizione Windows esistente e configura LILO automaticamente. Quindi, in genere non dovreste mettere le mani da nessuna parte. Ma se non avete nessun'altra opzione, non vi rimane altra possibilità che editare il file /etc/lilo.conf (ricordate che dovete essere root, NON come utente normale). A prima vista potrebbe sembrare un pochino criptico, perciò spieghiamo un attimino cosa significano le varie righe. In una configurazione finale, con doppio boot dovreste vedere qualcosa come questo:

boot=/dev/hda
root=/dev/hda2
install=/boot/boot.b
map=/boot/map
image=/boot/vmlinuz
label=Linux
read-only
other=/dev/hda1
label=windows
table=/dev/hda

La sezione intitolata "other" è quella che ci interessa. Avete bisogno di aggiungere a mano questa sezione. /dev/hda1 è la prima partizione sul disco IDE (ovvero C: in Windows). La seconda partizione (D:) dovrebbe essere /dev/hda2, e così via. Generalmente, Windows è installato sul drive C:, così voi dovete usare /dev/hda1. Questo semplicemente dice a LILO da quale partizione effettuare il boot. L'etichetta (LABEL) è quella che dovrai digitare al prompt di boot che appare subito dopo l'accensione del sistema. Il prompt di boot si presenta semplicemente come "LILO". Appena inserite la parola "windows", LILO farà il boot in tale sistema operativo. Tutto ciò è sufficiente se state usando Windows 95 o 98. Se invece utilizzate Windows NT o Windows 2000 è necessario editare dei file sul sistema Windows. Per ulteriori informazioni date un'occhiata a http://www.heise.de/ct/english/99/12/166/ oppure leggete uno dei prossimi numeri di Pill-o-Linux ;-) .

Come procedere nel caso in cui si stia installando un sistema da zero, senza alcun sistema operativo sopra di esso?
Nel caso in cui abbiate acquistato un hard disk nuovo, oppure un computer in cui non ci sia ancora installato nulla, dovreste caricare prima Windows. L'unica cosa da considerare nella installazione di Windows è che quando inizialmente si partiziona il disco, dovete lasciare sufficiente spazio non partizionato per caricarvi Linux. Una volta installato Windows e provato il suo corretto funzionamento, allora si può procedere alla installazione di Linux. La ragione della priorità di installazione di Windows sta nel fatto che quest'ultimo non riconosce nessun concorrente e non è previsto nessun altro boot di un diverso sistema operativo. Se installate prima Linux e poi Windows, una volta riavviato il sistema non avrete l'opzione di boot per Linux. Ciò si evita appunto installando prima Windows e poi Linux. Se per qualche motivo avete installato Window dopo Linux, bisogna fare il boot di Linux dal dischetto di boot (che vi siete sicuramente fatto durante l'installazione e accuratamente conservato) e poi ricaricare LILO per sovrascrivere il programma di boot di Windows. Seguendo questi passi generali, in un paio d'ore avrete a disposizione un nuovo sistema su cui gira sia un potente sistema operativo Unix-like come Linux, sia Windows.

LOADLIN è un altra utility per fare il booting di più sistemi operativi, ma segue un approccio differente da Grub e da LILO. Loadlin è una utility DOS che è estremamente utile per l'installazione di UMSDOS Linux. Non staremo a parlare in questo numero dell'installazione UMSDOS, ma fondamentalmente è un metodo per installare Linux sul vostro filesystem già esistente senza dover soffrire il panico del ripartizionamento dei dischi. Il vantaggio è la semplicità estrema, lo svantaggio è il degrado delle prestazioni.

Lnx4Win ("Linux for Windows") è un ulteriore utility con cui è possibile installare Linux su di una partizione Windows senza alcun passo di partizionamento. E' un approccio completamente diverso da UMSDOS, utilizza il file system EXT2 su di una partizione FAT32. Torneremo in seguito su queste ultime due utility.

Linux è sempre stato conosciuto per la sua flessibilità. Linux è capace di maneggiare con sistemi operativi diversi da Windows. Gli esempi sono stati fatti con Windows essendo questo il sistema operativo più comune, ma non c'é alcun problema a fare il dual boot tra Linux e qualche altro Sistema. Linux ha la capacità nativa (implementata direttamente nel Kernel) di permettere la scrittura e la lettura nelle partizioni Windows (in NT e 2000 è possibile solo la lettura) per rendere il dual booting ancora più funzionale. Anche con Windows si possono anche leggere la partizioni di Linux, ma c`é bisogno di applicazioni specializzate come gli LTOOLS (che vedremo in uno dei prossimi articoli). Installare Linux come secondo sistema operativo è una alternativa meravigliosa per tutte quelle persone che sono curiose, o hanno intenzione di lavorare con Linux, ma preferirebbero evitare il costo di un secondo computer .

 

Linux e Unix (Parte I)

La maggior parte delle persone migrano a Linux proveniendo da Windows, per cui le prime volte si trovano spaesate dal nuovo ambiente che gli appare. Anche se ultimamente gli ambienti grafici per Linux (KDE e GNOME) sono sempre più orientati ad apparire Windows-like per facilitare l'impatto del utente non smaliziato, ci si troverà prima o poi a dover fare i conti con qualcosa di più approfondito e meno facile che non sia cambiare gli sfondi del desktop o scrivere un semplice documento. Quando si arriva a questo punto dobbiamo necessariemente addentrarci nella struttura di Linux, che deriva da quella di Unix; ed ecco il perché delle tante diversità con il Sistema operativo Microsoft.
Linux può essere considerato un clone di Unix, la maggior parte dei comandi implementati in Linux sono stati ripresi dai vari sistemi Unix e svolgono le stesse funzioni. In questo numero e nei prossimi due daremo qualche principio fondamentale di Unix con cui è necessario familiarizzare per comprendere a fondo Linux.
L'idea non è quella di redarre un tutorial di Unix, vorrei semplicemente elencare una lista di argomenti che devono essere molto chiari, per poter configurare ed utilizzare il nostro sistema operativo preferito per svolgere i compiti quotidiani.

Maiuscole/minuscole

Contrariamente ai sistemi DOS/Windows, Unix è CASE SENSITIVE ossia differenzia i caratteri maiuscoli da quelli minuscoli. Nei comandi impartiti ai sistemi UNIX i caratteri minuscoli sono quindi diversi dai caratteri maiuscoli.
Il comando "ls" sarà diverso da "LS", ma anche "Ls" è diverso da "lS" ecc. Attenzione quindi a come scrivete i comandi e soprattutto le password.

Il terminale

Con "terminale" si intende un dispositivo finale con poco o nessun software, collegato ad un mainframe (elaboratore centrale) o a un server su cui girano i programmi "intelligenti". Il terminale era l'unico modo di comunicare con il mainframe ai tempi in cui Unix fu creato. Nei sistemi moderni il concetto base di terminale è rimasto, anche se non vi sono dei terminali veri e propri, ma gli emulatori, che possiamo aprire sul nostro desktop ed attraverso i quali possiamo immettere i vari comandi.

Unix da shell

Come utenti si interagisce con il sistema operativo UNIX dando i comandi alla shell attraverso una linea di comando fornita dall'emulatore di terminale sul desktop.
La SHELL è un programma sofisticato che intepreta ed esegue i comandi che gli vengono passati in un formato specifico attraverso una semplice interfaccia. L'interfaccia è semplicemente la linea di comando, molto simile a quella del DOS. La shell permette l'esecuzione di diversi scripts, ossia una serie di comandi che svolgono determinate funzioni in un ordine prestabilito. Sotto Linux sono disponibili diversi tipi di shell, ma quella più utilizzata (ed installata per default) è la bash (Bourne Again SHell) che deriva dalla shell UNIX sh.
Molti file che si incontreranno sono essenzialmente degli script di shell che possono essere eseguiti in automatico (quando si effettua il logon ad esempio), o quando invocati dal prompt dei comandi.

 

Linux e Unix (Parte II)

Unix è un sistema multi-utente

Il "superuser" o superutente (root) è la persona a cui è permesso effettuare importanti compiti di amministrazione del sistema, come ad esempio il creare partizioni e file system o installare applicazioni.
In generale, nei sistemi di rete e multiutente questa funzione è compito dell'amministratore di sistema. Nei nostri computer di casa questa funzione deve essere svolta da voi stessi per cui è necessario definire un apposito utente. Quindi sul vostro sistema avrete almeno due utenti distinti con le rispettive password diverse.
Quando entrate come utente avrete la vostra directory personale, da cui potete personalizzare molti aspetti dell'ambiente di lavoro come più vi piacciono. Alcune volte capiterà di ottenere un messaggio di errore del tipo "access denied" (acesso negato) quando si cerca di manipolare un determinato file. Questo deriva dal concetto di "permessi" e "proprietà" insito in ogni sistema multiutente. L'utente che è proprietario di un file può specificare quale altro utente ha la possibilità di leggerlo, scriverlo o eseguirlo. Questi permessi possono essere impostati a tre livelli: il livello personale (ad es. posso vietarmi di riscrivere un file, per evitare accidentali modifiche), il livello di gruppo (ad esempio ho un gruppo di lavoro con cui condivido documenti, file o progetti), il livello globale (posso permettere a chiunque di leggere il mio file, ma non di riscriverlo). Per settare questi permessi si usano i comandi chown e chmod.

AVVERTENZA: Attenzione, come root, i suddetti permessi sui file NON valgono, per cui si possono accidentalmente fare dei danni. Ad esempio se si fa un errore quando si cancella un gruppo di file, si potrebbero cancellare TUTTI i file dell' intero Hard Disk.
Per cui evitate di entrare nel sistema come root, se non quando è strettamente necessario per svolgere particolari compiti; quando poi dovete entrarci, ricordatevi sempre di digitare "exit" appena possibile, per ritornare all'utente normale.

 

Unix è un sistema multi-tasking

Con i sistemi Unix è possibile effettuare diversi compiti (task) contemporaneamente.
Ad ogni task o programma (chiamato job) è assegnato un numero di processo unico (chiamato PID). Attraverso tale numero, se necessario, è possibile far terminare (kill) tale processo. Ogni processo può essere eseguito in foreground (ossia quando viene eseguito non c'é la possibilità di ulteriori inserimenti sul terminale) oppure in background (mentre viene eseguito, si possono far partire altri comandi).
Esistono diversi comandi per monitorare (ps, top), cambiare (fg, bg) o terminare (kill) processi con i quali bisogna familiarizzare. Se alla fine di un comando dato a video si digita anche una "&" , il processo che partirà verrà eseguito in background, quindi si libera la shell e sarà possibile far partire altri processi.

 

Help online in Unix

In ogni installazione di UNIX è presente un sistema di help molto corposo sotto forma di manuali (comando man). La pagine dei manuali documentano molti aspetti del vostro sistema, come programmi specifici, comandi, utility e concetti relativi a Unix. Se volete fare una prova date il comando "man man" e vi apparirà il manuale del comando man.
Per saperne di più su di un programma "XYZ" digitate "man XYZ"; questa è la maniera più facile e veloce per imparare direttamente dal vostro sistema UNIX.

 

La gerarchia delle directory di Unix e dei file

I sistemi UNIX sono caratterizzati da una semplice ed elegante struttura di directory, che include anche directory per dispositivi come hard disk, floppy, CDROM e drive ZIP.
Si può navigare tra directory e file specificando i percorsi assoluti o relativi da linea di comando. UNIX si basa sulla filosofia per cui "ogni cosa è un file" ("everything is a file"), per questo tutto si descrive attraverso opportuni file in dette directory (sono anch'esse dei file, seppur speciali).
Certi dispositivi come gli hard disk sono inseriti nella gerarchia delle directory al momento del boot, altri invece possono essere inseriti (mounted) solo quando necessario, utilizzando opportuni comandi (mount e fstab).
Il concetto di MOUNT rende differente UNIX da Windows. In Unix esiste UNA sola directory alla quale poi vanno montate le altre, ad esempio i dischetti ed i Cd-rom. Quindi per fare un esempio, riferendoci al CD ROM non digiteremo "D:" (come in DOS) ma /mnt/cdrom.

 

Linux e Unix (Parte III)

Comandi ed operazioni Unix

Ecco alcuni comandi base necessari a svolgere i compiti di ogni giorno:

touch - crea un file
cp - copia file
mv - sposta file o rinomina
rm - cancella file
ls - lista dei file contenuti nella directory
cd - cambio directory
more - visualizza il contenuto di un file, una schermata alla volta
find - per cercare i file
locate - un'altra maniera di cercare file.

Tali comandi sono usati con delle opzioni e degli argomenti da specificare per svolgere i compiti a cui sono destinati.
Quando siete insicuri su qual è il modo migliore di usarli, sfogliate pure le pagine dei manuali (man nomecomando).
Questa è la maniera migliore per accrescere le proprie conoscenze sui sistemi UNIX.

 

Link simbolici in Unix

Nelle directory Unix, vi imbatterete sicuramente in strani file i cui nomi terminano con @. In effetti non si tratta di veri e propri file, ma di "riferimenti" conosciuti come LINK. Un link è semplicemente il meccanismo che permette allo stesso file di essere presente in più di una directory contemporaneamente, tanto che tutte le eventuali modifiche (tranne la cancellazione) si ripercuotono sul file originale. Il comando `ln -s' crea un link simbolico tra due file o directory specificati. Ad esempio se uno script "mioscript" cerca di installare un programma in una determinata directory es. /usr/pippo, ma voi desiderate installarlo nella directory /usr/local (perché ad esempio avete tanto spazio a disposizione), create un link simbolico tra le directory prima dell'installazione:
ln -s /usr/local /usr/pippo.
In questa maniera i file del programma andranno a finire in /usr/local ma tutti gli altri programmi potranno ancora riferire a /usr/pippo. Ogni file scritto in /usr/pippo sarà in realtà scritto in /usr/local, ma comparirà in entrambe le locazioni.
Il comando per il link simbolico può essere usato anche in maniera analoga ai collegamenti in Windows, cioé per puntare in maniera facile e veloce a directory richiamate molto spesso.

Variabili d'ambiente Unix

Una shell permette all'utente di definire una variabile, che è semplicemente un dato a cui è stato assegnato un nome univoco. Per vedere tutte le tue variabili di shell (chiamate "environmental variable") correnti ed i loro valori, è sufficiente digitare "set" nella linea di comando.
La shell permette inoltre di esportare tale variabile nell'ambiente dove sarà poi accessibile da tutti i comandi che vengono eseguiti in seguito. Una delle variabili d'ambiente più importanti sui sistemi UNIX è la variabile d'ambiente PATH.
Per esempio quando digitate un comando sul prompt, la shell deve conoscere in quale directory il programma risiede per poterlo eseguire. Per tutti i comandi comuni, le directory relative sono generalmente prestabilite nella variabile d'ambiente PATH (impostata per default) e le directory sono semplicemente elencate in una linea, separati da due punti:
PATH= /usr/local/bin:/bin:/usr/bin etc.

Se poi installate un ulteriore programma che si chiama "IniziaP", la shell deve essere informata in quale directory lo script "IniziaP" risiede.
Se questa directory non è specificata nella variabile d'ambiente, va inserita, altrimenti il programma deve essere eseguito specificando il percorso completo. Le variabili d'ambiente si trovano in dei file di "profilo" che risiedono nella home directory di ogni utente.

 

Leggere i dischi Linux da Windows

Come faccio a leggere le partizioni Linux da Windows?

Vi sarà sicuramente capitato di essere dentro Linux e di dover leggere dei file che si trovano nella partizione di Windows. Linux da' la possibilità di collegarvi ad altri filesystem in maniera molto facile (vedi il comando mount e gli MTOOLS).
E se invece siamo in Windows e abbiamo un disperato bisogno di leggere un file che si trova nella partizione Linux, come facciamo?

Tra gli strumenti più potenti per compiere questa operazione ci sono gli LTOOLS
(http://www.it.fht-esslingen.de/~zimmerma/software/ltools.htm)

Gli LTOOLS sono un insieme di strumenti a linea di comando che permettono la scrittura e la lettura sul/dal filesystem extended2 (lo standard di Linux) da/a Dos-Windows (3.x, 9.x, NT), funzionante sulla stessa macchina.

Ecco una lista di alcuni comandi:
<ldir> per avere la lista di files e directory,
<lread,lwrite> per copiare file da Linux a Windows e viceversa,
<ldel> per cancellare file Linux,
<lren> per rinominare file Linux,
<lmkdir> per creare una nuova directory linux,
<lln> per creare dei link simbolici,
<lchange> per modificare i diritti d'acceso ai file Linux,

Non vi piace l'interfaccia a linea di comando?
Potete usare LTOOLgui - un GUI (Graphical User Interface) scritta in Java per gli LTOOLS. Otterrete una finestra stile Windows con due sottofinestre: in una vi sarà l'albero della directory Windows e nell'altro quello di Linux.
La copia tra i due filesystem puo` essere fatta con il Copia-e-Incolla o con il Drag-and-Drop. Cliccando con il tasto destro del mouse su di un file appare una finestra dove è possibile cambiare gli attributi del file. Insomma tutto in perfetto stile Windows. Inoltre Con <LREADjav> potete accedere al vostro filesystem anche in remoto.

Non vi piace nemmeno Java? Allora usate il vostro Browser Web preferito!
Tutto quello che dovete fare è avviare il programma <LREADsrv> e digitare come URL sul vostro Browser "http://localhost".
A questo punto le directory di Linux appariranno in maniera grafica sul vostro Browser Web e si potranno effettuare le varie operazioni sui file, come se si stesse navigando su Internet.
LREADsrv è un piccolo web-server locale che attraverso delle apposite interfaccie accede agli LTOOLS via HTTP-requests e converte dinamicamente gli output in pagine HTML. Anche con LREADsrv potete avere accesso remoto al vostro filesystem, in maniera però non tanto sicura.

Concludendo, se state eseguendo Windows e avete bisogno urgente di alcuni file che risiedono sul disco Linux usate gli LTOOLS. Posso tornare utili quando avete "smanettato" tanto e il vostro sistema Linux non ne vuol più sapere di partire. Potete provare ad accedere al filesystem attraverso Dos/Windows e cercare di
riparare il danno fatto...

Ecco il sito dove scaricare questi potenti stumenti:
http://www.it.fht-esslingen.de/~zimmerma/software/ltoolsDWLD.shtml

Linux "piantato"?

Linux si "pianta" (ovvero si blocca) molto difficilmente, soprattutto se paragonato alle frequenti schermate blu di Windows. Qualche volta però capita anche a Linux, in specialmodo quando si utilizzano applicazioni non testate a fondo.

Comunque se vi trovate in una shell ed il vostro sistema Linux si dovesse piantare, assicuratevi di effettuare i seguenti passi uno dopo l'altro per fa si che il sistema si chiuda con i minimi danni possibili:

1) Premere contemporaneamente i tasti CTRL-ALT-SysRq-S per sincronizzare tutti i drives.

2) Premere contemporaneamente i tasti CTRL-ALT-SysRq-U per fare 'l'umount" ("smontare") dei dischi.

3) Infine premere contemporaneamente i tasti CTRL-ALT-SysRq-B per effettuare il reboot.

Nota: Il tasto <SysRq> si trova solitamente in alto sulla destra, sulle tastiere italiane si può chiamare anche con il nome <Rsist>.

Se si pianta un`applicazione X-Windows per uscire è sufficiente premere contemporaneamente i tasti CTRL-ALT-BACKSPACE.

Quale è file più grande sul tuo hard-disk?



In questo breve articoletto lasciamo spazio alla curiosità...

Per conoscere qual è il file che ha la dimensione più grande nella propria directory basta digitare, in una finestra di shell, il seguente comando:

ls -l | sort +4n

In pratica si richiede una lista della directory in formato esteso (opzione -l) che poi diamo come input al comando <sort>. Tale comando utilizzerà come chiave i valori numerici della quarta colonna (opzione +4n), ossia ordinerà i file in base alla loro dimensione in byte.

Se poi volete proprio sapere quale è il file più grande di tutto il disco, digitate pure:

cd /
ls -lR | sort +4n

Dovete però attendere un pò di tempo, perché il comando <ls> effettua la scansione di tutto il disco, partendo dalla root e listando i file in modo ricorsivo in tutte le directory (opzione R).

I file compressi



Cosa sono i file .tar.gz - .tgz - .bzip2 - .zip? A cosa servono?
Innanzitutto si tratta si archivi (files) compressi, con lo scopo quindi di raggrupparli e diminuirne il peso in termini di kb rendendoli così più gestibili e più leggeri in modo da essere scambiati e/o scaricati dal Web con maggiore facilità. Ma vediamo le caratteristiche dei vari tipi uno per volta.

Gli archivi .tar.gz sono un gruppo di file uniti insieme dal comando <tar> (per ulteriori informazioni vedi dalla guida in linea di Linux digitando "man tar") e compressi con <gzip> (vedi "man gzip" per ulteriori informazioni).
Si incontrano ad esempio quando cerchiamo un programma da scaricare da Internet e contengono, in genere, il codice sorgente delle applicazioni che vi accingete ad installare. Per scompattare uno di questi file dovete eseguire il seguente comando:

> tar -xvzf filecompresso.tar.gz

dove "filecompresso.tar.gz" è il nome del file da scompattare.

I file .tgz sono molto simili, e spesso confusi, con i .tar.gz.
Nel 99% dei casi i file .tgz possono essere visti come i package .tar.gz, nel rimanente 1% dei casi sono dei package per la distribuzione Slackware (quindi attenzione a non installare il package sbagliato per la tua distribuzione).
I file .tgz si scompattano con lo stesso comando dato sopra per i file .tar.gz.

I file .bzip2 sono compressi usando un algoritmo differente da quello utilizzato da gzip. L'algoritmo bzip2 è in genere più efficiente ed è consigliato per il download di file di considerevoli dimensioni.
Questi file posso essere scompattati con i seguenti comandi:

> bunzip2 filecompresso.tar.bz2
> tar -xvf filecompresso.tar

NB: il programma bzip2 non sempre però è installato in automatico.

I classici file compressi del tipo .zip sono tipicamente creati su Windows utilizando programmi come Winzip (o cloni come ad esempio EasyZip) o PKZIP, sono gestibili tranquillamente anche con Linux.
Per "unzipparli" sotto Linux è disponibile il comando:

> unzip filecompresso.zip

dove "filecompresso.zip" è il nome del file da scompattare.

I comandi "mount" e "umount" ovvero come accedere alle unità di memorizzazione

Nei sistemi Unix e derivati, per poter accedere ad un'unità periferica di memorizzazione, occorre che il filesystem di questa sia montato in quello globale.
Contrariamente al DOS non si può indicare una directory o un file di un certo dispositivo (in DOS si digitava "A:" per accedere al floppy disk). Il montaggio è l'operazione con cui il filesystem di una qualunque unità di memorizzazione viene "innestato" in una directory del filesystem già attivo (per accedere al floppy disk
bisogna fare ad esempio "cd /mnt/floppy").
La directory che le maggior parte delle distribuzioni usano per montare temporaneamente le unità esterne è "/mnt".

Facciamo un esempio:
Con il seguente comando
--> mount -t ext2 /dev/fd0 /mnt/floppy
monto il dischetto (il cui device si chiama "/dev/fd0") con filesystem di
Linux ("-t ext2") nella directory "/mnt/floppy".

Da questo momento in poi e fino all'operazione di "umount" potremo accedere
al dischetto semplicemente eseguendo il comando "cd /mnt/floppy".

Come faccio ad effettuare l'umount (cioé l'operazione inversa di smontaggio)?

E' necessario digitare il comando:
--> umount device

Ad esempio per fare l'unmount del floppy
--> umount /dev/fd0
oppure se il floppy è montato nella directory /mnt/floppy
--> umount /mnt/floppy

Il comando umount "stacca" il file system menzionato dal resto della gerarchia dei file. Un file system può essere specificato sia dandogli la directory dove
esso è montato, che fornendo il device speciale su ci si appoggia.
Attenzione: quando un dispositivo è occupato NON può essere "smontato".
Ad esempio quando ci sono dei file aperti su esso oppure qualche processo
sta lavorando proprio su quella directory o ancora quando contiene uno swap file.


Come posso vedere quali dispositivi sono "montati"?

Ci sono due percorsi: vedere il contenuto di "/etc/mtab", oppure eseguire il
comando "mount" senza parametri.

Per maggiori informazioni consultare i, sempre validi, manuali:
"man mount", "man umount", "man fstab".

Il mount automatico all'avvio di Linux

E' possibile effettuare il mount automatico all'avvio di Linux?

Certo che si può!
Dobbiamo modificare il file "/etc/fstab".
Inseriamo una linea corrispondente al filesystem da montare.
Il quarto campo in questa linea, deve contentere il valore "defaults" oppure "auto".

Il file "/etc/fstab".

"fstab" contiene una descrizione dei vari filesystem. Ogni filesystem viene descritto mediante una linea così formata:
<Campo1> <Campo2> <Campo3> <Campo4> <Campo5> <Campo6>

1) Il primo campo contiene il nome del dispositivo ("/dev/fd0" per il device del floppy , "/dev/hdb1" per la prima partizione del terzo disco fisso, "/dev/cdrom" per il device del Cdrom, ...).

2) Il secondo campo contiene la directory dove verrà montato il dispositivo. Per le partizioni di swap va scritto "swap" perché non devono essere accessibili manualmente.

3) Il terzo campo contiene l'indicazione del tipo di filesystem da montare. Fra quelli accettati ci sono ext2 (lo standard per Linux, prevede l'uso dei nomi lunghi), ISO 9660 (standard per i lettori di CDROM), msdos (per partizioni usate da sistemi Dos), proc, swap (partizioni di swap), ignore (utile per ricordare la presenza di alcuni filesystem che non vengono usati: la linea in cui è presente, verrà ignorata), vfat (per partizioni FAT, usate da Windows).

4) Il quarto campo contiene le opzioni relative all'operazione di mount, fra cui l'indicazione della modalità di accesso, l'indicazione se deve essere montato automaticamente, ecc.
Tutte le opzioni sono separate da una virgola. E' obbligatorio scrivere almeno il tipo del mount. Esempi di tipo di mount sono "defaults" (il filesystem viene montato in fase di boot con opzioni standard), "auto" (il filesystem viene montato in fase di boot) o "noauto" (il filesystem deve essere montato manualmente
per diventare accessibile). Una opzione utile, specialmente per i lettori di CDROM, è "ro", cioé "read only" es. "... noauto,ro ...").
Per rivedere quali siano le opzioni disponibili, si può dare un'occhiata al manuale (mount (8)).

5) Il quinto campo serve ad indicare quali filesystem possono essere oggetto di backup per mezzo del programma "dump". Il valore "1" sta per "VERO", il valore "0" sta per "FALSO".

6) Il sesto campo indica l'ordine con cui viene eseguito la verifica (fsck) dei filesystem in fase di boot. Il valore "0" indica che non deve essere effettuato alcuna verifica. In genere il numero 1 è assegnato al filesystem di root, mentre gli altri hanno i numeri successivi oppure lo zero.

Tre esempi di linea per "fstab" sono le seguenti:
/dev/sr0 /mnt/cdrom2 iso9660 noauto,ro 0 0
/dev/hda1 /mnt/dosc vfat quiet,umask=000 0 0
/dev/cdrom /mnt/cdrom iso9660 ro,user,auto 0 0

La prima linea mostrata indica che la directory, associata al lettore SCSI di CDROM, è /mnt/cdrom2. Il tipo del filesystem è ISO9660, non deve essere fatto il mount automatico in fase di boot ed il filesystem è montato in modalità read only (sola lettura). La seconda indica che con /mnt/dosc si punta alla directory Windows (fat con gestione nomi lunghi)

Ricordiamo ancora che per maggiori informazioni è sempre possibile consultare i manuali in linea, digitando rispettivamente: "man mount", "man umount", "man fstab".

 

Come trovo la documentazione per i comandi Linux?

Per trovare la spiegazione esauriente di un qualsiasi comando è sufficiente digitare man <nomecomando>.
Oramai i manuali si trovano anche in italiano, l'unico inconviente è che qualche volta si possono trovare degli errori di traduzione.

Per cercare tutte le voci di manuale che hanno a che fare con una determinata parola chiave utilizza:

man -k <chiave_da_ricercare>
oppure:
apropos <chiave_da_ricercare>

Ad esempio se volete sapere i comandi che hanno a che fare con il
disco (chiva "disk") digitate
man - k disk
o analogamente (danno lo stesso identico output)
apropos disk

Non trovi nessuna informazione? Probabilmente non è ancora stato creato il database che contiene le informazioni. In tal caso accedi come root (con il comando "su" oppure rifacendo il login) ed esegui il comando:

makewhatis

Preferisci leggere le pagine "man" sulla carta stampata?
Allora esegui il comando

man -t nome_comando > stampa.ps
lpr stampa.ps

In questo modo potrai stampare e quindi leggere il tutto su carta.

Per avere maggiori informazioni, nota bene questo è valido per qualsiasi comando su Linux, digita "man" seguito dal comando di cui vuoi avere informazioni. In questo caso:
man man, man apropos, man whatis.

 

Visualizzare i programmi attivi e l'uso della memoria

Ecco una lista di comandi utili per visionare i programmi che stanno girando sul vostro computer:

--> ps aux | less
elenca tutti i processi (ossia i programmi) attivi con l'utente
(se esiste) che li ha fatti partire. Per interrompere la visualizzazione premere 'q' (che sta per 'quit').

--> free
Visualizza le statistiche sull'uso della memoria.

--> top
Visualizza un grafico in tempo reale dei processi e sul loro utilizzo delle risorse. La lista dei processi è ordinata in maniera decrescente, a partire dal processo che usa di più la CPU. Per uscire premere 'q'.

--> cat /proc/meminfo
Un altro modo per visualizzare le statistiche della memoria.

 

Espansioni particolari: rm -fr *

Andate nella directory che preferite e create il file "-i":

miadir-> touch ./-i

(con questo comando creiamo un file con nome "-i")

Supponiamo che poi vogliamo cancellare TUTTI i files della directory, quindi eseguiamo il comando:

miadir-> rm -rf *

(rm è il comando di cancellazione file, con l'opzione "r" cancello ricorsivamente i files della directory e con l'opzione "f" ne forzo la cancellazione anche di quelli su cui NON ho i diritti di scrittura).
Il file "-i" sarà interpretato dal comando "rm" come un ulteriore opzione "-i" che disabilita l'opzione "f" e quindi impone il modo interattivo. Così prima di cancellare i files, il sistema ci chiederà conferma, anche se abbiamo specificato l'opzione di forzatura "-f".
Quindi se realmente vogliamo cancellare la directory, assicuriamoci di cancellare prima il file "-i".
Può anche essere usato come arma di difesa, per evitare che qualche malintenzionato (e/o sbadato) esegua il comando di cancellazione.

 

Spostare directory tra filesystems

Come posso spostare le directory attraverso i filesystems?

 Ecco un metodo veloce per muovere una intera directory da un disco all'altro:

(cd /partenza/dir; tar cf - .)| (cd /arrivo/dir; tar xvfp -)

 

Linkare files o directory

Come posso linkare files o directory?

Linkare file e directory è facile, e rende la vita più semplice. Per esempio, Star Office 5.2 per default crea una directory di lavoro chiamata ~/office52/user/work, che viene usata per memorizzare i vostri lavori. Ma personalmente preferisco memorizzare tutti i miei lavori nella stessa directory.
Quando uso altri programmi, trovo fastidioso dover digitare l'intero percorso per arrivare al mio lavoro, così ho creato un link da ~/lavoro a ~/office52/user/work.
Richiamando la directory "lavoro" vado direttamente in "office52/user/work".

Ci sono due tipi di links: "hard link" o collegamenti fisici e "soft link" o collegamenti simbolici. In questo articolo cercheremo di chiarire la differenza tra i due.

Poiché le directory possono essere linkate solo utilizzando soft link (ad eccezione della root), ho creato il link con il seguente comando:

> ln -s ~/office52/user/work

Questo ha creato un link SIMBOLICO da ~/work a ~/office52/user/work. Ma io voglio chiamare la mia directory in un altro modo. Io voglio un altro link alla mia directory di lavoro, ma la voglio chiamare "lavoro", allora eseguo il comando:

> ln -s ~/office52/user/work ~/lavoro

I link simbolici ai file si fanno nella stessa identica maniera, con lo stesso identico comando.

Riguardo invece ai "hard link" c'é da dire che non sono usati molto. I moderni sistemi Linux hanno in genere risorse sufficienti per rendere superfli i collegamenti fisici.
Introduciamo brevemente l'inode: le persone richiamano i file e le directory usando il loro nome, i sistemi Linux invece li richiamano per "inode" che é un numeretto. I collegamenti simbolici utilizzano un inode extra, invece i collegamenti fisici utilizzano lo stesso. In altre parole con il collegamento simbolico si crea un'altro file (anche se particolare), con il collegamento fisico si punta allo stesso file o se si preferisce SONO lo stesso file.

Vediamo con un esempio la differenza tra un file con un hard link e un soft link:

Eseguite i seguenti comandi:
> touch miofile
> ln miofile miofile-hard
> ln -s miofile miofile-soft
> ls -il miofile*

Otterrete come output qualcosa del genere:

130259 -rw-rw-r-- 2 luca noze 0 Ott 01 12:22 miofile
130259 -rw-rw-r-- 2 luca noze 0 Ott 01 12:22 miofile-hard
130260 lrwxrwxrwx 1 luca noze 4 Ott 01 12:22 miofile-soft -> miofile

Come si vede, miofile e miofile-hard hanno lo stesso inode (I colonna), mentre miofile-soft ne ha uno diverso.
I link simbolici si notano perché hanno la lettera "l" all'inizio dei permessi. Alla fine viene anche indicato dove punta il collegamento: ( -> miofile).
Formalmente, nei link simbolici, vengono mostrati come attivi tutti i permessi degli ultimi 9 bit (lettura, scrittura ed esecuizione per tutti gli utenti), perché quelli che contano sono in realtà i permessi del file (o della directory) cui effettivamente punta il collegamento. Ciò non avviene con gli hard link. I problemi con i collegamenti fisici avvengono quando si deve cancellare un file. Quando si cancella un file, Linux elimina il riferimento al suo inode dalla directory che lo
contiene. Quindi quando si utilizzano i collegamenti fisici, un file viene cancellato effettivamente solo quando sono stati eliminati tutti i riferimenti a questo.

Questa spiegazione non è ovviamente esaustiva, ma è sufficiente per iniziare.
Per ulteriori informazioni usate il comando <man ln>.

 

Gli Mtools - lavorare con i floppy

 Oramai ci sono poche persone che usano i floppy, ma possono capitare situazioni in cui è necessario utilizzarli, questo è il motivo per cui è opportuno conoscere gli mtools. 

Si tratta di un pacchetto di tools presente in quasi tutte le distribuzioni di Linux che permette di gestire floppy, unità ZIP e Jazz. Più precisamente permette ai sistemi Unix di manipolare file MS-DOS: lettura, scrittura, copia ecc. su un filesystem MS-DOS (tipicamente un floppy-disk).
Questi strumenti vi danno la possibilità di leggere e scrivere i dati del drive senza bisogno di montarli. Permettono fondamentalmente di risparmiare tempo, per esempio quando si sta cercando un particolare file tra 15 floppy.
Invece di montare ogni floppy e di cercare il file si può usare mdir (una delle utility incluse in mtools), che elenca tutti i file in ogni floppy senza bisogno di montarli.
La sintassi che seguono le varie utility è quella classica dei vecchi comandi MS-DOS.

Mtools include le seguenti utility:

>mcd: per cambiare la directory nel disco che state esplorando.

>mcopy: permette di copiare un file da/a un floppy

>mdir: elenca tutti i file di una particolare directory del disco.

>mdel: per cancellare il file che si trovano sul disco.

>mdeltree: comando importato dal DOS, permette di cancellare un'intera directory con tutti i contenuti.

>mcat: questa utility è la stessa di un normale cat con la possibilità di effettuarlo da floppy.

>mformat: permette di formattare un floppy disk.

>mlabel: permette di assegnare un nome al floppy che state usando.

>mattrib: potete cambiare gli attributi (DOS) ad ogni file sul floppy.

>mren: rinomina un file o una directory sul floppy.

>mmove: questa utility permette di spostare un file, più o meno fa la stessa cosa di mren, ma occorre specificare il file di destinazione.

>mmd: crea una sottodirectory sul floppy corrente.

>mdu: sostanzialmente fa la stessa cosa del comando "du" in Linux. Mostra quanto spazio prendono determinate directory.

>mrd: permette di cancellare le directory; fa più o meno le stesse cose di deltree, ma da errore se la directory non è vuota.

Gli Mtools includono anche altre utility oltre quelle elencate. Sono un insieme completo di strumenti che permettono di gestire con facilità pressoché tutte
le situazioni con il floppy.

Per ulteriori informazioni e per avere la sintassi precisa di ogni singolo comando utilizzate il comando: man <utility_che_interessa>.


Da minuscolo a MAIUSCOLO

Convertire i nomi dei file da minuscolo a MAIUSCOLO

Vi è mai capitato di dovere convertire tutti i file di una directory da minuscolo in maiuscolo?

Per rinominare tutti i file di una directory da minuscolo a maiuscolo, potete fare così:


> for i in *; do mv $i $(echo $i | tr [:lower:] [:upper:]);
done


Per l'operazione contraria (da maiuscolo a minuscolo),
invertite lower con upper:


> for i in *; do mv $i $(echo $i | tr [:upper:] [:lower:]);
done


Questi comandi sono utili ad esempio quando si devono pubblicare dei file su web per evitare che alcuni nomi siano scritti in maiuscolo ed altri in minuscolo.


 

10 buone ragioni per non fare il login come root

Una divertente (ma non tanto) storiella sul perchè non bisogna abusare della password di root, soprattutto quando diversi utenti condividono il sistema.

Usare l'account di root attrae moltissimo; potete avere accesso instantaneo ad ogni file nel sistema, senza i fastidiosi problemi dei diritti di accesso. E' conveniente usarlo anche quando si installa nuovo software, perché tali programmi richiedono generalmente di andare in directory dove solo da root si può scrivere.

Immaginate la password di root come il passpartout per un immobile che apre anche i cassetti di ogni scrivania o tutti gli armadi classificatori. Chi può fare ciò? Il portiere, forse l'amministratore dello stabile, al massimo un altro paio di persone. Ma non tutti, come programmatore, certamente non avrò bisogno, ad esempio, dell'accesso agli uffici privati o al "magazzino dei documenti".

Le persone che ottengono tale chiave devono godere, in primo luogo, della fiducia di tutti e devono assicurare che non abuseranno del privilegio di copia dei file personali.

Ecco le dieci migliori ragioni per non fare il login come root:

10) Eseguendo i programmi come root, voi disabilitate tutte le protezioni che rendono Linux meno vulnerabile ai virus rispetto ad altri sistemi operativi.

9) Come pensiate possa vivere l'amministratore di sistema col solo salario base, nel momento in cui le mazzette non saranno più necessarie?

8) I permessi di sicurezza sono stati progettati per salvaguardare la privatezza delle informazioni nel sistema.

7) I permessi di sicurezza sono stati progettati per minimizzare le frustrazioni quotidiane.

6) L'amministratore di sistema può configurare le directory in modo da permettere alle persone la condivisione dei file e quindi la possibilità di collaborare.

5) Non rimarresti deluso se scoprissi che la password di root é stata "pericolosa" tutto questo tempo (realmente successo in un grande centro di calcolo)?

4) Quando un utente normale esegue dei programmi, e questi hanno buchi di sicurezza intenzionali o meno, i danni vengono limitati.

3) Il sesto controllo mensile è veramente stancante quando il quarto cugino inizia a lagnarsi della sorveglianza della NSA.

2) Un tipografo può distruggere i file delle altre persone, oltre ai suoi. E questa non è un possibilità teorica; è realmente successo.

...e la ragione numero uno é...

1) Posso anche dirvela, ma poi dovrei uccidervi! :-)

 

C'é un processo che rallenta di sistema?

Quando notate un rallentamento sospetto del sistema, molto probabilmente la colpa e' di qualche processo che sta utilizzando le risorse in maniera eccessiva.
Per trovare tale processo famelico di risorse, che probabilmente è bloccato o che comunque non versa in buon stato, esistono diverse soluzioni.
Potete utilizzare tool grafici come il

Process Manager di Kde

o gtop se preferite Gtk/Gnome,

oppure ricorrere a tool semigrafici come top, che va lanciato in una console in modalità testo.
Se nessuno di questi strumenti è disponibile oppure siete in vena di "virtuosismi", potete aprire una semplice shell, nella quale dare un comando:

>ps aux |sort +5rn |head -10

Questa linea di comando prevede tre istruzioni:
"ps aux" genera in output una lista di tutti i processi in esecuzione sul sistema; questo output viene filtrato da "sort", che ordina le righe in base al quinto campo (memoria occupata), in maniera decrescente o reverse (parametro "r"), per cui i processi che occupano un maggior numero di memoria verranno elencati per
primi, e con criterio numerico (parametro "n"), per cui il campo viene trattato come un numero.
L'output di questo comando viene, a sua volta, filtrato da "head -10", che mostra a video solo le prime dieci righe della lista, ossia i dieci processi che occupano più memoria.

Variando il numero del campo nel comando sort (su cui fare l'ordinamento), potrete visualizzare i processi ad esempio in base all'occupazione di Cpu in maniera analoga a quanto già visto nel numero 11 di Pill-o-Linux.

Per ulteriori informazioni: <man top>, <man ps>, <man sort>, <man head>.

 

L'albero dei processi

Quali processi stanno girando?

I sistemi Linux tipicamente eseguono contemporaneamente diversi processi. Il metodo consueto di visualizzazione della lista di tali processi è l'utilizzo del comando ps.
Ma in caso di interrogazioni più complesse la sintassi diventa difficile.
Una alternativa migliore è il comando:

> pstree -p

che visualizza la struttura ad albero dei processi sul tuo sistema, e mostra anche quelli che hanno generato altri. Ossia i processi "padre" e i processi "figli".
L'opzione -p dice al comando pstree di includere il numero del PID (Process ID, l'identificatore del processo) tra parentesi dopo il nome del processo.

Per ulteriori informazioni <man pstree>, <man ps>.

 

I pacchetti RPM (parte 1)

Il Red Hat Package Manager (abbrievato in RPM), che tradotto significa Gestore dei Pacchetti della Red Hat, é riuscito ad imporsi come uno dei più popolari formati per il software linux.
Al primo utilizzo l'utente potrebbe sentrisi sommerso dal vasto numero di opzioni disponibili; questo articolo aiuterà i principianti a prendere familiarità con l'utilizzo di questo strumento.
La via tradizionale all'installazione di un pacchetto era quella di prendere l'archivio e poi estrarne i file nelle directory richieste. Tutto ciò funzionava bene, i dolori
per l'amministratore arrivavano quando doveva aggiornare i pacchetti. Doveva localizzare i file dalla installazione precedente e assicurarsi che fossero rimossi dal sistema.
L'RPM aiuta proprio in questa fase. Esso rende più facile e flessibile l'installazione ed il mantenimento dei pacchetti. Gli Upgrade sono facili.
RPM mantiene
- un database dei pacchetti installati sul vostro sistema,
- la posizione dei file e
- i numeri delle versioni.
Ogni qualvolta voi installate un pacchetto in formato rpm, RPM cercherà nel sistema per vedere se ci sono dei conflitti tra i pacchetti installati e quelli già esistenti.
Vi dirà anche se c'é bisogno di installare qualche altro pacchetto affinché il software funzioni correttamente.
Nel complesso possiamo tranquillamente affermare che RPM rende la vita molto più semplice :-)

RPM è diventato molto popolare e tante distribuizioni sono basate su di esso. Tra le maggiori citiamo Red Hat, SuSE, Mandrake e Caldera; tutte utilizzano il formato rpm per gestire il software installato.

 

Installazione di un RPM

L'installazione, l'aggiornamento e la rimozione di un RPM dovrà essere effettuata come root.
Invece fare le query di un file RPM non richiede l'essere superutente.

Un'installazione base di un file RPM può essere compiuta eseguendo il seguente comando:

> rpm -ivh

ad esempio

> rpm -ivh pippo-1.09.rpm

A questo punto rpm terminerà e cercherà se i file richiesti sono installati o no. Se qualche altro pacchetto ha bisogno di essere installato, allora vi informerà della
richiesta e uscirà. Inoltre se qualche file del pacchetto è già stato installato precedentemente (da qualche altro pacchetto), vi sarà notificato.

Possono anche essere specificati file multipli utilizzando i caratteri jolly (wildcard), ad esempio è permesso scrivere:

>rpm -ivh pippo*.rpm

Guardiamo più in dettaglio le opzioni che ho specificato:
-i = specifica che l'azione da intraprendere è l'installazione;
-v = (Verbose) visualizzerà informazioni addizionale durante l'installazione;
-h = Stampa 50 "cancelletti" (#) che mostrano il progresso dell'installazione.

Potete anche installare il pacchetto semplicemente con l'opzione -i, ma in genere è una buona idea specificare le altre due opzioni, al fine di ottenere un feedback.

Altre opzioni che possono essere date sono:

--replacepkgs = (replace Packages) Se avete bisogno di reinstallare un pacchetto che è stato danneggiato, avete bisogno di specificare questa opzione. Se provate ad effettuare l'installazione senza questa opzione, rpm vi informerà che il pacchetto è già installato.

--replacefiles = Se possedete un pacchetto con una versione più nuova di un solo file e lo volete installare, allora dovete usare questa opzione per sostituire il file in questione.

--force = Forza il proseguimento dell'installazione senza badare ad eventuali errori. In ogni caso errori che derivano da dipendenze errate possono interrompere il processo.

--nodeps = Le dipendenze dei pacchetti (Package dependencies) sono dei pacchetti richiesti da certi software. Ad esempio fetchmail può richiedere la presenza nel sistema di sendmail o qualche altro mail server. Quindi sendmail è una dipendenza del pacchetto per fetchmail. Voi potreste avere qualche altro
mail server installato, come qmail, e volete proseguire nell' installazione di fetchmail. Aggiungendo --nodeps alla linea di comando dite a rpm di evitare la ricerca di dipendenze e di andare avanti nel processo di installazione di fetchmail.
Un altro posto in cui questa opzione è molto utile è quando avete pacchetti che si richiedono l'un l'altro. Ad esempio il pacchetto A dirà che il pacchetto B dovrebbe essere installato, ma il pacchetto B richiede che sia A ad essere installato prima. La soluzione è quindi installare uno dei due pacchetti con l'opzione --nodeps prima di installare l'altro.

RPM può anche effettuare le installazioni sulla rete.
Se conoscete l'URL completo del vostro file rpm allora digitate quanto segue per installare il pacchetto "pippo".

> rpm -ivh ftp://ftp.linux.tucows.com/pub/RedHat/pippo.rpm

Se il sito richiede un username ed una pssword valida, dovete inserirli nell'URL:

>rpm -ivh ftp://pluto@ftp.linux.tucows.com/put/RedHat/pippo.rpm

Apparirà il prompt per la password e dopo l'inserimento il file sarà scaricato e installato.

 

I pacchetti RPM (parte 2)

Aggiornamento

Aggiornare l'installazione corrente di un vostro pacchetto.
Se vi imbattete in un pacchetto che ha un numero di versione più alto di quello attualmente installato allora l'aggiornamento potrebbe essere la scelta giusta.
La sintassi è pressapoco lo stessa dell'installazione.
Il comportamento di default di questo comando è che l'rpm prima cerca una versione più vecchia del pacchetto. Se ne trova una allora aggiorna il pacchetto, altrimenti procede con l'installazione normale. Questo comando è raccomandato quando si vuole evitare l'installazione di versioni multiple dello stesso pacchetto.

> rpm -Uvh pippo.rpm

 

Disinstallazione

Un pacchetto installato via rpm può essere disinstallato con rpm -e
Il nome del pacchetto dovrebbe essere il nome del pacchetto di installazione.

per esempio: rpm -e pippo rimuoverà il pacchetto chiamato 'pippo'.

Alcune volte potreste ottenere errore di dipendenze quando cercate di rimuovere dei pacchetti che sono richiesti da altri. Allora è sufficiente utilizzare l'opzione --nodeps (già vista nell'installazione) che dice di ignorare tali errori di dipendenze e disinstalla il pacchetto senza badare a niente.

 

I pacchetti RPM (parte 3)

Query

La possibilità di effettuare delle query è una funzione molto utile che è necessario conoscere. In genere una query è effettuata digitando l'opzione -q seguita dal comando di query.

Se volete conoscere la versione di un pacchetto installato allora semplicemente digitate '-q' sul pacchetto:

> rpm -q samba
Il risultato sarà
> samba-2.0.6-62

Vediamo qualche altra opzione:

-f = Quando vedete un file sul vostro disco e volete conoscere da quale pacchetto esso proviene:

>rpm -qf /usr/sbin/smbd
> samba-2.0.6-62

-i = Informazioni relative ad un pacchetto installato sul vostro sistema.

> rpm -qi samba

-l = Lista lunga dei file di un pacchetto installati sul vostro sistema. Questa opzione fa vedere anche il percorso completo in cui sono installati i file.

>rpm -ql samba

> /usr/bin/addtosmbpass
/usr/bin/convert_smbpasswd
/usr/bin/mksmbpasswd.sh
/usr/bin/smbadduser
/usr/bin/smbpasswd
/usr/bin/smbstatus
.....

- a = Mostra una lista di tutti i pacchetti installati sul vostro sistema. E' utile quando volete conoscere se un determinato pacchetto è installato sul sistema.
E' sufficiente fare un "pipe" dell'output ed effettuare un "grep" per ricercare se un pacchetto è installato o meno:

>rpm -qa | grep samba
> samba-2.0.6-62

-p = Questa opzione potete usarla quando volete interrogare un file invece di tutto il dayabase rpm. Tutte le altre opzioni date sopra funzionano allo stesso modo. Solo -a non funzionerà.
Ad esempio

> rpm -qi samba
Interroga il databse rpm per avere informazioni riguardo il pacchetto Samba che è già installato sul sistema.

> rpm -qip samba-2.0.7-20000425.i386.rpm

Interrogerà il file che si chiama samba-2.0.7-20000425.i386.rpm

Per l'utente normale, i comandi dati in questo articolo compiono la maggior parte del lavoro generalmente necessario.
RPM è comunque molto ricco di opzioni. Per studiarle tutte e vedere cosa è possibile farci date un'occhiata a man rpm.

Altre fonti sono:
RPM.org <http://www.rpm.org>
Maximum RPM <http://www.rpmdp.org/rpmbook>
RPM Howto <http://linuxdocs.freeos.com/HOWTO/RPM-HOWTO/index.html>

Libera traduzione di un articolo di Mayank Sarup
http://www.freeos.com/articles/2505/2/1-3/

 

Ripetizione e sostituzione veloce di quanto inserito sulla linea di comando

Quando volete ripetere un comando che avevate digitato prima, è sufficiente premere il tasto con la freccietta in su'. In questa maniera accedete alla history dei comandi.
Se l'history dei comandi digitati è troppo lunga e/o vi ricordate le prime lettere del comando potete richiamarlo direttamente anteponendo ad esso il punto esclamativo.
Ad esempio se avete digitato il comando:

% ls -lR| grep fortune |sort +4n
per trovare i file "fortune" ordinati per grandezza e lo volete richiamare, è sufficiente dare il comando:

% !ls
oppure
% !l

Questa funzionalità é particolarmente utile quando si devono riscrivere comandi molto lunghi.
In pratica quando gli si passa qualcosa del tipo <!nome> la shell interpreta il comando "Esegui l'ultimo comando digitato, che si trova nella history, che inizia con nome".

Se poi il problema è la cattiva digitazione di un comando (sempre sulla linea di comando), è possibile correggere l'errore senza stare a riscriverlo.
Ad esempio se scriviamo il comando:

% ls -lR| grap fortune |sort +4n
con il comando '^ra^re' viene sostituita la stringa 'ra' con 're' e viene eseguito automaticamente il comando che ne risulta.

% ls -lR| grap fortune |sort +4n
bash: grap: command not found

% ^ra^re
ls -lR| grep fortune |sort +4n
./fortune-0.2/debian:
./fortune-0.2:
./fortune.it-1.51:
-rw-r--r-- 1 8044 users 429 Oct 26 1998 fortune.lsm
-rw-r--r-- 1 8044 users 514 Oct 24 1998 fortune.6
-rw-r--r-- 1 501 150 1733 Jan 9 1998 fortune.it-1.51.lsm
drwxr-xr-x 2 501 150 4096 Jan 9 1998 fortune.it-1.51
drwxr-xr-x 3 8044 users 4096 Jul 16 17:05 fortune-0.2
-rw-r--r-- 1 8044 users 5179 Oct 25 1998 fortune.c
-rwxr-xr-x 1 root root 10080 Jul 16 17:05 fortune

 

I Diritti di accesso a file e directory

Se un file o una directory è di mia proprietà allora posso impostare a mio piacimento i suoi attributi (ossia diritti di accesso). Il comando è <chmod> (change modes).

La sua sintassi è la seguente:

% chmod chi azione cosa nomefile

dove:
- il parametro 'chi' può essere u (user) g (groups) o (others) a (all indica contemporaneamente i tre tipi di utente.)
- il parametro 'azione' può essere + (aggiungere) - (togliere)
- il parametro cosa può essere r (read) w (write) x (execute)
- il campo 'nomefile' è il file o la directory oggetto del cambiamento.

Vediamo ora degli esempi pratici. Supponiamo di voler aggiungere accesso, lettura e scrittura a tutti nella directory pippo:

drwx------ rossi users 512 pippo

Il modo più semplice è

% chmod a+rwx pippo

ovvero "aggiungi (+) a tutti (a) i diritti di lettura (r), scrittura (w) e accesso (x) al file pippo " (che poi è una directory perché c'é d). Il risultato e':

drwxrwxrwx rossi users 512 pippo

Altro esempio. Supponiamo di voler rendere il file

-r-------- verdi users 4096 paperino

leggibile da tutti e scrivibile solo dal proprietario:

% chmod a+r paperino
% chmod u+w paperino

E il risultato è:
-rw-r--r-- verdi users 4096 paperino

Un metodo più sbrigativo per assegnare gli attributi ad un file si basa sul sistema di numerazione ottale:
supponiamo di attribuire dei valori numerici ai permessi
possibili:
Lettura = 4 (r)
Scrittura = 2 (w)
Esecuzione = 1 (x)

(Ricordatevi che per una directory x significa accesso).
In tale maniera, eseguendo delle semplicissime somme:

0 = Nessun permesso -
1 = Esecuzione x
2 = Scrittura w
3 = Esecuzione + Scrittura wx
4 = Lettura r
5 = Esecuzione + Lettura rx
6 = Scrittura + Lettura rw
7 = Esecuzione + Scrittura + Lettura rwx

Se affianchiamo i tre codici di accesso user/groups/others otteniamo dei numeri di tre cifre, ognuna delle quali indica i permessi di ogni tipo di utente in modo sintetico.
Per esempio:
rwxrwxrwx 777
rw-rw-rw- 666
r--r--r-- 444
rwx------ 700
rw-r--r-- 644

e cosi' via.... Perciò è possibile inglobare in un solo
colpo tutti gli accessi di ogni singolo tipo di utente.
Esiste allora la sintassi alternativa di chmod:

chmod codice nomefile

Esempio. Il secondo esempio sulla prima sintassi di chmod
voleva trasformare

-r-------- verdi users 4096 paperino

nel file:
-rw-r--r-- verdi users 4096 paperino

e necessitava di 2 chmod consecutivi, il primo per assegnare a+r e il secondo per assegnare u+w. Con la sintassi alternativa di chmod è possibile fare il tutto in un solo colpo, usando:

% chmod 644 paperino


Altro esempio. Supponiamo di avere il file

-rw-rw-rw- bianchi superuser 1234 pluto

Se eseguiamo:

% chmod o-rw pluto

oppure

% chmod 660 pluto

invece di ottenere:
-rw-rw---- bianchi superuser 1234 pluto

si ottiene il messaggio:

Permission denied

Questo perchè io (rossi) sto tentando di modificare gli attributi di un file che non mi appartiene (è di bianchi)

Se sono proprietario di un file e volessi "regalarlo" a qualcuno, cioé fare in modo che questo qualcuno ne divenga il nuovo proprietario, esiste il comando <chown> (change owner).

La sua sintassi è:

chown nuovoproprietario.nuovogruppo file

Vediamo gli esempi. Supponiamo che rossi, dopo aver depositato nella mia directory il file:

-rw-rw-rw- rossi superuser 1234 pluto

voglia fare in modo che esso divenga di mia proprietà.
Dovrà allora eseguire:

% chown verdi.users pluto

Il risultato sarà:

-rw-rw-rw- verdi users 1234 pluto.

 

Ti potrebbero anche interessare:

Nuovo Algoritmo di Google che vede oggetti nei video e nelle immagini

Google si fa gli occhi.

Si chiama Automatic Large Scale Video Object Recognition (Riconoscimento automatico su larga scala di oggetti video) il nuovissimo algoritmo gia brevettato da Google che avrebbe l'incredibile capacità di poter leggere direttamente nei video e nelle immagini.

Blog: 

Creare un sito multilingua in Drupal

[toc]

Descrizione

In questa guida viene spiegato come realizzare un [[sito]] sviluppato in Drupal che abbia come target principale utenti che parlano l'italiano, con contenuti tradotti anche in inglese ed in spagnolo.
L'articolo presuppone che abbiate già installato Drupal 6.x, localizzato in lingua italiana.
Il procedimento che seguiremo è il seguente:
  • Installiamo le traduzioni di Drupal
Drupal: 

Formati di input in Drupal: Configurazione

I formati di input in Drupal definiscono un modo di processare il testo generato dall'utente.
Ogni filtro è progettato per compiere un compito preciso, e generalmente rimuove o aggiunge elementi al testo prima che esso venga visualizzato.
Drupal di base offre due formati di input "Filtered Html" e "Full Html" e
Drupal: 

Imparare a guadagnare con Google Adsense: Strumenti e Risorse iniziali

Imparare a guadagnare con Google Adsense è probabilmente il modo più semplice per fare soldi online. Ci sono tantissimi modi per guadagnare su internet ma il modo forse più automatico possibile è proprio il servizio offerto da Google e che prende il nome di Adsense.

In questo articolo vi mostrerò tutto quello che serve per fare soldi con Google Adsense e, soprattutto, i consigli e i metodi usati personalmente per iniziare a guadagnare velocemente con la pubblicazione degli annunci.

Internet Marketing: 

L’algoritmo DES (Data Encryption Standard) e altri algoritmi a chiave simmetrica

Si tratta di un algoritmo a chiave simmetrica proposto da IBM nel 1975 e accettato come standard nel 1977 e da allora, e fino a tempi recenti, è stato utilizzato dagli enti governativi americani (e da altri) per cifrare dati sensibili.

Risorse per sviluppo: 

Codice Poligrafico: La Scacchiera di Polibio

Il più antico codice poligrafico (sostituzione di tipo multiplo) è probabilmente la scacchiera di Polibio. Lo storico greco Polibio (~200-118AC), nelle sue Storie (Libro X) descrive un cifrario che attribuisce ai suoi contemporanei Cleoxeno e Democleito: l'idea è quella di cifrare una lettera con una coppia di numeri compresi tra 1 e 5, secondo la descrizione di una scacchiera 5x5.

Risorse per sviluppo: