next up previous contents index
Next: La Bash Up: GNU/Linux Previous: Installazione   Contents   Index

Subsections


Il Sistema

``GNU/Linux è un sistema multitasking a memoria protetta e multiutente''

multitasking
perché riesce a gestire più processi (programmi, applicazioni) contemporaneamente.
memoria protetta
ogni processo in corso utilizza una ben determinata area di memoria per il proprio funzionamento. Questa caratteristica offre sicurezza di sistema garantendo la sua integrità nonostante il blocco di un processo.
multiutente
perché diverse persone possono collegarsi al sistema contemporaneamente e gestire le proprie attività.
La definizione non rende tutte le caratteristiche del kernel di Linux ma rappresenta ad alto livello le principali caratteristiche di quest'ultimo.

Processi in fase di avvio

System V Init

Il programma init viene avviato dal kernel all'avvio del computer. Si occupa ti gestire tutti processi necessari allo svolgimento delle operazioni comuni. Il modello SysV Init è diventato lo standard in ambiente GNU/Linux perché è molto più semplice e flessibile da utilizzare del tradizionale BSD Init.

Le configurazioni sono posizionate nella directory etc/ dove potrete trovare le seguenti directory di riferimento:

init.d

rc.boot

rcS.d 

rc0.d

rc1.d

rc2.d

rc3.d

rc4.d

rc5.d

rc6.d

Le directory rc#.d con # un numero intero da 1 a 6 rappresentano i processi da eseguire per ogni tipo di runlevel e può divergere tra le varie distribuzioni; al momento, lo schema presentato è lo standard de facto.

Gestione dei demoni di sistema

La directory init.d contiene un numero cospicuo di file che vengono eseguiti per eseguire i principali comandi e processi di sistema. Se volessimo lanciare un processo successivamente alla fase di Avvio è possibile farlo digitando:

# /etc/init.d/lpd start

Il demone di stampa viene lanciato mentre per fermarlo:

# /etc/init.d/lpd stop

Esiste anche la possibilità di riavviare il processo con:

# /etc/init.d/lpd restart

Nella fase di avvio la sequenza di esecuzione seguita da init.d è la seguente:

I Runlevel di Init

Esistono 7 runlevel e i relativi file di configurazione sono divisi nelle directory precedentemente viste in /etc/rc.d/ nella forma rc#.d. I runlevel determinano particolari stati del vostro sistema:

0
Sistema spento riservato
1
Modalità utente singolo riservato
2
Modalità multi-utente senza servizio NFS
3
Modalità multi-utente, la modalità di base
4
Non utilizzata
5
Modalità grafica in ambiente X
6
Riavvio riservato
Il tipo di runlevel viene indicato dal file /etc/inittab che presenta al suo interno una linea del tipo:

id::initdefault:

Se è nelle vostre intenzioni avviare il vostro sistema direttamente con l'interfaccia X Window basterà sostituire il valore con , quello del runlevel specifico. Il vostro file /etc/inittab potrà risultare come segue:

# Default runlevel. The runlevels used by RHS are:

#   0 - halt (Do NOT set initdefault to this)

#   1 - Single user mode

#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

#   3 - Full multiuser mode

#   4 - unused

#   5 - X11

#   6 - reboot (Do NOT set initdefault to this)

#

id:5:initdefault:

 

# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit

 

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6

 

# Things to run in every runlevel

ud::once:/sbin/update

 

# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes

# of power left.  Schedule a shutdown for 2 minutes from now.

# This does, of course, assume you have powerd installed and your

# UPS connected and working correctly.

pf::powerfail:/sbin/shutdown-f -h +2 `¨Power Failure; System Shutting Down`

# If power was restored before the shutdown kicked in, cancel it.

pr:12345:powerokwait:/sbin/shutdown -c `¨Power Restored; Shutdown Cancelled`

 

 

# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

 

# Run xdm in runlevel 5

# xdm is now a separate service

x:5:respawn:/etc/X11/prefdm -nodaemon  

Gli utenti SuSE hanno una differente organizzazione dei runlevel ed è possibile capire le differenze con un semplice

$ cat /etc/inittab

File System

Un file system è il metodo e la struttura dei dati che un sistema operativo utilizza per gestire i file disposti sulle unità fisiche presenti (disco fisso, floppy, cd-rom). La parola viene spesso utilizzata per indicare una partizione o un disco dedicato ad una particolare funzione. Dicendo ``ho due file system'' intendo indicare che ho due partizioni sul mio disco fisso con due differenti metodi di gestione dei file; è il caso comune per la maggior parte delle persone che tengono su una partizione GNU/Linux e un altro sistema operativo sull'altra (es. Windows).

Con l'affermazione creare il file system si vuol intendere l'inizializzazione di una partizione o un disco, spesso nota come ``formattazione'', utilizzando il metodo di gestione dei file scelto. Ogni sistema operativo utilizza un file system in maniera nativa, di base, e ne supporta ulteriori per determinate esigenze. Questo è il caso di GNU/Linux che adotta il file system ext2 in forma nativa ma supporta una ampia e variegata serie di file system esistenti: minix, xia, ext, msdos, umsdos, iso9660 (il file system standard per i cd-rom), nfs (network file system), hpfs (os/2), sysv (systemV/386, Coherent e Xenix), xfs (Silicon Graphics), vfat (Windows 95/98), ntfs (Windows NT) ed altri ancora.

Organizzazione dei file

Esiste uno standard denominato FHS (Filesystem Hierarchy Standard) che descrive la disposizione dei file e delle directory su sistemi di tipo Unix-compatibili. Le distribuzioni GNU/Linux più diffuse si attengono anche loro a queste specifiche ed organizzano il proprio file system nella struttura ad albero successivamente descritta.

/
Viene denominata la root di sistema. E' la base della nostra alberatura, il livello più alto del nostro sistema di riferimento. Genericamente non contiene file ma solamente le altre importanti directory di sistema.
/bin
Directory dove risiedono i comandi basilari utilizzati durante l'avvio del sistema e per le procedure basilari di autenticazione. Comunque comandi accessibili da utente.
/sbin
Directory dove risiedono i comandi basilari per la gestione del sistema, chiaramente non destinati agli utenti.
/dev
Directory dove sono posizionati i dispositivi necessari per accedere a periferiche o sistemi di memorizzazione.
/etc
Directory dove sono disposti i file di configurazione del sistema.
/home
Directory dove vengono dislocate le home degli utenti, ovvero lo spazio riservato ad ogni singolo utente (es. /home/darshan è la directory home dell'utente darshan).
/lib
Directory delle librerie condivise dai programmi e utili per il loro funzionamento.
/proc
E' un file system virtuale inesistente sul disco o meglio senza reale allocazione su disco. Viene utilizzato per disporre informazioni di sistema relative in modo particolare al kernel.
/tmp
Directory dei file temporanei.
/var
Dati variabili, code di stampa.
/usr
E' la directory che contiene gran parte dei programmi esistenti nel sistema e per questo motivo ha dimensioni superiori alle directory precedentemente esaminate. Al suo interno esistono ulteriori gerarchie:
      /usr/X11R6
Directory destinata al sistema X Window
      /usr/bin
Gran parte dei comandi utente.
      /usr/games
Giochi e programmi educativi.
      /usr/include
Directory destinata a contenere i file header
      /usr/lib
Librerie.
      /usr/local
Gerarchia locale.
      /usr/sbin
Programmi di sistema non essenziali.
      /usr/share
Dati indipendenti dall'architettura hardware
      /usr/src
Directory delle sorgenti.
La rappresentazione data può sembrare difficile da immaginare in una finestra di terminale ma può risultare amichevole e chiara in ambienti desktop come GNOME o KDE.

Permessi sui file

Un sistema multiutente necessita di una soluzione per la protezione dei file e per garantire la sicurezza delle attività degli utenti come quella del sistema stesso. In sistemi operativi Unix everything is a file, ogni cosa è un file con annesse le informazioni necessarie per la gestione.

Analizziamo le informazioni di alcuni file:

$ ls -l

-rw-r-r-  2 utente gruppo    0 Nov 23 01:54 fileuno

lrwxrwxrwx  1 utente gruppo    4 Nov 23 01:55 link -> file

drwxr-xr-x  2 utente gruppo 1024 Nov 23 01:57 Directory

Utilizzando il comando ls come indicato visualizziamo i file nella directory mostrando i permessi relativi espressi dalle prime 10 combinazioni di lettere visualizzate. La prima lettera può variare come segue:

-
un file comune
d
una directory
c
un character special file
p
un named pipe
s
un file socket
l
un link simbolico
Nell'esempio visto abbiamo riscontratato un file link, una directory e un file comune. Le rimanenti 9 lettere rappresentano a gruppi di 3 i permessi rispettivi per l'utente proprietario, il gruppo e agli altri, cioè tutti gli utenti nel sistema non considerati. Per modificare i permessi sui file è necessario utilizzare il comando chmod utilizzando determinate combinazioni numeriche presentate nella tabella 8.1.

Table 8.1: Permessi sui file.
Numero Ottale Permesso Descrizione
0 -- Nessuna autorizzazione
1 -x Esecuzione
2 -w- Scrittura
3 -wx Scrittura, Esecuzione
4 r- Lettura
5 r-x Lettura, Esecuzione
6 rw- Lettura, Scrittura
7 rwx Lettura, Scrittura, Esecuzione


Se desideriamo cambiare i permessi sul file ''fileuno'' dovremo digitare una combinazione di numeri nella forma seguente:

$ chmod 700 fileuno 

Un modo alternativo per la medesima azione è il seguente:

$ chmod u+rxw fileuno

Nel modo illustrato sono stati decretati sul file in esame i diritti di lettura, scrittura ed esecuzione per il solo proprietario. La seconda forma può risultare più semplice da apprendere perchè indica quali dei tree soggetti vengono considerati e quali diritti questi possono avere. In forma estesa:

$ chmod ugo+rxw fileuno 

Dove ''u'' è user (utente proprietario), ''g'' è group (il gruppo di appartenenza), ''o'' è other (tutti quelli che non sono il proprietario o non sono presenti nel gruppo di riferimento). Visualizziamo il cambiamento avvenuto:

$ ls -l fileuno

-rwxrwxrwx 1 darshan darshan 0 lug 15 18:06 fileuno 

Per togliere il permesso di eseguibilità la forma si discosta di poco:

$ chmod ugo-x fileuno 

Modalità SUID

E' possibile assegnare ad un file un dato permesso per essere eseguito con ID dell'utente ``root''. Tale operazione risulta utile se si desidera assegnare agli utenti del sistema la possibilità di eseguire comandi strettamente vincolati all'identificativo dell'amministratore di sistema. Di seguito un esempio pratico:

# chmod 4755 /sbin/shutdown

Notate il numero ``4'' in aggiunta alla canonica terzina ``755'' di permessi già analizzati. Tramite questa aggiunta tutti gli utenti del sistema saranno in grado di lanciare il comando ``/sbin/shutdown'' che tradotto in pratica permetterà il riavvio o lo spegnimento della macchina.

Le Shell

La necessità dell'uomo di dialogare con la macchina ha portato lo sviluppo di uno strumento capace di mediare tra essi e rendere flessibile e minima la distanza tra ``quello che vogliamo fare'' e l'effettiva esecuzione: la shell.

Le Shell a caratteri

La shell è un interprete che legge ed esegue dei comandi imposti dagli utenti. A differenza di particolari sistemi operativi dove si è vincolati ad una sola ed unica shell, nei sistemi operativi Unix / Linux, è possibile scegliere quale shell si desidera utilizzare a seconda delle propria esperienza e delle proprie necessità. Per importanza storica e per diffusione le shell che meritano di essere citate sono la shell Korn, Bourne, Bash (pagina [*]) e la shell C. In ambito del sistema operativo GNU/Linux viene adottata la shell Bash, strumento flessibile che risponde alle esigenze più particolareggiate di gestione del sistema.

Le Shell grafiche

Nel corso dell'evoluzione dei sistemi operativi, sono stati creati strati superiori all'interfaccia a caratteri per permettere un approccio maggiormente istintivo e comodo con il computer. In ambienti di tipo Unix l'interfaccia di questo tipo è rappresentata da una combinazione software tra il sistema X Window (X Window System è un marchio registrato di The Open Group) e un'ampia serie di windows manager e ambienti desktop. A pagina [*] troverete adeguati riferimenti.


next up previous contents index
Next: La Bash Up: GNU/Linux Previous: Installazione   Contents   Index

Linux Facile - ver.4.0 - http://www.linuxfacile.org
autore: Daniele Medri <madrid@linux.it>