| Introduzione all '
AFS
AFS (Andrew File System) è un file
system distribuito, per il sistema operativo UNIX, che
permette di accedere un gran numero di files e directory
su macchine, diverse in modo uniforme.
E' un prodotto proprietario realizzato e distribuito dalla
Transarc Corp. (Pittsburg,USA). Il sistema puo' funzionare
sulle principali piattaforme Unix (SUN, HP, DEC, IBM,
SGI,Windows/NT), recentemente e' stata annunciata anche
la versione per MsDos. Esiste anche una versione per il
sistema operativo di pubblico dominio Linux (per PC),
sviluppata al MIT.
AFS si basa sul modello client/server.
Client Machine Sono workstation
o altre macchine dove gira un software per connettersi
ai server (AFS client).
Server Machine E' la macchina
che provvede all'accesso ai volumi.
In AFS si distinguono due tipi di
software: Client e Server. Le macchine Client AFS sono
delle normali stazioni di lavoro con dello spazio disco
locale non condiviso dedicato al funzionamento del software
Client; su queste macchine sono attivi i demoni AFS Cache
Manager che presentano all'utente finale una directory
in piu': "/afs". Tutti i file e le directory
che costituiscono /afs sono fisicamente presenti sulle
macchine File Server di AFS, geograficamente disperse
per il mondo. La funzione del Cash Manager locale e' di
comunicare con queste macchine e fornire localmente all'utente
i file remoti.
Cache Manager
Il processo di cache manager assicura
una riduzione del numero di richieste al network del server.
Il cache manager richiede i files al server e le copia
sulla vostra macchina. Voi lavorate su una copia , non
sull'originale , che si trova sul server , al momento
della chiusura, o del salvataggio , pensera' il server
ha modificare l'originale.
AFS e' strutturato in "celle".
In AFS la cell, e' un insieme di
clients e servers.
Possiamo vederla come una struttura ad albero dove la
root e' chiamata /afs , tutte le celle sono visibili al
secondo livello dell'albero AFS e possiamo dare il comando
cd (change direct) verso ogni cella, esattamente come
si cambia directory in Unix.
Dal punto di vista dell'utente la directory /afs non differisce
da qualsiasi altra directory Unix. La sostanziale differenza
e' nel fatto che AFS consente uno schema di autorizzazioni
piu' raffinato e quindi un controllo degli accessi piu'
selettivo che sulle normali directory Unix.
Generalmente una cella corrisponde al medesimo nome del
dominio. Il DNS (Domain Name System) e' un metodo gerarchico
e distribuito di organizzare lo spazio in Internet. Il
DSN raggruppa amministrativamente gli HOST secondo una
catena gerarchica di autorita' che consente di distribuire
e di tenere aggiornati gli indirizzi e altre informazioni.
La nostra cella si chiama enea.it.
Un raggruppamento di cell correlate tra loro viene chiamato
"site".
Per passare da una cella ad un'altra si usa il comando
cd /afs/cellname.
File Space
Una cella ha un suo proprio File
Space e puo' connettersi ai File Space di altre celle
definite in AFS. L'autorizzazione ad accedere al file
space dell'AFS avviene mediante l'assegnazione di un "token"
che viene usato come prova per tutti i file server che
l'utente è "authenticated".
Se l'utente non ha un token, AFS lo considera come un
utente anonimo (fa parte del gruppo system:anyuser)
Ogni token ha un periodo limitato di validità, per vedere
la scadenza si può usare il comando: tokens
che fornisce anche il nome dell'utente
associato al token e il nome della cell in cui è valido.
Il valore default viene impostato dall'amministratore
di sistema.
Un token può essere rinnovato in qualsiasi momento con
il comando: klog
che, dopo aver richiesto la password
dell'utente e averne verificato la correttezza, sostituisce
il vecchio token con il nuovo. Questo comando può essere
utilizzato anche nel caso in cui il vecchio token stia
per scadere e l'utente desideri mandare in esecuzione
in background un job molto lungo. Se stiamo usando X windows
su una workstation il token e' associato con una sessione
sul vostro HOST COMPUTER e l'apertura di altre finestre
non abbiamo bisogno di mandare il comando KLOG, perche'
siamo sempre autenticati.
Volumi
Unix divide i dischi fisici in partizioni
logiche, AFS divide le partizioni in sottosezioni chiamate
volumi.
Un volume quindi contiene un sottoalbero di directory
e di files.
L'accesso a un volume è fornito dal "Mount Point"
che punta alla locazione (macchina server e partizione)
del volume; si può quindi paragonare a una directory di
Unix.
I volumi hanno definita una quota e un ACL associato;
la quota viene assegnata dall'amministratore di sistema
e rappresenta la quantità massima di spazio disco che
il volume può contenere.
Per esaminare la quota di un volume si usa il comando:
fs listquota
Il comando risponde con il nome
del volume che contiene la directory specificata,la quota,la
parte usata,la percentuale usata e la percentuale di spazio
usata sulla partizione che contiene il volume.
fs lq /afs/enea.it/frascati/info <
Volume Name Quota Used % Used Partition
frascati.info.readonly 5000 28 1% 80%
Le quantita' sono misurate in kilobytes.
Protezione
dei files
AFS usa il meccanismo di KERBEROS
e ACL come accesso ai files e directory.
La combinazione tra kerberos e acl provvede ad una superiore
sicurezza.
Tale meccanismo è basato su una lista di controllo, chiamata
ACL (Access Control List) che consiste in una lista di
utenti con i corrispondenti diritti di accesso alla directory.
Per ogni directory del file system di AFS viene definita
una ACL che viene applicata a tutti i files e sottodirectory
presenti su quella directory.
Tutti i files ereditano i diritti di accesso associati
alla directory madre; se un file viene spostato da una
directory ad un'altra, esso acquisisce i diritti di accesso
della nuova directory.
Se viene cambiata l'ACL su una directory, la protezione
di tutti i suoi files viene cambiata.
Quando viene creata una sottodirectory, essa eredita automaticamente
i diritti di accesso della directory madre.
Esistono due tipi di gruppi: quelli
chiamati regolari e quelli senza prefisso; i nomi dei
gruppi regolari sono formati di 2 parti separate dal carattere
:, del tipo: owner-name:group-name
in cui la prima parte indica il
nome del possessore del gruppo mentre la seconda fornisce
il nome del gruppo.
I nomi dei gruppi senza prefisso sono formati solo dalla
parte "group-name"; tali gruppi possono essere
creati solamente dagli amministratori di sistema.
Generalmente i gruppi vengono creati dagli utenti, tuttavia
tre sono creati automaticamente dal sistema:
 |
system:anyuser
- Questo gruppo comprende chiunque può accedere a
questa cell, inclusi gli utenti che hanno fatto login
su una workstation locale ma non sono autorizzati
ad usare AFS (non hanno un token valido).
|
 |
system:authuser
- Questo gruppo comprende tutti gli utenti attualmente
autorizzati a lavorare in AFS (hanno un token valido).
|
 |
system:administrators
- Questo gruppo comprende solamente le persone designate
come amministratori di sistema. |

Permessi
di accesso
La protezione del singolo file dipende
dalla combinazione dei diritti specificati nell'ACL e
dei diritti di accesso ammessi da Unix che, lo ricordiamo,
sono in lettura, in scrittura e in esecuzione. Nell'ACL
sono previsti 7 diritti di accesso associati alla directory
(quindi a tutti i files e sottodirectory residenti su
quella directory) che possono essere suddivisi in 2 livelli:
 |
il
primo livello controlla l'accesso alla directory (LOOKUP,
INSERT, DELETE e ADMINISTER);
|
 |
il
secondo controlla l'accesso ai files presenti nella
directory (READ, WRITE e LOCK). |
Ogni diritto di accesso può essere
abbreviato in un solo carattere come viene mostrato fra
parentesi nella definizione sottostante.
L'accesso LOOKUP (l) permette al
possessore di usare il comando ls per avere la
lista dei nomi dei files e sottodirectory della directory
stessa, ma non di leggerne il contenuto e di esaminare
l'ACL relativa a questa directory.
L'accesso INSERT (i) permette al possessore di aggiungere
nuovi files nella directory o creare nuove sottodirectory.
L'accesso DELETE (d) permette di cancellare files o sottodirectory
dalla directory.
L'accesso ADMINISTER (a) permette di modificare l'ACL
. Gli utenti generalmente possono modificare l'ACL relativa
alla propria home directory.
L'accesso READ (r) permette di leggere il contenuto dei
files della directory e di esaminare la lista dei files
delle sottodirectory.
L'accesso WRITE (w) permette di modificare il contenuto
dei files della directory e di cambiare i diritti di accesso
permessi da Unix con il comando chmod.
L'accesso LOCK (k) permette di far girare programmi che
hanno bisogno di un uso esclusivo della directory o dei
files.
Questi diritti di accesso possono
essere combinati fra loro in vari modi, ma le combinazioni
più usate sono le seguenti:
 |
write-
rlidwk (tutti i diritti meno ADMINISTER)
|
 |
read
- rl (READ e LOOKUP)
|
 |
all
- rlidwka
|
 |
none
- cancella tutti i diritti |
Ogni utente, per poter accedere in
qualsiasi momento ai propri sottodirectory, deve avere almeno
l'accesso LOOKUP sui propri directory; quindi deve essere
autorizzato in uno dei 3 modi seguenti:
- fa parte di un gruppo di sistema
(system:anyuser o system:authuser);
- è autorizzato come utente individuale;
- fa parte di un gruppo di utenti
autorizzati definito da altri utenti.
AFS controlla l'accesso ai propri files
mediante 2 liste:
 |
Normal
Rights contiene l'utente o il gruppo di utenti che
possono eseguire le azioni specificate;
|
 |
Negative
Rights contiene l'utente o il gruppo di utenti a cui
è vietata l'esecuzione delle azioni specificate. |
Poiché il file server prima controlla
la Normal Rights e successivamente la Negative Rights, se
per esempio si desidera dare l'accesso READ a tutte le persone
di un gruppo meno una, si può inserire il gruppo nella lista
Normal Rights e la singola persona nella lista Negative
Rights.
Quindi per impedire l'accesso ad una directory esistono
2 modi:
- eliminare l'utente o il gruppo
dalla lista Normal Rights;
- aggiungere l'utente o il gruppo
nella lista Negative Rights.
Poiché l'AFS permette di prevenire
che altri utenti scrivano accidentalmente sui propri files
solamente limitando l'accesso alla directory attraverso
l'ACL, è opportuno porre molta attenzione nel definire e
nel modificare l'ACL.

AFS nella cella enea.it
Attualmente nella cella enea.it ci
sono 6 File Server suddivisi nelle vari sedi ENEA,
con circa 250 GB di spazio disco.
AFS logicamente è diviso in due parti Read-Only e Read-Write.
Nella parte Read-Only abbiamo installato i codici di calcolo
e software vari, pronti per l'uso sulle macchine Cient
per tutte le piattaforme Unix a cui vien dato supporto.
La parte Read-Write di AFS contiene invece le directory
Home degli utenti.
Qualsiasi possessore di workstation puo' richiederci di
installare il software Client AFS sulla sua macchina e puntare
sulla cella "enea.it" sotto /afs.
Organizzazione delle HOME DIRECTORY
Il proprietario delle directory AFS
puo' per esempio, chiudere completamente l'accesso ai suoi
file, limitare l'accesso alla sola lettura dei nomi dei
file, puo' consentire la lettura o la scrittura o l'esecuzione,
puo' proibire o consentire la cancellazione, puo' infine
aprire alcun delle sue directory a chiunque nel mondo AFS.
Ogni directory in /afs ha l'Access Control List (ACL), composta
da 7 campi che definiscono il modo di accesso di ogni sottodirectory
AFS:
l - lookup (comandi ls e cd; check-ACL)
r - mostra il contenuto dei files
i - crea nuovi file/sottodirectory (create, cp)
w - modifica il contenuto dei file, chmod
d - rm, mv (per mv deve essere garantita l'operazione di inserimento per la directory di destinazione)
k - permesso per programmi di "flock" files nella directory
a - cambia l'ACL
Esempio: gli ACL nella home directory /afs/enea.it/frascati/info/dangelo di AFS dell'utente con
id=dangelo:
~dangelo: dangelo rlidwka
system:administrators rlidwka
frascati rl
(dangelo e gli utenti che fanno parte del gruppo system:administrators hanno tutti i diritti, tutti gli
utenti del gruppo frascati possono vedere e leggere i file)
Protection Groups
Ogni utente ha la facolta' di creare i cosiddetti "Protection
Groups" e popolarli con gli id degli altri utenti;
i gruppi allora possono essere utilizzati nelle ACL delle
directory che l'utente utilizza. Se qualche accesso AFS
e' garantito al gruppo nell'insieme, e' automaticamente
garantito a tutti i membri del gruppo.
Sicurezza
Particolare attenzione e' stata
posta in AFS al problema della sicurezza. Di tutte le
directory /home sotto AFS viene fatto un backup automatico
notturno . Inoltre l'utente di AFS e' soggetto alla autenticazione
attraverso il Kerberos Autentication Server. L'autenticazione
ha una durata limitata nel tempo (default 25 ore) in modo
da assicurare una ulteriore protezione nel caso che una
sessione venga dimenticata aperta. La autenticazione e'
fatta automaticamente al momento del login ed in qualsiasi
istante l'utente puo' rinnovare l'autenticazione estendendone
cosi' il periodo di validita'.
Gli Eseguibili
In particolare un utente AFS puo'
eseguire sulla sua macchina un qualunque programma il
cui eseguibile sia presente in una directory AFS. Il comando
di esecuzione fa si' che il programma sia dapprima copiato
dal Cache Manager sul disco locale e quindi eseguito localmente:
tranne un breve tempo di attesa iniziale l'utente non
percepisce alcuna differenza rispetto alla situazione
in cui il programma sia installato a sua cura sulla macchina
locale ma ha eliminato completamente tutti i problemi
connessi con il reperimento, l'installazione e la manutenzione
del software, con significativi risparmi di tempo e di
spazio disco locale. La Directory dove risiedono gli eseguibili
deve avere ambedue i permessi di LOOKUP e READ permission
per poter mandare in esecuzione il binario.
|