Gentoo Logo

Guida ad OpenAFS in Gentoo Linux

Indice:

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

# Qui, utenti con uid > 100 sono considerati appartenenti ad AFS e utenti con
# uid <= 100 sono ignorati da pam_afs.
auth       sufficient   pam_afs.so.1 ignore_uid 100

auth       sufficient   pam_rootok.so

# Se si vuole restringere il numero degli utenti ammessi all'utilizzo di 'su',
# creare il file /etc/security/suauth.allow, modificabile solo da root, ed
# aggiungere gli utenti a cui è permesso effettuare 'su' (un utente per ogni
# linea del suddetto file)
#auth       required     pam_listfile.so item=ruser \
#       sense=allow onerr=fail file=/etc/security/suauth.allow

# Decommentando questa linea si permette agli utenti del gruppo wheel
# di eseguire 'su' senza inserire una password.
#auth       sufficient   pam_wheel.so use_uid trust

# In alternativa, si può implementare una lista di utenti che non hanno
# bisogno di fornire una password
#auth       sufficient   pam_listfile.so item=ruser \
#       sense=allow onerr=fail file=/etc/security/suauth.nopass

# Commentando questa linea si permette a qualsiasi utente, anche a quelli
# non presenti nel gruppo wheel, l'esecuzione di 'su'
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

# Qui si previene la perdita dell'id token dell'utente reale
session    optional     pam_afs.so.1 no_unlog


Stampa

Aggiornato il 13 dicembre 2011

La versione originale di questo documento non è più mantenuta

Oggetto: Questa guida mostra come installare un server OpenAFS ed un client su Gentoo Linux

Stefaan De Roeck
Redazione

Holger Brueckner
Redazione

Benny Chuang
Redazione

Tiemo Kieft
Redazione

Steven McCoy
Redazione

Shyam Mani
Redazione

Francesco Grieco
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.