ENEA C. R. Frascati Centro Elaborazione Dati
INFO-GER-FRA
Contattaci via E-Mail
Ti trovi in:    Home --> Sistemi --> AFS --> Codici di calcolo --> AFS User's Guide
by INFO-GER-FRA
Settore Home  Home
  - Attività di INFO
Settore Servizi  Servizi
  - Posta elettronica
  - Backup centralizzato
  - Moduli di richiesta
  - WWW
  - Antivirus
  - Software
  - Manuali online
  - Documentazione
Settore Rete  Rete
  - (LAN, WAN, Accessi PPP..)
Settore Sistemi  Sistemi
  - Supercalcolo
  - S/390
  - Farm Linux
  - AFS: cella enea.it
Settore Links  Progetti
  - Grafica
  - Data GRID
Settore News  News
 

AFS User's Guide

Introduzione
Accesso al file system
Accesso ai files
Volumi
Protezione dei files
Permessi di accesso
Suddivisione dei comandi
Comandi di tipo file server
Comandi di tipo protection server

 

Introduzione ad AFS

La seguente nota introduce i concetti base e i comandi più comuni di AFS; una guida più dettagliata si può ottenere collegandosi per esempio:
al CERN, attraverso l'URL http://wsspinfo.cern.ch/file/doc/afsug.html
a Cornell con l'URL http://www.tc.cornell.edu./UserDoc/Hardware/SP/AFS
alla Transarc Corporation che commercializza questo prodotto con l'URL http://www.transarc.com.

AFS (Andrew File System) è un file system distribuito che permette l'accesso a files o directory residenti su macchine connesse in rete locale e geografica.
La struttura e i meccanismi di indirizzamento di AFS consentono la creazione di file system distribuiti su un gran numero di nodi che possono risiedere in siti geografici diversi.
I comandi di AFS consentono un accesso semplice, soprattutto per coloro che conoscono l'ambiente Unix, rapido ed efficiente.

AFS si basa sul modello client/server; i dati sono memorizzati su una o più macchine server e vengono trasferiti alle macchine client (cached) soltanto quando vengono richiesti. Da questo momento in poi, tutte le modifiche sono eseguite sulla copia locale e sono riportate sul server solo alla chiusura del file.

In AFS viene definita "cell" un'unità amministrativa autonoma che generalmente coincide con il dominio TCP/IP .
Dal punto di vista hardware, una cell si può considerare come un gruppo di macchine server e client, per esempio un Dipartimento universitario, un Istituto del CNR etc. L'amministratore di ciascuna cell determina la configurazione delle macchine client e la quantità di spazio per memorizzare i files sulle macchine server.
Un raggruppamento di cell correlate tra loro viene chiamato "site".

 


Accesso al file system

Per garantire sicurezza al file system, l'accesso a AFS è soggetto ad autorizzazione. Esistono due possibilità per accedere a AFS:
login veloce: nelle cell in cui è stata installata la versione di login dell'AFS, l'utente è automaticamente autorizzato quando fornisce correttamente un nome e la password associata;
login in 2 step: nelle cell che non usano la versione di login dell'AFS, è necessario prima fare login in Unix e successivamente farsi autorizzare. In questo caso si possono avere 2 password diverse, una per il sistema Unix e una per l'AFS in quanto viene richiesta una password per ogni step.
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".
Il token può essere considerato come un biglietto dell'autobus che permette di viaggiare nel file system per tutto il tempo della sua validità.
Se l'utente non ha un token, AFS lo considera come un utente anonimo (fa parte del gruppo system:anyuser meglio descritto in Protezione dei files) e il suo accesso al file system è severamente limitato.
Ogni token è valido solamente nella cell in cui è stato lanciato e si può avere al massimo un token per ogni macchina client; se per esempio si fa telnet su 2 diverse macchine, si avrà un token diverso su ciascuna delle 2 macchine.
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, generalmente è di 100 ore.
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.

In alcuni casi, per esempio se un utente lascia la propria workstation incostudita e non desidera che altri utenti possano accedere ai files di AFS sotto la sua identità, può fare logoff o disabilitare l'accesso a AFS; a questo scopo esiste il comando: unlog

che distrugge il token valido per quella cell. Per poter accedere di nuovo a AFS è necessario lanciare il comando klog.
Se si desidera cambiare la password di accesso a AFS, esiste il comando: kpasswd

che prima di chiedere la nuova password, chiede e controlla quella vecchia.

Accesso ai files

Dopo aver fatto login e aver dimostrato di essere autorizzato a lavorare in AFS, l'utente può accedere ai files di AFS come farebbe sul file system di Unix; l'unica differenza risiede nella possibilità di accedere ad una quantità notevole di files, non limitata a quelli sulla propria home directory, ma estesa a tutti i files distribuiti in rete e per i quali è autorizzato.

Il file system di AFS usa una struttura gerarchica ad albero, simile a quella di Unix, in cui ogni pathname inizia con /afs; quindi /afs è la radice (root) del file space di AFS che può essere considerato come un'estensione del file space della macchina locale.

Il secondo elemento nel pathname è generalmente il nome della cell che contiene i files.

Il resto del pathname dipende da come è stato organizzato il file space locale, per vederlo è necessario eseguire il comando cd sulla directory /afs/cellname e successivamente il comando ls per vedere le directory al terzo livello. Per accedere files e directory sulla cell locale è necessario specificare il pathname ed avere il permesso di accedere ai files desiderati.
AFS, a differenza di NFS (Networking File System), usa una struttura di directory uniforme per tutti i site collegati in rete; quindi il pathname assoluto di ogni file inizia sempre con /afs seguito dal nome della cell.

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.
Poiché ad ogni home directory d'utente è quasi sempre collegato un volume distinto, quando con il comando cd si passa da una home directory ad un'altra, molto spesso si passa da un volume ad un altro che può essere su una macchina server diversa e su una diversa partizione. Naturalmente questo è trasparente all'utente perché AFS interpreta il "Mount Point" e recupera automaticamente files o directory richiesti dall'appropriata locazione, quindi l'utente non è tenuto a sapere dove si trova il proprio volume e neppure su quale macchina server.

Molte cell usano un volume per ogni home directory d'utente, questo fa in modo che tutti i files e le sottodirectory di quell'utente siano memorizzati su una partizione della stessa macchina server. Generalmente i volumi degli utenti sono chiamati user.username, quindi l'utente pippo nella cell di nome enea.it avrà un volume chiamato user.pippo e un "Mount Point" nel directory /afs/enea.it/sede-di-lavoro/pippo chiamato pippo che punta al volume user.pippo.

Per garantire maggiore affidabilità e disponibilità, AFS fornisce la possibilità di duplicare i volumi su più macchine server, quindi nel caso in cui un file server non sia operativo, soltanto i volumi presenti su quel server sono inaccessibili, mentre sono disponibili tutti quelli memorizzati sugli altri server. Questa possibilità viene generalmente usata solo per dati importanti, usati dalla maggioranza degli utenti.

Ogni volume ha una dimensione massima, detta anche quota; viene assegnata dall'amministratore di sistema e rappresenta la quantità massima di spazio disco che il volume può contenere.
Poiché su un volume non si può memorizzare una quantità di dati superiore alla quota, è opportuno controllare periodicamente il grado di riempimento del proprio volume. Se la quota viene superata, si riceve un messaggio di errore e i dati non vengono scritti su disco.

L'utente AFS lavora sulla propria macchina, detta client, su cui gira un processo chiamato "Cache Manager" che gestisce lo spazio dell'AFS. Quando un utente accede un file, il "Cache Manager" richiede il file all'appropriata macchina server e ne scrive una copia sullo spazio disco della macchina client in un apposito file system chiamato cache.
L'utente lavora sulla copia locale senza modificare la versione centrale del file, i cambiamenti effettuati sulla copia locale vengono riportati automaticamente sulla versione centrale solo quando viene chiuso il file.
Quando la versione centrale di un file viene modificata, AFS avvisa tutti gli altri "Cache Manager" che ne hanno una copia, che la loro versione non è più valida e provvede al trasferimento della copia aggiornata.

AFS non impedisce che due utenti modifichino contemporaneamente lo stesso file. Poiché le modifiche sono riportate sul file system all'atto della chiusura del file, quelle apportate dall'utente che termina per primo la sua attività restano in vigore fino alla conclusione del lavoro dell'altro. A quel momento esse vengono ricoperte dalle modifiche apportate dal secondo utente e sono definitivamente perdute. E' quindi necessario evitare situazioni di questo tipo attraverso una oculata definizione dei diritti di accesso.

Protezione dei files

Per controllare l'accesso ai files, viene utilizzato un meccanismo molto più preciso di quello usato da Unix. 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. L'ACL della sottodirectory può essere diversa da quella della directory madre, tuttavia se l'ACL della directory madre è più restrittiva, possono insorgere problemi nell'accesso alla sottodirectory.

Nelle ACL possono essere specificati utenti singoli oppure collezioni di utenti chiamate "Protection Group"; in quest'ultimo caso il permesso di accesso si applica a tutti i componenti del gruppo.
Ogni ACL può contenere al massimo 20 utenti o gruppi di utenti.
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.
Esiste un limite massimo sul numero di gruppi che un utente può creare che è indicato come "group quota". Tale numero viene impostato dall'amministratore del sistema (il default è 20) e viene modificato tutte le volte che viene creato un nuovo gruppo o cancellato uno esistente.

Poiché un gruppo in AFS è una lista di utenti individuali che hanno gli stessi permessi di accesso ai file di AFS, può essere utile invece di aggiungere o togliere dall'ACL i vari utenti separatamente, aggiungere o togliere gli utenti dai gruppi e modificare la lista ACL in cui sono compresi i gruppi.

Quando viene creato un gruppo, automaticamente chi lo crea diviene il possessore e l'unico amministratore del gruppo, può quindi inserire nuovi utenti, cancellarli, etc.

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:

  1. fa parte di un gruppo di sistema (system:anyuser o system:authuser);
  2. è autorizzato come utente individuale;
  3. 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:
  1. eliminare l'utente o il gruppo dalla lista Normal Rights;
  2. 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.

Suddivisione dei comandi

I comandi di AFS possono essere suddivisi in 3 gruppi:
comandi di tipo "file server", sono sempre preceduti da fs, servono per controllare lo stato dei files servers e per controllare e modificare le ACL;
comandi di tipo "protection server", sono sempre preceduti da pts, servono per creare e modificare i "Protection Group";
comandi vari (per es. tokens, klog, etc).
Per avere una lista completa dei comandi di tipo fs e pts e una breve descrizione è sufficiente scrivere a terminale:

fs help oppure pts help

Per vedere la sintassi, lo scopo, gli alias dei comandi di tipo fs e pts è necessario digitare:

fs help comando oppure pts help comando

Per vedere la sintassi di un comando basta fare:

fs comando -help oppure pts comando -help

Comandi di tipo file server

Il comando:

fs quota [-path<dir/filepath>]
fs q [-p<dir/filepath>]

fornisce la percentuale della quota utilizzata sul volume che contiene una specificata directory o file.
Il comando:

fs listquota [-path<dir/filepath>]
fs lq [-p<dir/filepath>]

fornisce il nome del volume, la sua dimensione massima, il numero di blocchi (ogni blocco è di 1024 bytes) correntemente in uso, la percentuale usata del volume e la percentuale di spazio usato sulla partizione.
Il comando:

fs examine [-path<dir/filepath>]
fs exa [-p<dir/filepath>]

fornisce il nome del volume, la sua dimensione massima, il numero di blocchi in uso, la dimensione massima della partizione e il numero dei blocchi disponibili sulla partizione del disco che contiene il volume.
Il comando:

fs whereis [-path <dir/filepath>]
fs whe [-p <dir/filepath>]

fornisce il nome della macchina server su cui è memorizzato un certo file o directory. Volumi che contengono files binari, per esempio editori, sono spesso copiati su più macchine server, in modo che se una di queste non è operativa, i files siano sempre disponibili sulle altre. In questo caso il comando fornisce la lista di tutte le macchine server.

Se una macchina server non è operativa, è impossibile accedere ai files memorizzati su di essa e salvare eventuali cambiamenti.
Il comando:

fs checkservers [-cell <cellname>][-all]
fs checks [-c <cellname>][-all]

permette di conoscere lo stato delle macchine server di una cell. Se viene lanciato senza argomenti fornisce informazioni sulla propria cell; se viene specificato il nome di una cell fornisce i dati di quella; se viene fornito il flag -all da informazioni su tutte le cell con cui il "Cache Manager" è in contatto.
Poiché la risposta del comando può ritardare di qualche minuto per ogni macchina server che non risponde immediatamente, se si desidera avere subito il terminale libero, è consigliabile eseguire il comando in background aggiungendo in fondo alla riga il carattere &.
Il comando:

fs listacl [-path<dir/filepath>]
fs la [-p<dir/filepath>]

viene usato per vedere la lista ACL relativa ad una o più directory. Esso fornisce la lista dei nomi degli utenti o dei gruppi di utenti e il permesso di accesso associato ad ognuno abbreviato alla singola lettera come abbiamo visto precedentemente.
Viene mostrata la lista Normal Rights e, separatamente, se esiste, la lista Negative Rights.

Per modificare la lista ACL relativa ad una directory, esiste il comando:

fs setacl -dir <directory> -acl <entries> [-clear][-negative]
fs sa -d <directory> -a <entries> [-c][-n]

Ogni utente può modificare una ACL su cui ha il diritto di amministratore, generalmente ogni utente può farlo per la propria home directory e i suoi sottodirectory.
Il flag -clear è da usare con molta cautela perché rimuove tutte le entrate nella ACL specificata prima di aggiungere quelle nuove; il flag -negative serve per modificare la lista Negative Rights.
I diritti di accesso specificati nel comando per un utente o un gruppo di utenti non vengono aggiunti a quelli eventualmente già esistenti, bensì li sostituiscono.
Per evitare problemi, si consiglia molta prudenza nel modificare l'ACL e di farlo solo quando è chiaro quello che si vuole ottenere.

Comandi di tipo protection server

Il comando:

pts membership -nameorid <user o groupname>
pts m -na <user o groupname>

fornisce la lista dei gruppi a cui appartiene un utente (specificando user) oppure la lista dei membri di un gruppo specifico (fornendo groupname).
Il comando:

pts examine -nameorid <user o groupname>
pts e -na <user o groupname>

dopo aver confermato l'esistenza dell'utente o del gruppo nel sistema, specifica:
l'"AFS UID" dell'utente o del gruppo, cioé un numero, negativo per i gruppi e positivo per gli utenti, usato internamente dal server,
il nome dell'utente o del gruppo possessore del gruppo,
il nome dell'utente che ha creato il gruppo,
il numero dei gruppi a cui l'utente appartiene oppure il numero di utenti che appartengono al gruppo,
un flag che indica chi può eseguire certe azioni su questo gruppo,
la "group quota" dell'utente, cioé un numero che indica quanti gruppi può ancora creare l'utente specificato.Se viene specificato il nome del gruppo questo numero non è significativo ed è sempre 0.
Il comando:

pts listowned -nameorid <user o groupname>
pts listo -na <user o groupname>

fornisce la lista di tutti i gruppi che un utente possiede (specificando user) oppure la lista di tutti i gruppi che appartengono al gruppo specificato.
Il comando:

pts creategroup -name <groupname> [-owner <ownergroup>]
pts cg -na <groupname> [-o <ownergroup>]

serve per creare un nuovo gruppo; l'utente che lancia questo comando viene registrato come il possessore del gruppo, se si desidera che il possessore sia un altro utente è necessario mettere il flag -owner. Poiché un utente può creare soltanto gruppi regolari, il nome del gruppo deve avere il formato: owner-name:group-name; quindi la prima parte del nome del gruppo deve coincidere con quella del possessore del gruppo.
Naturalmente un gruppo appena creato non ha membri, per riempirlo esiste il comando:

pts adduser -user <username> -group <groupname>
pts ad -u <username> -g <groupname>

che aggiunge un utente nel gruppo specificato. L'effetto di questo comando non è immediato in quanto l'utente, per poter accedere ai diritti del gruppo specificato deve autorizzarsi mediante il comando klog; in caso contrario continua ad avere i diritti acquisiti con il precedente token.
Il comando:

pts removeuser -user <username> -group <groupname>
pts rem -u <username> -g <groupname>

serve per togliere un utente dal gruppo specificato; anche in questo caso l'effetto non è immediato, l'utente perde i vecchi diritti del gruppo solamente dopo aver lanciato il comando klog oppure alla scadenza del token.
Il comando:

pts delete -nameorid <user o groupname>
pts del -na <user o groupname>

serve per eliminare completamente un utente oppure un gruppo.
Il comando:

pts chown -name <groupname> -owner <newowner>
pts ch -na <groupname> -o <newowner>

serve per cambiare il proprietario di un gruppo. Questo comando cambia automaticamente la prima parte del nome del gruppo (quella prima del carattere :) mettendo il nome del nuovo proprietario.
Il comando:

pts rename -oldname <oldname> -newname <newname>
pts ren -o <oldname> -ne <newname>

serve per cambiare il nome di un utente o di un gruppo.

 
Fine pagina