PREV
Capitolo 8 - La Shell
NEXT
Capitolo 10 - Gestire Files e Directory

Torna all'indice

Capitolo 9. Filesystem

Abbiamo appena discusso la struttura delle directory in Slackware Linux. In caso di bisogno si e' capaci di trovare file e directory. Ma c'e' di piu' da scoprire sul filesytem che la struttura delle directory. Linux e' un Sistema operativo multiutente: ogni aspetto del sistema e' multiutente, anche il filesystem. Il sistema immagazzina informazioni comeil proprietario del file e chi puo' leggerlo. Ci sono altre funzioni che riguardano il filesystem come i link e il montaggio del NFS. Questa sezione tratta di questo, degli aspetti multiuser del filesystem.


top

Torna all'indice

Proprieta'

Il filesystem immagazzina informazioni per ogni file e directory del sistema. Questo comprende chi e quale gruppo possiede un particolare file. Il modo piu' semplice per vedere questa informazione e' il comando ls:

$ ls -l /usr/bin/wc
  -rwxr-xr-x    1  root      bin    7368 Jul 30 1999 /usr/bin/wc 
   

Noi siamo interessati alla terza e quarta colonna. Queste contegono l'username e il group name di chi possiede tale file. Notiamo che l'utente "root" e il gruppo "bin" posseggono il file. Possiamo facilmente cambiare il proprietario del file con i comandi chown(1) (abbreviazione di "change owner") e chgrp(1) (abbreviazione di "change group"). Per impostare "deamon" come proprietario del file possiamo usare chown cosi';

# chown daemon /usr/bin/wc
  



Per cambiare il gruppo a "root", possiamo usare chgrp:

# chgrp root /usr/bin/wc
   

 
Possiamo inoltre usare chown per specificare l'utente e il gruppo proprietari di un file:

# chown daemon:root /usr/bin/wc
   

La proprieta' dei file e' una parte molto importante nell'uso di un sistema Linux, anche se si e' l'unico utente. A volte e' necessario, infatti, correggere le proprieta' di file o di un device.


top

Torna all'indice

Permessi

I permessi sono un 'altro aspetto importante di un filesystem multiutente. Con questi , si puo' decidere chi puo' leggere, scrivere ed eseguire un file. L'informazione sui permessi e' memorizzata come 4 cifre ottali, ognuna delle quali specifica un differente tipo di permesso. Ci sono permessi per il proprietario(owner), per il gruppo(group), e permessi per tutti gli altri(other). La quarta cifra ottale e' usata per memorizzare informazioni speciali come l'user ID, il group ID e lo "sticky bit". I valori ottali assegnati alle differenti tipologie di permessi sono (possono avere anche delle lettere associate quando programmi come ls li mostrano e possono essere usati da chmod):

Tabella 9-1. Valori Ottali di Permesso

Tipo di Permesso Valore in Ottale Valore in Lettere
sticky bit 1 t
set user ID 4 s
set group ID 2 s
lettura 4 r
scrittura 2 w
esecuzione 1 x










Si aggiunga il valore ottale per ogni tipo di permesso. Per esempio, si vuole che i permessi per il gruppo siano di "read" e "write", si deve usare "6" nella parte del gruppo nell'informazione dei permessi. I permessi di default della bash sono:

$ ls -l /bin/bash
  -rwxr-xr-x    1  root      bin    477692 Mar 21 19:57 /bin/bash 
   

Il primo trattino e' sostituito da una "d" se il file e' una directory.

Dopo sono visualizzati i tre tipi di permessi per il proprietario, il gruppo e il mondo. Notiamo che il proprietario ha i permessi di letttura, scrittura ed esecuzione (rwx). Il gruppo ha solo i permessi di lettura ed esecuzione (r-x), cosi' come il mondo (r-x). Come possiamo definire i permessi su un altro file per renderli uguali a quelli di default di bash? Innanzitutto creaiamo un file di esempio:

$ touch /tmp/example
$ ls -l /tmp/example
  -rw-rw-r---    1 david      users    0 Apr 19 11:21 /tmp/example 
   

Possiamo usare chmod(1) per definire ipermessi del file di esempio. Si aggiungano i valori ottali per i permessi desiderati. Il proprietario, per poter leggere, scrivere ed eseguire, deve avere impostato il valore 7. Per lettura e scrittura 5. Quindi:

$ chmod 755 /tmp/example
$ ls -l /tmp/example
  -rwxr-xr-x    1 david      users    0 Apr 19 11:21 /tmp/example 
   

Per definire permesso speciali si uniscano i numeri e si aggiungano alla prima colonna. Per esempio, per settare user ID e group ID, mettiamo 6 nella prima colonna:

$ chmod 6755 /tmp/example
$ ls -l /tmp/example
  -rwsr-sr-x    1 david      users    0 Apr 19 11:21 /tmp/example 
   

Se i valori ottali confondono le idee, con chmod si possono usare le lettere:

Gruppo di permessi Valore in lettere
Proprietario u
Gruppo g
Altri o
Tutti a

Per fare come sopra, dobbiamo usare piu' comandi:

$ chmod a+rx /tmp/example
$ chmod u+w  /tmp/example 
$ chmod ug+s /tmp/example
   

Molte persone preferiscono le lettere ai numeri. Entrambi i modi sono equivalenti.

Abbiamo fatto cenno molte volte al settaggio dell'user ID e del group ID. Si potrebbe essere meravigliati. In genere quando si avvia un programma, esso opera sotto l'user account che l'ha avviato. Cioe' ha tutti i permessi che ha l'utente. Stessa cosa per il gruppo: quando un programma viene avviato, esso lavora sotto il gruppo corrente. Settando l'user ID, il programma viene forzato ad eseguirsi solo sotto il proprietario (come "root"). Il settaggio del group ID e' lo stesso, ma vale solo per il gruppo. Fai attenzione: i programmi con settato l'userID e il groupID possono aprire dei buchi nella sicurezza nel sistema. Settando frequentemente l'userID per programmi che possiede "root", si permette a tutti di eseguire il programma ed eseguirlo come root. Visto che l'utente root non ha restrizioni sul sistema, si puo' ben vedere come questo puo' manifestarsi come un serio problema di sicurezza. In breve, non e' sconsigliato usare il settagio dell' userID e del groupID , ma si cerchi di usarlo con cautela.


top

Torna all'indice

Link

I link sono dei puntatori tra i file. Con i link si puo' avere un file in molti posti e puo' essere accessibile anche con altri nomi. Ci sono due tipi differenti di link: hard e soft. I link hard sono nomi per file particolari. Possono esistere in una sola directory e sono rimossi solamente quando il nome reale e' rimosso dal sistema. Sono utili in diversi casi, ma molti utenti trovano i soft link piu' versatili. I soft link, chiamati anche link simbolici, possono puntare ad un file fuori dalla sua directory. In pratica il link e' un piccolo file contenente le informazioni necessarie. Si possono aggiungere e rimuovere i soft link senza compromettere il file originale. I link non hanno dei loro veri e propri permessi o proprieta', ma riflettono quelli del file a cui puntano. La Slackware usa molti soft link. Qui un esempio:

$ ls -l /bin/sh
  lrwxrwxrwx    1  root      root    4  Apr  6  12:34 /bin/sh --> bash

La shell sh sotto Slackware e' un link a bash. Per rimuovere i link si puo' usare rm. Per crearli si usa il comando ln. Questo comando sara' trattato in dettaglio nel Capitolo 10.


top

Torna all'indice

Mounting Devices

Come precedentemente discusso nella sezione chiamata "Layout del File System" nel Capitolo 4, tutti i drive e device nel nostro computer sono uniti a creare un grosso flesystem. Molte partizioni degli hard disk, CD-ROM, e floppy sono presenti nello stesso albero. Per attaccare o staccare questi drive al filesystem in modo da accedervi, puoi usare i comandi mount(1) e umount(1). Molti device sono automaticamente montati quando accendi il computer: questi sono elencati nel file /etc/fstab. Tutto cie' che deve essere montato automaticamente, deve avere un riferimento in questo file. Per usare gli altri device, invece, si dovra' eseguire un comando ogni volta.

Fstab Ecco un esempio del file /etc/fstab :

/dev/sda1         /                reiserfs     defaults         1    1
/dev/sda2         /usr/local       reiserfs     defaults         1    1
/dev/sda4         /home            reiserfs     defaults         1    1  

/dev/sdb1         swap             swap         defaults         0    0
/dev/sdb3         /export          reiserfs     defaults         1    1
none              /dev/pts         devpts       gid=5,mode=620   0    0   
none              /proc            proc         defaults         0    0
/dev/fd0          /mnt             reiserfs     defaults         0    0
/dev/cdrom        /mnt/cdrom       iso9660      ro               0    0 

La prima colonna e' costituita dal nome del device. In questo caso, i device sono cinque partizioni, divise in due  hard disk SCSI; due speciali filesystem che non hanno bisogno di un device, un floppy e un drive CD-ROM. La seconda colonna indica il punto in cui i device verrano montati. Questo deve essere il nome di una directory; tranne nel caso della partizione di swap. La terzacolonna indica il tipo di filesystem del device. Per i normali filesysestem Linux, questo e' reiserfs. Per i CD-ROM e' iso9660 e per i device basati su Windows sara' msdos o vfat. La quarta colonna, e' una lista di opzioni che vengono applicate al filesystem quando e' montato. "defaults" e' utilizzato quasi sempre. Comunque, i device read-only devono avere l'opzione "ro" e . Ci sono molte opzioni che possono essere usate. Per maggiori informazioni leggere la pagina man realtiva a fstab(5). Le ultime due colonne sono usate da fsck e altri comandi che servono per manipolare i device. Sono descritti nella pagina man. Quando viene installata Slackware Linux, il programma di setup si occupa di creare il file fstab. L'unica volta in cui si avra' bisogno di editare questo file e' nel caso in cui si debba aggiungere un device da montare automaticamente al boot.


top

Torna all'indice

mount e umount

Aggiungere un altro device al filesystem e' facile. Tutto quello che si deve fare e' utilizzare il comando mount con delle opzioni specifiche. Usando mount si puo' facilmente montare i device che hanno un riferimento nel file /etc/fstab. Per esempio, volendo montare il CD-ROM definito nel file /etc/fstab (come visto nella sezione precedente), si eseguira' :

$ mount /mnt/cdrom

Visto che esiste un riferimento nel file fstab, mount sa automaticamente che opzioni usare. Se non ci fosse stato un riferimento al device, si avrebbe dovuto usare mount con diverse opzioni:

$ mount -t iso9660 -o ro/dev/cdrom /mnt/cdrom

Questo comando include le stesse informazioni come quelle dell'esempio del file fstab. Il -t iso9660 e' il tipo di filesystem del device da montare. In questo caso, deve essere un filesystem iso9660 in quando e' un drive CD-ROM. L'opzione ro dice a mount di montare tale device in modalita' read-only. Il /dev/cdrom e' il nome del device da montare e /mnt/cdrom e' il punto del filesystem in cui verra' montato il drive. Prima di rimuovere un floppy, un CD-ROM o un altro device removibile correntemente montato, si deve smontarlo. Questo si fa usando il comando umount. Non si sa dove sparisca la "n" [^1]. Si puo' usare usare sia il nome del device montato o il mount point come argomento di umount. Per esempio, per smontare il CD-ROM dell'esempio precedente, si usa indistintamente:

# umount /mnt/cdrom

# umount /dev/cdrom


top

Torna all'indice

NFS mount

NFS sta per Network FileSystem. Non e' una parte di un filesystem reale, ma puo' essere usato per aggiungere delle parti al filesystem montato. Molti sistemi Unix spesso condividono gli stessi programmi, directory home e mail spool. Il problema di avere la stessa copia in ogni macchina e' risolto con NFS. Possiamo utilizzare NFS per condividere una serie di home directory tra tutte le workstation. Le workstation che vengono montate con NFS, appaiono come se fossero sulla stessa macchina. Si faccia riferimento alla sezione chiamata "NFS(Network File System)" nel Capitolo 5 e le pagine di man di exports,nfsd e mountd per avere piu' informazioni.


top

Torna all'indice

Sommario

In questo capitolo, si sono acquisite le conoscenze delle proprieta' e dei permessi. Sappiamo perche' esistono e come utilizzarli. Si conoscono anche i link tra file, il mounting dei device e l'NFS mount. Queste tre cose sono aspetti molto importanti del filesystem. Adesso, si dovrebbe avere un'idea di base su come usarli.

[1.NdR. Si scherza sul fatto che in inglese montare e smontare sono rispettivamente: mount e unmount. Nel comando umount, la "n" sparisce.]

top
Torna all'indice

PREV
Capitolo 8 - La Shell
NEXT
Capitolo 10 - Gestire Files e Directory