Linux: generalita'9.1 Generalita'Linux e' un sistema operativo nato grazie ad un progetto di Linus Torvalds, uno studente dell'universita' di scienze dell'informazione di Helsinki. L'idea era quella di creare una versione di Unix che funzionasse su PC. Unix venne sviluppato nei laboratori AT&T Bell da Ken Thompson verso la fine degli anni 60, mentre Linux e' nato all'inizio degli anni 90 (circa 30 anni dopo). Linux non solo e' molto simile ad Unix, ma sotto molti aspetti e' praticamente identico. Ad ogni modo Linux e' un sistema operativo multiutente e multitasking. Multiutente significa che puo' essere utilizzato da piu' utenti contemporaneamente, mentre multitasking significa che permette l'esecuzione di piu' programmi contemporaneamente. Windows 98 e' un esempio di sistema operativo multitasking ma non multiutente, in quanto puo' essere utilizzato da un solo utente per volta. Al contrario Linux cosi' come Windows/NT puo' essere utilizzato da piu' utenti contemporaneamente. Occorre fare attenzione a non confondere un sistema di PC collegati tra loro in rete da un sistema multiutente: nel primo caso esistono piu' PC che dialogano tra loro, ognuno con il proprio sistema operativo (DOS, Windows o anche Linux) mentre nel secondo caso una sola macchina con un solo sistema operativo e' utilizzata da piu' utenti. Un sito web ad esempio, e' una macchina di tipo multiutente, in quanto piu' utenti (visitatori) possono accedere alle pagine web del sito contemporaneamente. Un sistema operativo ad ogni modo e' qualcosa di molto piu' complesso di un server web. Linux infine, e' un sistema a memoria protetta. Memoria protetta significa che ciascun programma in esecuzione in un dato momento utilizza una parte di memoria personale alla quale tutti gli altri programmi in esecuzione non possono accedervi. Non e' possibile quindi che un programma per errore acceda alla parte di memoria utilizzata da un altro programma causandone il blocco. Dal momento che piu' utenti possono utilizzare Linux contemporaneamente, e' necessario che il sistema sia in grado di identificare in modo inequivocabile tutti gli utenti collegati in qualsiasi istante. Ecco perche' ogni utente deve essere registrato da qualche parte nel sistema, deve cioe' possedere un account. Possedere un account in un dato sistema significa essere registrati presso quel sistema, cioe' essere autorizzati ad accedervi e ad utilizzarlo in base al livello di privilegi che si possiede. Possedere un account in sostanza e' come possedere la tessera di una palestra o una carta bancomat. Cosi' come occorre digitare un pin per poter effettuare delle operazioni con il bancomat, allo stesso modo occorre fornire il proprio nome ed una password al sistema per potervi accedere. In questo modo solo gli utenti autorizzati (che possiedono un account) possono accedere al sistema. Un account e' composto da una userid (user identifier, identificatore dell'utente, cioe' il nome dell'utente) e da una password. Ogni utente ha un proprio nome assegnatogli dall'amministratore del sistema ed una password personale. Per accedere al sistema occorre effettuare il login, ossia fornire il proprio userid e la propria password. Login e logon sono sinonimi ed entrambi identificano la procedura con la quale ogni utente si collega al sistema e si qualifica come utente autorizzato. L'amministratore di sistema puo' definire delle categorie di utenti, ciascuna con differenti livelli di privilegi. Ad esempio e' possibile avere una categoria di utenti generica con bassi privilegi ed una categoria di utenti esperti con un livello di privilegi piu' alto. L'amministratore di sistema e' l'utente con il livello di privilegi piu' alto e puo' fare praticamente qualsiasi cosa all'interno del sistema. L'amministratore di sistema viene anche chiamato superutente, superuser sysadmin o utente root. 9.2 Struttura di un sistema LinuxQualsiasi sistema Linux puo' essere suddiviso in due parti principali: il kernel e la shell. Il kernel (nocciolo) e' il programma che gestisce i dispositivi hardware (come dischi nastri e stampanti) ed esegue i programmi, mentre la shell (conchiglia) e' il programma che riceve i comandi dall'utente e li invia al kernel. La shell e' come l'ostrica la cui conchiglia avvolge la perla (il kernel). La shell e' una interfaccia tra l'utente ed il kernel. La shell e' un interprete di comandi in quanto accetta comandi dall'utente, li interpreta e li invia al kernel. Esistono vari tipi di shell (bourne, korn, c ed altre) molto simili tra loro, ma ciascuna con caratteristiche proprie. All'interno di Linux qualsiasi dispositivo hardware viene trattato come un file, e questa e' senza dubbio una caratteristica interessante, perche' permette di accedere facilmente a dispositivi come memoria, terminali, tastiera, stampanti e via dicendo. 9.3 Entrare nel sistemaNelle prime distribuzioni Linux utilizzava esclusivamente la modalita' carattere, possedeva cioe' una interfaccia di tipo testuale e non esistevano finestre ed icone. Non si poteva usare il mouse e tutto avveniva tramite l'uso di comandi dati alla tastiera. Successivamente venne adottato il sistema X-Windows e pian piano anche con Linux divenne possibile usare una interfaccia grafica. Attualmente le distribuzioni sono concepite in modo da proporre all'utente una interfaccia di tipo grafico a partire dal processo di installazione. Questo non e' vero per tutte le distribuzioni, in quanto alcune di queste, come ad esempio la Slackware, sono fedeli alla modalita' testuale. In ogni caso, indipendentemente dalla distribuzione usata, e' sempre possibile in qualsiasi istante aprire una sessione in modalita' carattere all'interno di una finestra oppure, se si preferisce, e' possibile passare dalla modalita' grafica alla modalita' testuale eliminando completamente la grafica. Prescindendo dal tipo di interfaccia usata, e' comunque sempre necessaria una fase di login per accedere al sistema ed una fase di logout per uscirne. E' possibile configurare il sistema in modo da consentire l'avvio in modalita' testuale oppure in modalita' grafica. Ipotizzando l'uso esclusivo della modalita' testuale, vediamo una sessione di login e di logout in un ipotetico sistema Linux:
Linux Mandrake release 8.0 (Traktopel) for i586 Questo e' quello che appare una volta avviato il sistema. Viene visualizzata la distribuzione e la versione di Linux usata, la versione del kernel e viene richiesto di effettuare il login. Effettuare il login in un sistema significa fornire le proprie credenzialita' di utente autorizzato ad accedervi. Occorrera' quindi digitare il proprio userid (fornito dall'amnministratore del sistema) che supponiamo sia 'pippo': Localhost login:pippo a questo punto il sistema chiedera' la password: password:_ Nel digitare la propria password si potra' notare che i caratteri digitati non appariranno a video (in gergo tecnico si dice che l'echo locale e' disabilitato). Cio' accade per motivi di sicurezza: con tale sistema un utente non autorizzato non potra' vedere la password che stiamo digitando. Qualora la password digitata non fosse corretta o l'userid digitato non esistesse, il sistema risponderebbe con un messaggio di errore e tornerebbe a richiedere l'immissione dell'userid e della password. Supponendo che l'utente misterX non sia un utente registrato nel sistema:
Localhost login:misterX Una volta ottenuto l'accesso al sistema, se non e' il primo collegamento assoluto, si otterra' una risposta simile:
Last login: Mon Sep 9 08.02.49 on tty1 Questo e' il prompt di Linux. Il prompt e' un messaggio che indica che il sistema e' in attesa di comandi da parte dell'utente. E' un po' come il messaggio convenzionale che si dice quando si risponde al telefono: 'pronto?' che significa appunto 'ok sono in ascolto chi parla?' (a questo punto chi ha chiamato se e' educato si presenta...ma questo e' un altro discorso ;o). Il prompt di Linux non e' sempre lo stesso per 2 motivi: primo perche' e' possibile cambiarlo a nostro piacimento e secondo perche' puo' terminare o con un carattere $ (dollaro) o con un carattere # (cancelletto) a seconda dell'utente che accede al sistema. Il carattere $ infatti identifica un utente comune, mentre il carattere # identifica l'utente root (o superuser), cioe' l'amministratore di sistema. Nell'esempio illustrato sopra, il sistema comunica all'utente la data e l'ora dell'ultimo collegamento effettuato (last login) ed il terminale dal quale e' stato fatto il collegamento. Il terminale e' in questo esempio tty1, dove tty sta per TeleTYpe, cioe' telescrivente, in quanto i primi terminali erano telescriventi appunto. E' chiaro che se il terminale e' sempre lo stesso (Linux utilizzato da un solo utente su un unico PC) questo messaggio e' irrilevante. La riga 'pippo@localhost pippo]$' significa: utente pippo, collegato alla macchina localhost all'interno della directory pippo. Ogni utente infatti ha una directory personale predefinita e normalmente non puo' accedere a directory esterne alla propria. 9.4 Uscire dal sistemaEsistono 4 modi per effettuare il logout, cioe' per uscire dal sistema:
in realta' in un reale sistema multiutente un utente comune potrebbe utilizzare unicamente i primi due, in quanto la combinazione dei tasti CTRL ALT CANC od il comando shutdown riavviano il sistema completamente. Cio' che un utente deve fare e' uscire dal sistema non riavviarlo o chiuderlo! Infatti gli ultimi due comandi possono essere utilizzati unicamente dall'utente root. Qualora un utente comune digitasse il comando shutdown otterrebbe infatti un messaggio di errore dal sistema simile:
bash : shutdown : command not found in quanto il comando shutdown e' un comando riservato all'utente root e, come tale, contenuto all'interno di una directory non visibile agli utenti comuni. Inizio della guida Installazione Indice Il filesystem Copyright (c) 2002-2003 Maurizio Silvestri
|