Guida ad OpenAFS in Gentoo Linux
1.
Introduzione
Premessa
Questo documento descrive tutti i passi necessari all'installazione di un server
OpenAFS su Gentoo Linux. Parti di questo documento sono tratte dalle FAQ AFS e
dalla guida IBM's Quick Beginnings su AFS.
Cos'è AFS?
AFS è un filesystem distribuito che permette ad host cooperanti (client e
server) di condividere in maniera efficiente un filesystem attraverso una rete
locale (LAN) o estesa (WAN). I Client mantengono una cache per gli oggetti
(file) maggiormente utilizzati, per averne un accesso più rapido.
AFS è basato su un filesystem distribuito chiamato "Andrew File System",
originariamente sviluppato all'Information Technology Center della
Carnegie-Mellon University. "Andrew" era il nome del progetto di ricerca alla
CMU, in ricordo del fondatore dell'Università. Fondata la Transarc e divenuto
AFS un prodotto, si decise di eliminare il nome "Andrew" al fine di indicare
che ormai si era andati oltre il progetto di ricerca universitario. AFS era
divenuto un filesystem robusto e di qualità. Tuttavia, essendo ancora esistenti
dei nodi (cell) con filesystem del tipo /asf, e, nota la difficoltà dell'epoca
nel cambiare il volume root del filesystem, il nome AFS rimase tale.
Cos'è un nodo (cell) AFS ?
Un nodo (cell) AFS è un insieme di server collegati tra loro che presentano un
singolo filesystem. Di solito, un nodo AFS è costituito da host (postazioni) che
usano lo stesso dominio Internet ("domain name"), ad esempio gentoo.org. Gli
utenti si collegano ai client workstation, i quali richiedono dati e file dai
server del nodo per gli utenti stessi. Gli utenti non sapranno su quale server è
situato il file a cui stanno accedendo, poichè ogni volume può essere copiato e
spostato su di un altro server senza che se ne accorgano. I file sono sempre
accessibili. È una sorta di NFS potenziato.
Che benefici si ottengono con l'utilizzo di AFS?
I punti di forza di AFS sono: abilità di caching (da 100M a 1GB lato client),
caratteristiche di sicurezza (basato su Kerberos 4, con access control list),
semplicità di addressing (si ha in pratica un solo filesystem), scalabilità
(ulteriore aggiunta di server al nodo in caso di necessità), protocolli di
comunicazione.
Dove si possono trovare maggiori informazioni?
Leggere le FAQ
ASF.
Il sito ufficiale di OpenAFS è www.openafs.org.
AFS è stato originariamente sviluppato dalla Transarc che ora è di proprietà di
IBM. Dall'aprile 2005 è stato ritirato dal catalogo dei prodotti IBM.
Come posso effettuare un debug dei problemi?
OpenAFS ha un ottimo supporto al logging. Naturalmente, in modo predefinito, i
messaggi di log vengono memorizzati nei propri file di log invece che nei
normali file log di sistema presenti nella propria macchina. Per redirigere i
messaggi di log nel proprio logger di sistema, utilizzare l'opzione
-syslog per tutti i comandi bos.
2.
Aggiornamento da versioni precedenti
Introduzione
Questa sezione è di aiuto nel processo di aggiornamento da una versione OpenAFS
esistente e già installata ad una versione di OpenAFS versione 1.4.0 o superiore
(necessaria per i molti bug risolti, per il supporto al kernel 2.6 e ai file di
grandi dimensioni).
Se si è installata una versione "pulita" di OpenAFS uguale o superiore alla 1.4,
si può tranquillamente saltare questo capitolo. Se, però, si sta aggiornando da
una versione precedente, si raccomanda caldamente di seguire le istruzioni delle
prossime sezioni. Lo script di transizione nell'ebuild è stato creato in modo da
garantire un aggiornamento rapido e, a seguire, un riavvio. Notare che (per
ragioni di sicurezza) tale script non cancella i vecchi file di configurazione,
i vecchi script di avvio e non cambia la configurazione di boot al fine di
utilizzare i nuovi script. Inoltre notare ancora che l'utilizzo di un vecchio
modulo kernel OpenAFS in un sistema con binari aggiornati, causerà quasi
sicuramente un blocco del kernel.
Nota:
Questo capitolo è stato scritto pensando alle differenti configurazioni di
sistema possibili. Tuttavia, è ancora possibile che, a causa di particolari
modifiche che un utente potrebbe aver effettuato, la sua situazione specifica
non sia qui considerata. Un utente con abilità tali da modificare autonomamente
il proprio sistema dovrebbe avere l'esperienza necessaria per applicare le
modifiche quando necessarie. Viceversa, un utente che abbia semplicemente
installato l'ebuild precedente, può tranquillamente saltare la maggior parte
degli avvertimenti che seguiranno.
|
Differenze dalle versioni precedenti
Tradizionalmente, OpenAFS ha sempre usato la stessa convenzione dei laboratori
IBM TransArc per i percorsi (path). Comprensibilmente, le vecchie installazioni
di AFS utilizzano queste convenzioni. Installazioni più recenti sono però
conformi all'FSH nell'utilizzo di locazioni standard (come si vede in molte
distribuzioni Linux). La tabella seguente è un elenco di script di
configurazione e di README che accompagnano un pacchetto OpenAFS:
| Directory |
Scopo |
Percorso Transarc |
Percorso Predefinito |
Traduzione in Gentoo |
| viceetcdir |
Configurazione Client |
/usr/vice/etc |
$(sysconfdir)/openafs |
/etc/openafs |
| unnamed |
Binari Client |
non specificato |
$(bindir) |
/usr/bin |
| afsconfdir |
Configurazione Server |
/usr/afs/etc |
$(sysconfdir)/openafs/server |
/etc/openafs/server |
| afssrvdir |
Binari Internal Server |
/usr/afs/bin (server) |
$(libexecdir)/openafs |
/usr/libexec/openafs |
| afslocaldir |
Stato Server |
/usr/afs/local |
$(localstatedir)/openafs |
/var/lib/openafs |
| afsdbdir |
Database Auth/serverlist/... |
/usr/afs/db |
$(localstatedir)/openafs/db |
/var/lib/openafs/db |
| afslogdir |
File di Log |
/usr/afs/logs |
$(localstatedir)/openafs/logs |
/var/lib/openafs/logs |
| afsbosconfig |
Configurazione Overseer |
$(afslocaldir)/BosConfig |
$(afsconfdir)/BosConfig |
/etc/openafs/BosConfig |
Ci sono altre particolarità nei percorsi Transarc, come binari in
/usr/vice/etc, ma questa lista non ha come scopo l'essere
esauriente. Vuole, tuttavia, fare da riferimento per problemi di transizione
dei file di configurazione.
Risultato dei cambi di percorsi è che la locazione predefinita della cache di
disco passa da /usr/vice/cache a /var/cache/openafs.
Inoltre, gli script di init sono stati separati in client e server. Se prima si
aveva come script di avvio /etc/init.d/afs, ora si avranno
/etc/init.d/openafs-client e
/etc/init.d/openafs-server. Di conseguenza, il file di
configurazione /etc/conf.d/afs è stato diviso in
/etc/conf.d/openafs-client e
/etc/conf.d/openafs-server. Le opzioni in
/etc/conf.d/afs per attivare o disattivate il client o il server
diventano obsolete.
Un altro cambiamento relativo allo script di avvio è che ora non viene più
controllato il setup della cache del disco. Il vecchio codice richiedeva che
una partizione separata di tipo ext2 fosse montata in
/usr/vice/cache. Questo creava alcuni problemi:
-
Nonostante sia una configurazione logica, la propria cache non necessita di
una partizione separata. Fino a quando si è certi che lo spazio specificato
in /etc/openafs/cacheinfo sia realmente disponibile per la
cache del disco, va tutto bene. Quindi non ci sono particolari problemi
nell'avere la cache sulla partizione di root.
-
Alcuni utilizzano collegamenti simbolici per puntare alla locazione reale
della cache del disco. Questo non va bene per lo script di avvio, perchè
questa locazione della cache non viene risolta in /proc/mounts.
-
Molti preferiscono ext3 a ext2. Entrambi i filesystem sono validi per
l'utilizzo della cache del disco. Qualsiasi altro filesystem non è
supportato (quindi: non provare reiserfs, si va incontro a blocchi certi).
Passaggio ai nuovi percorsi (path)
Prima di tutto, effettuando un emerge di una nuova versione di OpenAFS non si
perderanno i file di configurazione relativi alle vecchie versioni. Lo script è
stato fatto in modo da non modificare nessun file presente sul proprio sistema.
Quindi anche se si ha una configurazione totalmente caotica con un mix di
vecchie e nuove locazioni, lo script non dovrebbe causare nessun tipo di
problema. Inoltre, se dovesse venir rilevato un server OpenAFS in esecuzione,
l'installazione terminerà, evitando possibili corruzioni del database.
Un ulteriore avvertimento: in internet circolano alcuni ebuild che disabilitano
parzialmente la protezione che Gentoo pone sulla directory /etc.
Questi ebuild non sono mai stati distribuiti da Gentoo. Per questo motivo si
dovrebbe controllare la variabile CONFIG_PROTECT_MASK con il comando
seguente:
Codice 2.1: Controllo della variabile CONFIG_PROTECT_MASK |
# emerge info | grep "CONFIG_PROTECT_MASK"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/texmf/web2c /etc/env.d"
|
Benchè niente in questo ebuild modifichi file in /etc/afs,
l'aggiornanento provvederà alla rimozione della vecchia installazione di
OpenAFS. I file in CONFIG_PROTECT_MASK appartenenti alla vecchia
installazione saranno rimossi.
Dovrebbe essere chiaro agli utenti esperti che, nel caso si fossero aggiunti
manualmente collegamenti simbolici nel proprio sistema (ad esempio da
/usr/afs/etc a /etc/openafs), la nuova installazione
potrebbe ugualmente andare a buon fine anche usando i vecchi file di
configurazione. In questo caso, non ci sarà stata nessuna reale transazione, e
la rimozione della vecchia installazione porterà ad una configurazione di
OpenAFS non funzionante.
Venuti a conoscenza di quello che non dovrebbe accadere, vediamo ora cosa ci si
aspetta che accada:
-
/usr/afs/etc viene copiato in /etc/openafs/server
-
/usr/vice/etc viene copiato in /etc/openafs
-
/usr/afs/local viene copiato in /var/lib/openafs
-
/usr/afs/local/BosConfig viene copiato in
/etc/openafs/BosConfig, mentre le occorrenze di
/usr/afs/bin/ vengono sostituite con
/usr/libexec/openafs, /usr/afs/etc con
/etc/openafs/server e /usr/afs/bin
(senza / e non come precedentemente) con
/usr/bin
-
/usr/afs/db viene copiato in /var/lib/openafs/db
-
Il file di configurazione /etc/conf.d/afs viene copiato in
/etc/conf.d/openafs-client, visto che tutte le vecchie opzioni
erano destinate ad un utilizzo esclusivamente lato client.
L'aggiornamento
So you haven't got an OpenAFS server setup? Or maybe you do, the previous
sections have informed you about what is going to happen, and you're still
ready for it?
Non si ha ancora un setup del server OpenAFS? O forse c'è, le sezioni
precedenti hanno fornito le informazioni riguardo a cosa accadrà, e ci si sente
pronti?
E allora si prosegua senza indugio!
Se si ha un server in esecuzione, lo si dovrebbe bloccare ora.
Codice 2.2: Fermare OpenAFS (nel caso si abbia un server) |
# /etc/init.d/afs stop
|
E ora l'aggiornamento!
Codice 2.3: Aggiornamento |
# emerge -u openafs
|
Riavviare OpenAFS
Se si avesse ancora un server OpenAFS in esecuzione, ora è d'obbligo bloccarlo.
Codice 2.4: Fermare il client OpenAFS dopo l'aggiornamento |
# /etc/init.d/afs stop
|
Poichè, naturalmente, si deve mantenere al minimo il tempo di non funzionamento,
ora è possibile riavviare il server OpenAFS nella maniera corretta.
Codice 2.5: Riavvio del server OpenAFS dopo l'aggiornamento |
# /etc/init.d/openafs-server start
|
Per controllare che il server sia in esecuzione:
Codice 2.6: Controllo dello stato del server OpenAFS |
# /usr/bin/bos status localhost -localauth
|
Prima di avviare il client OpenAFS, è opportuno controllare la configurazione
della cache attraverso il file /etc/openafs/cacheinfo. Per
riavviare il client OpenAFS:
Codice 2.7: Riavvio del client OpenAFS dopo l'aggiornamento |
# /etc/init.d/openafs-client start
|
Pulizia finale
Prima di passare alla cancellazione di file obsoleti, assicurarsi che tutto
funzioni alla perfezione e che si siano riavviati correttamente i servizi
(altrimenti, potrebbe essere in esecuzione ancora la vecchia installazione).
Importante:
È importante verificare che non si stia utilizzando /usr/vice/cache
per la cache del disco quando si cancella /usr/vice!!
|
Le directory seguenti possono essere rimosse dal sistema:
- /etc/afs
- /usr/vice
- /usr/afs
- /usr/afsws
Anche i file seguenti non sono più necessari:
- /etc/init.d/afs
- /etc/conf.d/afs
Codice 2.8: Cancellazione dei vecchi file |
# tar czf /root/oldafs-backup.tgz /etc/afs /usr/vice /usr/afs /usr/afsws
# rm -R /etc/afs /usr/vice /usr/afs /usr/afsws
# rm /etc/init.d/afs /etc/conf.d/afs
|
Nel caso si avesse utilizzato precedentemente una delle seguenti due versioni
=openafs-1.2.13 oppure =openafs-1.3.85, si potrebbero avere altri file non
più necessari:
- /etc/init.d/afs-client
- /etc/init.d/afs-server
- /etc/conf.d/afs-client
- /etc/conf.d/afs-server
Cambiamenti nello Script di Avvio
A questo punto la maggior parte degli utenti potrebbe volere che il proprio
sistema sia configurato in maniera tale da avviare automaticamente il client e
il server OpenAFS all'avvio. Quelli che non lo desiderano possono saltare questa
sezione. Invece se, precedentemente, il proprio sistema era già configurato per
avviare in automatico i servizi, sarà necessario ora riaggiungerli manualmente,
poichè i nomi degli script di avvio sono cambiati.
Codice 2.9: Reinserimento dell'avvio di OpenAFS nella sequenza di boot |
# rc-update del afs default
# rc-update add openafs-client default
# rc-update add openafs-server default
|
Se si avesse installato =openafs-1.2.13 oppure =openafs-1.3.85,
bisognerà rimuovere afs-client e afs-server dal
runlevel default, invece di afs.
Risoluzione problemi: cosa fare se l'aggiornamento automatico non va a
buon fine
Non si dovrebbe avere perso nessun dato e nessun file di configurazione. Quindi
non resta altro da fare che analizzare la situazione. Bisogna effettuare una
segnalazione di bug all'indirizzo bugs.gentoo.org con, preferibilmente, quante
più informazioni possibili allegate.
Se ci fossero problemi nell'avvio del client, questo dovrebbe aiutare nella
diagnosi del problema:
-
Digitare da terminale dmesg. Il client normalmente invia eventuali
messaggi di errore qui.
-
Controllare /etc/openafs/cacheinfo. Dovrebbe essere nella
forma: /afs:{percorso della cache del disco}:{numero di blocchi per la cache
del disco}. Normalmente, la propria cache del disco è in
/var/cache/openafs.
-
Controllare cosa restituisce il comando lsmod. Una delle linee deve
iniziare con la parola openafs.
-
Il comando pgrep afsd sarà utile per controllare se afsd sia in
esecuzione o meno.
-
cat /proc/mounts mostra se /afs è stato montato.
Se ci fossero problemi nell'avvio del server, questi suggerimenti potrebbero
risultare utili:
-
pgrep bosserver mostra se l'overseer ("supervisore", ndt) è in
esecuzione o meno. Se si ha più di un overseer in esecuzione, c'è
sicuramente qualcosa che non va. In questo caso, si dovrebbe provare uno
shutdown (spegnimento) del server OpenAFS con bos shutdown localhost
-localauth -wait, controllare il risultato con bos status localhost
-localauth, chiudere tutti i restanti processi overseer e infine
controllare se ci sono processi server in esecuzione (ls
/usr/libexec/openafs per averne una lista). Infine, eseguire
/etc/init.d/openafs-server zap per resettare lo stato del server e
/etc/init.d/openafs-server start per provare a lanciarlo nuovamente.
-
Se si sta utilizzando il sistema di log interno ad OpenAFS (configurazione
predefinita), controllare /var/lib/openafs/logs/*. Se, invece,
si utilizzano i log di sistema, controllare questi ultimi per ottenere
informazioni utili.
3.
Documentazione
Consultare la Documentazione AFS
Si può facilmente consultare la Documentazione originale AFS di IBM. È scritta
molto bene e, se si deve amministrare un Server AFS, diventa una lettura
obbligata.
Codice 3.1: Installazione di afsdoc |
# emerge app-doc/afsdoc
|
È anche possibile consultare la documentazione allegata ad OpenAFS. Viene
installata con la flag USE doc quando si effettua l'emerge del pacchetto
OpenAFS. Il percorso in cui trovarla è /usr/share/doc/openafs-*/.
Al momento della stesura di questa guida, la documentazione è ancora in pieno
sviluppo. Può, tuttavia, contenere informazioni relative a nuove caratteristiche
di OpenAFS non trattate nella documentazione ufficiale IBM AFS.
4.
Installazione sul Client
Compilare il Client
Codice 4.1: Installazione di openafs |
# emerge net-fs/openafs
|
Terminata la compilazione, si è pronti per proseguire.
Installazione del client per una semplice "consultazione"
Se non si fa parte di una specifica cella OpenAFS alla quale si vuole accedere,
e si vogliono semplicemente sfogliare le condivisioni OpenAFS disponibili,
allora si può installare OpenAFS e, senza toccare nessuna configurazione,
avviare /etc/init.d/openafs-client.
Accedere ad una specifica cella OpenAFS
Se si necessita di accedere ad una cella specifica, ad esempio la cella della
propria università o della propria compagnia, bisogna apportare alcune
modifiche.
Prima di tutto, è necessario aggiornare /etc/openafs/CellServDB con
i server del database della propria cella. Questa informazione viene solitamente
fornita dal proprio amministratore.
In seguito, per accedere alla cella OpenAFS, bisogna specificarne il nome in
/etc/openafs/ThisCell.
Codice 4.2: Modifica di CellServDB e ThisCell |
CellServDB:
>netlabs #Cell name
10.0.0.1 #storage
ThisCell:
netlabs
|
Avvertenza:
All'interno del file CellServDB devono essere usati solamente
spazi. Nel caso di uso dei TAB, il client andrà sicuramente incontro a problemi.
|
CellServDB indica al client quale o quali server ha bisogno di contattare per
una specifica cella. ThisCell dovrebbe sembrare ovvio. Normalmente si utilizza
un nome che è unico per la propria organizzazione. Il proprio dominio
(ufficiale) potrebbe essere una buona scelta.
Per un avvio rapido, eseguire /etc/init.d/openafs/client seguito
da klog per autenticarsi e cominciare. Per autenticazioni automatiche
alla propria cella, si può leggere la sezione che segue.
Configurare la cache
Nota:
Sfortunatamente il client AFS richiede un filesystem di tipo ext2/3 per la
propria cache per funzionare correttamente. Ci sono diversi problemi
nell'utilizzo di altri filesystem (ad esempio la scelta di reiserfs non è una
buona idea)
|
Si può allocare la propria cache su un filesystem esistente (sempre di tipo
ext2/3), oppure si potrebbe voler creare una partizione separata a tale scopo.
La locazione predefinita della cache è /var/cache/openafs, ma è
possibile cambiarla modificando /etc/openafs/cacheinfo. La
dimensione predefinita per la propria cache è 200MB, meglio se maggiore.
Esecuzione di AFS all'avvio
I comandi seguenti creano i collegamenti appropriati per avviare il client afs
durante il boot del sistema.
Avvertenza:
Si dovrebbe sempre avere un server afs in esecuzione all'interno del proprio
dominio quando si avvia un client afs. Se il server AFS non è attivo (o è
down), il sistema non si avvierà e attenderà prima di proseguire, per un tempo
relativamente lungo (fino al timeout).
|
Codice 4.3: Aggiunta di un client AFS al runlevel default |
# rc-update add openafs-client default
|
5.
Installazione sul Server
Compilazione lato Server
Nota:
Tutti i comandi devono essere digitati su una sola linea. Per facilitarne la
lettura, in questo documento alcune volte sono riportati su più linee.
|
Se non lo si è ancora fatto, i comandi seguenti installano tutti i binari
necessari alla configurazione di un Server AFS e di un Client.
Codice 5.1: Installazione di openafs |
# emerge net-fs/openafs
|
Avvio del Server AFS
Ora si deve eseguire il comando bosserver per inizializzare il
Basic OverSeer (BOS) Server, il quale ha il compito di monitorare e controllare
gli altri processi del server AFS. Si pensi al BOS come ad un init del sistema.
La flag -noauth va inclusa per disabilitare il controllo delle
autorizzazioni, poichè non si è ancora aggiunto l'user admin.
Avvertenza:
Disabilitando il controllo delle autorizzazioni, la sicurezza del nodo (cell)
viene, temporaneamente, compromessa. Tutti questi sottopassaggi vanno
completati in un unica ininterrotta sessione e il sistema non deve essere
lasciato incustodito fino al successivo riavvio del Server BOS con il controllo
delle autorizzazioni attivato.
|
Codice 5.2: Inizializzazione del Basic OverSeer Server |
# bosserver -noauth &
|
Controllare che il Server BOS abbia creato i file
/etc/openafs/server/CellServDB e
/etc/openafs/server/ThisCell
Codice 5.3: Controllo della presenza di CellServDB e ThisCell |
# ls -al /etc/openafs/server/
-rw-r--r-- 1 root root 41 Jun 4 22:21 CellServDB
-rw-r--r-- 1 root root 7 Jun 4 22:21 ThisCell
|
Assegnazione del Nome del Nodo (cell) e del Gruppo (Membership) per i
Processi del Server
A questo punto assegnare il nome al nodo.
Importante:
Ci sono alcune restrizioni nel formato del nome. Non possono essere usate
lettere in maiuscolo e non si possono superare i 64 caratteri. Il nome del
proprio nodo (cell) apparirà nel percorso /afs, quindi conviene
usare nomi brevi.
|
Nota:
D'ora in avanti sostituire alla stringa <nome server> l'hostname completo
(ad esempio afs.gentoo.org) della macchina sulla quale state installando
il tutto. Al posto di <nome cella> va inserito il nome completo del
proprio nodo (ad esempio gentoo).
|
Eseguire il comando bos setcellname per assegnare un nome al nodo:
Codice 5.4: Impostazione del nome della cella |
# bos setcellname <nome server> <nome cella> -noauth
|
Avvio del Database Server Process
Il comando bos create crea le configurazioni dei quattro processi
database server nel file /etc/openafs/BosConfig. I quattro processi
funzionano solamente sui database server.
| kaserver |
L'Authentication Server gestisce l'Authentication Database. Può essere
sostituito con un demone Kerberos 5 (in questa guida non documentato).
|
| buserver |
Il Backup Server gestisce il Backup Database |
| ptserver |
Il Protection Server gestisce il Protection Database |
| vlserver |
Il Volume Location Server gestisce il Volume Location Database (VLDB). È il
più importante
|
Codice 5.5: Creazione configurazioni dei processi database |
# bos create <nome server> kaserver \
simple /usr/libexec/openafs/kaserver \
-cell <nome cella> -noauth
# bos create <nome server> buserver \
simple /usr/libexec/openafs/buserver \
-cell <nome cella> -noauth
# bos create <nome server> ptserver \
simple /usr/libexec/openafs/ptserver \
-cell <nome cella> -noauth
# bos create <nome server> vlserver \
simple /usr/libexec/openafs/vlserver \
-cell <nome cella> -noauth
|
È possibile verificare che tutti i server siano in esecuzione con il comando
bos status:
Codice 5.6: Controllo del corretto funzionamento dei server |
# bos status <nome server> -noauth
Instance kaserver, currently running normally.
Instance buserver, currently running normally.
Instance ptserver, currently running normally.
Instance vlserver, currently running normally.
|
Sicurezza del Nodo (cell)
Verranno ora esaminati i meccanismi di sicurezza del nodo. Si creeranno due
profili iniziali nell'Authentication Database: l'account di amministratore,
chiamato per convenzione admin e un account per i processi del server
AFS, chiamato afs. Nessun utente si può connettere usando l'user
afs, ma il modulo Authentication Server's Ticket Granting Service (TGS)
usa questo account per criptare i ticket del server concessi ai client AFS.
Passare alla modalità interattiva kas
Codice 5.7: Modalità interattiva |
# kas -cell <nome cella> -noauth
ka> create afs
initial_password:
Verifying, please re-enter initial_password:
ka> create admin
initial_password:
Verifying, please re-enter initial_password:
ka> examine afs
User data for afs
key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:30 2001
password will never expire.
An unlimited number of unsuccessful authentications is permitted.
entry never expires. Max ticket lifetime 100.00 hours.
last mod on Mon Jun 4 20:49:30 2001 by <none>
permit password reuse
ka> setfields admin -flags admin
ka> examine admin
User data for admin (ADMIN)
key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:59 2001
password will never expire.
An unlimited number of unsuccessful authentications is permitted.
entry never expires. Max ticket lifetime 25.00 hours.
last mod on Mon Jun 4 20:51:10 2001 by <none>
permit password reuse
ka>
|
Il comando bos adduser aggiunge l'utente admin (amministratore) a
/etc/openafs/server/UserList.
Codice 5.8: Aggiunta dell'utente admin alla UserList |
# bos adduser <nome server> admin -cell <nome cella> -noauth
|
Il comando bos addkey definisce la chiave di crittografia (encryption
key) del Server AFS in /etc/openafs/server/KeyFile
Nota:
Nel caso di richiesta di una password ("input key"), sarà necessario digitare
quella usata nella creazione dell'user afs nella modalità interattiva
kas.
|
Codice 5.9: Inserimento password |
# bos addkey <nome server> -kvno 0 -cell <nome cella> -noauth
input key:
Retype input key:
|
Il comando pts createuser crea un profilo Protection Database per
l'utente amministratore.
Nota:
il Protection Server assegna in modo predefinito all'utente admin un AFS
UID 1, perchè è il primo profilo creato. Se nel file delle password locale
(/etc/passwd o uno equivalente) è già presente un admin con
UID differente, la flag -id verrà utilizzata per creare UID equivalenti.
|
Codice 5.10: Creazione del profilo Protection Database per l'utente del database |
# pts createuser -name admin -cell <nome cella> [-id <AFS UID>] -noauth
|
Il comando pts adduser fà dell'utente admin un membro del gruppo
"system:administrators" e il comando pts membership è utile per
verificare che ciò sia avvenuto correttamente.
Codice 5.11: Fare amministratore un membro del gruppo administrators e verifica |
# pts adduser admin system:administrators -cell <nome cella> -noauth
# pts membership admin -cell <nome cella> -noauth
Groups admin (id: 1) is a member of:
system:administrators
|
(Ri)Avvio del server AFS
In questo momento, è possibile autenticarsi, e il server OpenAFS può essere
avviato in modo corretto. Si noti che l'autenticazione richiede anche un client
OpenAFS in esecuzione (la cui configurazione si trova nel capitolo precedente).
Codice 5.12: Arresto di bosserver |
# bos shutdown <server name> -wait -noauth
# killall bosserver
|
Codice 5.13: Avvio normale del server OpenAFS (e del client) |
# /etc/init.d/openafs-server start
# /etc/init.d/openafs-client start
|
Codice 5.14: Aggiunta del server AFS al runlevel default |
# rc-update add openafs-server default
|
Codice 5.15: Ottenere un token come utente amministratore |
# klog admin
|
Avvio del File Server, Volume Server e Salvager
Avviare il processo fs, costituito da File Server, da Volume Server e da
Salvager (processi fileserver, volserver e salvager).
Codice 5.16: Avvio del processo fs |
# bos create <nome server> fs \
fs /usr/libexec/openafs/fileserver /usr/libexec/openafs/volserver /usr/libexec/openafs/salvager \
-cell <cell name> -noauth
|
Controllare che tutti i processi siano in esecuzione:
Codice 5.17: Controllo della corretta esecuzione di tutti i processi |
# bos status <nome server> -long -noauth
Instance kaserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/libexec/openafs/kaserver'
Instance buserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/libexec/openafs/buserver'
Instance ptserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/libexec/openafs/ptserver'
Instance vlserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/libexec/openafs/vlserver'
Instance fs, (type is fs) currently running normally.
Auxiliary status is: file server running.
Process last started at Mon Jun 4 21:09:30 2001 (2 proc starts)
Command 1 is '/usr/libexec/openafs/fileserver'
Command 2 is '/usr/libexec/openafs/volserver'
Command 3 is '/usr/libexec/openafs/salvager'
|
Il passo successivo è in relazione al fatto se si è o meno mai eseguito un file
server AFS nel nodo.
Se si sta installando il Server AFS per la prima volta nel nodo, è necessario
creare il primo volume AFS, root.afs
Nota:
Al posto di "nome partizione" va inserito il nome di una partizione AFS Server
della postazione. Qualsiasi partizione montata nella directory chiamata
/vicepx, dove x può variare fra a e z, sarà considerata e usata
come partizione del server OpenAFS. Andrà bene qualsiasi tipo di filesystem
Unix (al contrario della cache del client, che poteva essere solamente di tipo
ext2/3). Suggerimento: il server controlla per ogni punto di montaggio
/vicepx se il filesystem è lì montato. Se non lo è, il server
non tenterà di usarlo. Questo comportamento può essere cambiato inserendo un
file chiamato AlwaysAttach in questa directory.
|
Codice 5.18: Creazione del volume root.afs |
# vos create <nome server> <nome partizione> root.afs -cell <nome cella> -noauth
|
Se nel nodo sono già presenti postazioni con file server AFS e volumi, verranno
utilizzati i comandi vos sncvldb e vos syncserv per sincronizzare
il VLDB (Volume Location Database) con la stato attuale dei volumi sulla
postazione locale. Tutti i dati necessari saranno copiati sul proprio nuovo
server.
Se il comando dovesse restituire il messaggio "partition /vicepa does not exist
on the server" (la partizione /vicepa non esiste sul server, ndt), bisognerà
assicurarsi che la partizione sia stata montata prima dell'esecuzione del server
OpenAFS, oppure bisognerà montare la directory e riavviare i processi con il
comando bos restart <nome server> -all -cell <nome cella>
-noauth.
Codice 5.19: Sincronizzazione del VLDB |
# vos syncvldb <nome server> -cell <nome cella> -verbose -noauth
# vos syncserv <nome server> -cell <nome cella> -verbose -noauth
|
Avvio del Server Portion dell'Update Server
Codice 5.20: Avvio del server update |
# bos create <nome server> \
upserver simple "/usr/libexec/openafs/upserver \
-crypt /etc/openafs/server -clear /usr/libexec/openafs" \
-cell <nome cella> -noauth
|
Configurazione del Top Level del Filespace AFS
C'è bisogno, a questo punto, di configurare le ACL ("access control list",
ovvero "Liste di controllo accesso") in modo che ogni utente possa accedere al
percorso /afs.
Nota:
La configurazione predefinita del client OpenAFS ha dynroot attivato.
Questa opzione trasforma /afs in una directory virtuale composta
dal contenuto del proprio file /etc/openafs/CellServDB. Quindi, il
comando seguente non funzionerà, poichè richiede una directory AFS reale. E'
possibile disattivare temporaneamente dynroot cambiando il valore di
ENABLE_DYNROOT in no nel file
/etc/conf.d/openafs-client. Non dimenticare che ad ogni cambio di
opzioni deve seguire un riavvio del client.
|
Codice 5.21: Configurazione delle ACL |
# fs setacl /afs system:anyuser rl
|
Si deve ora creare il volume root, montarlo in modalità solo lettura su
/afs/<nome cella> e in modalità lettura/scrittura su
/afs/.<nome cella>
Codice 5.22: Configurazione del volume root |
# vos create <nome server><partition name> root.cell
# fs mkmount /afs/<nome cella> root.cell
# fs setacl /afs/<nome cella> system:anyuser rl
# fs mkmount /afs/.<nome cella> root.cell -rw
|
Codice 5.23: Aggiunta di volumi sottostanti |
# vos create <nome server> <nome partizione> <miovolume>
# fs mkmount /afs/<nome cella>/<miopuntodimontaggio> <miovolume>
# fs mkmount /afs/<nome cella>/.<miopuntodimontaggio> <miovolume> -rw
# fs setquota /afs/<nome cella>/.<miopuntodimontaggio> -max <quotum>
|
Ora è tutto pronto! Si dovrebbe avere un file server AFS funzionante all'interno
della propria rete.
Nota:
Per il corretto funzionamento del server AFS è essenziale che tutti gli orologi
di sistema siano sincronizzati. La soluzione più conveniente consiste nella
installazione di un server ntp su di una postazione (ad esempio sul server AFS)
per sincronizzare tutti gli orologi dei client attraverso il client ntp. Questo
può, naturalmente, essere fatto anche su di un client AFS.
|
6.
Amministrazione di Base
Avviso
OpenAFS è una tecnologia complessa e ampia. Si consiglia la lettura della
documentazione AFS per maggiori e ulteriori informazioni. In questo capitolo
verranno illustrate solo alcune operazioni di amministrazione.
Configurazione di PAM per l'acquisizione di un Token AFS al Login
Per utilizzare AFS è necessario autenticarsi sul Server KA se si sta utilizzando
una implementazione di AFS Kerberos 4, o sul Kerberos 5 KDC se si sta
utilizzando MIT, Heimdal, oppure ShiShi Kerberos 5. Tuttavia per loggarsi ad una
macchina sarà necessario anche un account utente, situato solitamente in
/etc/passwd, NIS, LDAP (OpenLDAP), oppure in un database Hesiod.
PAM permette a Gentoo di legare l'autenticazione AFS e di login all'account
utente.
Sarà necessario aggiornare /etc/pam.d/system-auth, utilizzato anche
da altre configurazioni. "use_first_pass" sta ad indicare il controllo prima sul
login dell'utente, e "ignore_root" blocca il controllo sul superuser locale in
modo da permettere il login se AFS o il network non si avviano.
Codice 6.1: /etc/pam.d/system-auth |
auth required pam_env.so
auth sufficient pam_unix.so likeauth nullok
auth sufficient pam_afs.so.1 use_first_pass ignore_root
auth required pam_deny.so
account required pam_unix.so
password required pam_cracklib.so retry=3
password sufficient pam_unix.so nullok md5 shadow use_authtok
password required pam_deny.so
session required pam_limits.so
session required pam_unix.so
|
Per permettere a sudo di mantenere i token degli utenti reali e per
evitare agli utenti locali di ottenere un accesso AFS cambiare
/etc/pam.d/su come evidenziato di seguito:
Codice 6.2: /etc/pam.d/su |
auth sufficient pam_afs.so.1 ignore_uid 100
auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid
auth required pam_stack.so service=system-auth
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session optional pam_xauth.so
session optional pam_afs.so.1 no_unlog
|
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|