Le guide d'openafs pour Gentoo Linux
1.
Vue d'ensemble
À propos de cette documentation
Ce document décrit toutes les étapes nécessaires à la mise en place d'un
serveur openafs sur une Gentoo. Certaines parties de cette documentation sont
extraites de la FAQ AFS et du guide express du débutant d'IBM. On ne va pas
réinventer la roue. :)
AFS qu'est-ce que c'est ?
AFS est un système de fichiers distribué qui permet à des machines (clients et
serveurs) de partager efficacement des ressources d'un système de fichiers
aussi bien sur un réseau local que sur un réseau longue distance (WAN). Les
clients maintiennent un cache des objets les plus utilisés (des fichiers) afin
d'optimiser l'accès à ces ressources.
AFS est basé sur un système de fichiers distribué à l'origine développé au
centre d'information et de technologie de l'université de Carnegie-Mellon
(CMU), il était appelé "Andrew File Sytem". "Andrew" était le nom du projet de
recherche de la CMU qui honorait les fondateurs de cette université. Une fois
que Transarc fut formé et qu'AFS devint un produit, la partie "Andrew" fut
retirée pour indiquer qu'AFS avait quitté le projet de recherche Andrew et
était devenu un produit de qualité. Cependant, un lot de cellules préexistantes
avaient utilisé le nom /afs pour la racine de leur système de fichiers. À cette
époque, modifier cette racine n'était pas facile à faire. Donc, pour préserver
les sites AFS antérieurs, AFS redevint le nom du projet et de la racine du
système de fichiers.
Qu'est-ce qu'une cellule AFS ?
Une cellule AFS est un ensemble de serveurs regroupés administrativement qui
présentent un système de fichiers unique. Habituellement, une cellule AFS est
un ensemble de machines qui utilisent le même nom de domaine (comme par exemple
gentoo.org). Les utilisateurs se connectent sur une station de travail cliente
AFS et demandent des informations et des fichiers à une cellule serveur. Les
utilisateurs ne savent pas sur quel serveur les fichiers auxquels ils accèdent
sont situés. Ils ne remarqueraient rien si les fichiers étaient déplacés sur un
autre serveur car leurs fichiers seraient toujours accessibles. C'est un peu
comme un système NFS gonflé à bloc.
Quels sont les avantages d'AFS ?
Les avantages les plus importants sont les suivants :
- Possibilité de cache sur le client (typiquement de 100M à 1 GB).
- Options de sécurité (basées sur Kerberos 4, acl).
- Simplicité d'adressage (vous avez un seul système de fichier).
-
Extensible (ajoutez des serveurs à votre cellule quand la charge augmente).
- Protocole de communication.
Où trouver plus d'informations ?
Lisez la FAQ.
La page d'accueil de OpenAFS.
AFS fut développé par Transarc qui appartient maintenant à IBM. Vous trouverez
donc quelques informations à propos d'AFS sur la page web
de Transarcs.
Comment résoudre des des problèmes ?
OpenAFS écrit beaucoup d'informations dans son propre journal. Pour qu'il
utilise le journal système, vous devez utiliser l'option -syslog sur
toutes les commandes bos.
2.
Documentation
Télécharger la documentation d'AFS
Vous pouvez télécharger la documentation originale d'IBM. Elle est très bien
écrite et est vraiment nécessaire si vous devez administrer un serveur AFS.
Exemple de code 2.1 : Installer la documentation |
# emerge app-doc/afsdoc
|
3.
Installation de la machine cliente
Préparation
Note :
Toutes les commandes doivent être écrites sur une ligne ! Dans ce
document, elles sont parfois affichées sur plusieurs lignes pour améliorer la
lisibilité.
|
Note :
Malheureusement, le client AFS a besoin d'une partition ext2 pour que son
système de cache fonctionne correctement. Des problèmes de réservation de
fichiers (« lock ») existent dans reiserfs. Vous devez créer une
partition ext2 d'environ 200 Mo (en mettre plus ne serait pas gênant) et
la monter sur : /usr/vice/cache.
|
Vous devez ajuster les deux fichiers CellServDB et ThisCell avant de créer le
client afs (ces fichiers se trouvent dans
/usr/portage/net-fs/openafs/files).
Exemple de code 3.1 : Fichier CellServDB |
>netlabs # nom de la cellule
10.0.0.1 # stockage
|
Exemple de code 3.2 : Fichier ThisCell |
netlabs
|
Attention :
N'utilisez que des espaces dans le fichier CellServDB. Le
programme client échouera probablement si vous utilisez des tabulations.
|
CellServDB spécifie les serveurs dont votre client a besoin pour se connecter à
une cellule spécifique. thisCell est plutôt évident. Normalement, vous utilisez
un nom qui est unique pour votre organisation. Votre nom de domaine (officiel)
constitue un bon choix.
Installer le client
Exemple de code 3.3 : Installer openafs |
# emerge openafs
|
Une fois la compilation réalisée, vous êtes prêt.
Lancer afs au démarrage de la machine
La commande suivante crée les liens nécessaires au lancement de votre client
afs au démarrage de votre machine.
Attention :
Un serveur AFS doit être actif dans votre domaine quand vous lancez le client afs.
Votre système ne démarrera pas avant de recevoir une réponse du serveur afs ou
avant que le délai d'attente n'ait expiré (ce délai est long).
|
Exemple de code 3.4 : Ajouter afs aux scripts de démarrage |
# rc-update add afs default
|
4.
Installation du serveur
Compiler le serveur AFS
La commande suivante installe tous les binaires requis pour configurer votre
serveur AFS et les clients.
Exemple de code 4.1 : Installer openafs |
# emerge openafs
|
Démarrer le serveur AFS
Vous devez avant tout supprimer les fichiers exemples CellServDB et ThisCell.
Exemple de code 4.2 : Supprimer les fichiers d'exemple |
# rm /usr/vice/etc/ThisCell
# rm /usr/vice/etc/CellServDB
|
Ensuite, vous devez lancer la commande bosserver pour initialiser le
serveur Basic OverSeer (BOS) qui va superviser et contrôler les autres serveurs
afs lancés sur le même serveur. On peut voir ça comme l'initialisation du
système. Ajoutez l'option -noauth pour désactiver la vérification
d'autorisation puisque vous n'avez pas encore ajouté l'utilisateur admin.
Attention :
Désactiver la vérification d'autorisation compromet gravement la sécurité de la
cellule. Vous devez terminer toutes les étapes suivantes en une seule phase
ininterrompue et vous ne devez pas laisser la machine sans surveillance tant
que vous n'avez pas relancé le bosserver avec le contrôle d'autorisation
activé, conformément à la documentation d'AFS.
|
Exemple de code 4.3 : Démarrer le BOS |
# /usr/afs/bin/bosserver -noauth &
|
Vérifiez que votre serveur BOS a créé les fichiers
/usr/vice/etc/CellServDB et /usr/vice/etc/ThisCell
Exemple de code 4.4 : Vérifier la présence des fichiers requis |
# ls -al /usr/vice/etc/
-rw-r--r-- 1 root root 41 Jun 4 22:21 CellServDB
-rw-r--r-- 1 root root 7 Jun 4 22:21 ThisCell
|
Définir le nom de la cellule et l'appartenance des processus serveurs
Donnez un nom à votre cellule.
Important :
Certaines restrictions s'appliquent au format du nom. Les deux plus importantes
sont que le nom ne peut pas contenir de lettres majuscules ni plus que 64
caractères. Rappelez-vous que le nom de votre cellule apparaîtra dans
/afs. Vous devriez donc choisir une taille raisonnable.
|
Note :
Dans ce qui suit et dans chaque instruction de ce guide, l'argument <nom de
serveur> représentera le nom complet du domaine de la machine que vous
installez (par exemple afs.gentoo.org ). Par <nom de cellule> nous
entendrons le nom complet de votre cellule (gentoo par exemple).
|
Exécutez la commande bos setcellname pour attribuer le nom de
cellule :
Exemple de code 4.5 : Attribuer le nom de la cellule |
# /usr/afs/bin/bos setcellname <nom de serveur> <nom de cellule> -noauth
|
Démarrer le serveur de base de données
Utilisez maintenant la commande bos create pour créer les entrées des
quatre processus de serveur de bases de données dans le fichier
/usr/afs/local/BosConfig. Les quatre processus tournent uniquement
sur le serveur de base de données.
| kaserver |
Le serveur d'authentification maintient une base de données
d'authentification. Cela peut être remplacé par un démon Kerberos 5.
Si vous voulez essayer, vous êtes libre de mettre à jour cette
documentation. :)
|
| buserver |
Le serveur de sauvegarde contient une base de données de sauvegarde. |
| ptserver |
Le serveur de protection maintient un base de protections. |
| vlserver |
Ce serveur maintient un base de localisation des volumes (VLDB).
Très important :)
|
Exemple de code 4.6 : Créer les processus serveurs |
# /usr/afs/bin/bos create <nom du serveur> kaserver simple
/usr/afs/bin/kaserver -cell <nom de la cellule> -noauth
# /usr/afs/bin/bos create <nom du serveur> buserver simple
/usr/afs/bin/buserver -cell <nom de la cellule> -noauth
# /usr/afs/bin/bos create <nom du serveur> ptserver simple
/usr/afs/bin/ptserver -cell <nom de la cellule> -noauth
# /usr/afs/bin/bos create <nom du serveurr> vlserver simple
/usr/afs/bin/vlserver -cell <nom de la cellule> -noauth
|
Vous pouvez vérifier que vos serveurs fonctionnent avec la commande bos
status :
Exemple de code 4.7 : Vérifier que les processus sont lancés |
# /usr/afs/bin/bos status <nom du serveur> -noauth
Instance kaserver, currently running normally.
Instance buserver, currently running normally.
Instance ptserver, currently running normally.
Instance vlserver, currently running normally.
|
Initialiser la sécurité d'une cellule
Maintenant nous allons initialiser les mécanismes de sécurité de la cellule.
Nous commencerons par créer les deux premières entrées suivantes dans la base
de données d'authentification : le compte de l'administrateur principal, appelé
admin par convention et une entrée pour les processus des serveurs AFS,
nommée afs ; aucun utilisateur ne se connecte avec ce compte, mais le
module Ticket Granting Service (TGS) du serveur d'authentification utilise ce
compte pour chiffrer les billets que le serveur accorde aux clients AFS. Cela
ressemble énormément à Kerberos :)
Entrez dans le mode interactif de kas.
Exemple de code 4.8 : Entrer dans le mode interactif |
# /usr/afs/bin/kas -cell <nom de cellule> -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 $lt;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 $lt;none>
permit password reuse
ka>
|
Exécutez la commande bos adduser pour ajouter l'utilisateur admin
à : /usr/afs/etc/UserList.
Exemple de code 4.9 : Ajouter l'utilisateur admin |
# /usr/afs/bin/bos adduser <nom du serveur> admin -cell <nom de la cellule> -noauth
|
Utilisez la commande bos addkey pour définir la clef de chiffrement du
serveur AFS dans /usr/afs/etc/KeyFile.
Note :
Si on vous demande une clef d'entrée, donnez le mot de passe que vous avez
utilisé lors de la création de l'entrée avec kas.
|
Exemple de code 4.10 : Définir la clef de cryptage |
# /usr/afs/bin/bos addkey <nom du serveur> -kvno 0 -cell <nom de la cellule> -noauth
input key:
Retype input key:
|
Lancez la commande pts createuser pour créer une entrée pour
l'utilisateur admin dans la base de données de protection.
Note :
Par défaut, le serveur de protection assigne un UID (identificateur
d'utilisateur) afs de 1 pour l'utilisateur admin parce que c'est le
premier utilisateur créé. Si le fichier des mots de passe de la machine locale
(/etc/passwd ou équivalent) a déjà une entrée pour admin avec un UID
différent, indiquez-le avec l'option -id pour créer des UID appropriés.
|
Exemple de code 4.11 : Définir l'utilisateur admin |
# /usr/afs/bin/pts createuser -name admin -cell <nom de la cellule> [-id <AFS UID>] -noauth
|
Utilisez la commande pts adduser pour faire de l'utilisateur
admin un membre du groupe system:administrators, et la commande pts
membership pour vérifier que la nouvelle adhésion a bien été prise en
compte.
Exemple de code 4.12 : Placer admin dans le groupe ad hoc |
# /usr/afs/bin/pts adduser admin system:administrators -cell <nom de cellule> -noauth
# /usr/afs/bin/pts membership admin -cell <nom de cellule> -noauth
Groups admin (id: 1) is a member of:
system:administrators
|
Redémarrez tous les processus des serveurs AFS.
Exemple de code 4.13 : Redémarrer les processus AFS |
# /usr/afs/bin/bos restart <nom de serveur> -all -cell <nom de cellule> -noauth
|
Démarrer le serveur de fichiers, de volumes et Salvager.
Démarrez le processus fs qui consiste en un serveur de fichiers, de
volumes et salvager (les processus : filserver, volserver et salvager).
Exemple de code 4.14 : Démarrer les processus |
# /usr/afs/bin/bos create <nom de serveur> fs fs /usr/afs/bin/fileserver
/usr/afs/bin/volserver
/usr/afs/bin/salvager
-cell <nom de cellule> -noauth
|
Vérifiez que tous les processus sont en cours d'exécution.
Exemple de code 4.15 : Vérifier que les processus tournent |
# /usr/afs/bin/bos status <nom de serveur> -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/afs/bin/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/afs/bin/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/afs/bin/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/afs/bin/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/afs/bin/fileserver'
Command 2 is '/usr/afs/bin/volserver'
Command 3 is '/usr/afs/bin/salvager'
|
Votre prochaine étape diffère selon que vous avez déjà activé ou non des
machines faisant office de serveur de fichiers AFS dans la cellule.
Si vous créez le premier serveur de fichier AFS de la cellule, créez le premier
volume AFS root.afs.
Note :
Pour le nom de la partition, utilisez le nom de la partition du premier serveur
de fichiers AFS. Par convention ces partitions sont nommées
/vicepx, où x est une lettre de l'alphabet.
|
Exemple de code 4.16 : Créer la partition initiale |
# /usr/afs/bin/vos create <nom de serveur> <nom de partition> root.afs
-cell <nom de cellule> -noauth
|
Si des serveurs de fichiers et de volumes AFS existent déjà dans la cellule,
utilisez les commandes vos sncvldb et vos syncserv pour
synchroniser la VLDB (Volume Location Database) avec l'état réel des volumes
sur la machine locale. Cela copiera toutes les données nécessaires sur votre
nouveau serveur.
Si cette commande échoue avec le message « partition /vicepa does not
exist on the server », veuillez vérifier que la partition est montée avant
de lancer le serveur OpenAFS, ou montez la partition et relancez le serveur
avec la commande /usr/afs/bin/bos restart <server name> -all -cell
<cell name> -noauth.
Exemple de code 4.17 : Ajouter votre serveur dans une cellule |
# /usr/afs/bin/vos syncvldb <nom de serveur> -cell <nom de cellule> -verbose -noauth
# /usr/afs/bin/vos syncserv <nom de serveur> -cell <nom de cellule> -verbose -noauth
|
Démarrer la partie serveur du serveur de mises à jour
Exemple de code 4.18 : Lancer le serveur de mises à jour |
# /usr/afs/bin/bos create <nom de serveur>
upserver simple "/usr/afs/bin/upserver
-crypt /usr/afs/etc -clear /usr/afs/bin"
-cell <nom de cellule> -noauth
|
Configurer le niveau supérieur du système de fichiers AFS
Pour commencer, vous devez définir quelques acl (liste de contrôle d'accès)
pour que chaque utilisateur puisse utiliser /afs.
Exemple de code 4.19 : Définir les acl |
# /usr/afs/bin/fs setacl /afs system:anyuser rl
|
Ensuite, vous devez créer le volume root, le monter en mode lecture seulement
sur /afs/<nom de cellule> et en mode lecture/écriture sur
/afs/.<nom de cellule>
Exemple de code 4.20 : Créer et monter le volume root |
# /usr/afs/bin/vos create <nom de serveur><nom de partition> root.cell
# /usr/afs/bin/fs mkmount /afs/<nom de cellule> root.cell
# /usr/afs/bin/fs setacl /afs/<nom de cellule> system:anyuser rl
# /usr/afs/bin/fs mkmount /afs/.<nom de cellule> root.cell -rw
|
Vous avez enfin terminé ! Vous devriez avoir un système de fichiers AFS
qui fonctionne sur votre réseau. Servez-vous une bonne tasse de café et
imprimez la documentation AFS !
Note :
Il est très important pour que le serveur AFS fonctionne correctement que
toutes les horloges système soient synchronisées. La meilleure solution est
d'installer un serveur ntp sur une des machines (par exemple le serveur AFS) et
de synchroniser toutes les horloges des clients avec un client ntp. Cela peut
aussi être fait par le client AFS.
|
5.
Les bases de l'administration
Mise en garde
OpenAFS est une technologie aux nombreuses facettes. Veuillez lire la
documentation AFS si vous avez besoin de plus d'information. Nous n'aborderons
que quelques tâches administratives dans ce chapitre.
Configurer PAM pour qu'il obtienne un billet (« token ») AFS
lors de l'ouverture de session
Pour utiliser AFS, vous devez vous authentifier auprès du serveur KA (si vous
utilisez une implémentation de AFS Kerberos 4) ou auprès du KDC Kerberos 5 (si
vous utilisez MIT, Heimdal ou ShiShi Kerberos 5). Toutefois, vous avez
également besoin d'un compte utilisateur pour ouvrir une session sur une
machine. Ce compte peut être de type local (/etc/passwd), NIS ou LDAP
(OpenLDAP), ou provenir d'une base de données Hesiod. PAM permet à Gentoo de
lier l'authentification à AFS et d'ouvrir une session avec le compte
utilisateur.
Vous devrez mettre à jour le fichier /etc/pam.d/system-auth qui
est utilisé par les autres configurations. « use_first_pass » indique
que la première vérification se fera avec le compte utilisateur et
« ignore_root » empêche la vérification pour le super-utilisateur
local afin que la connexion soit toujours possible si AFS ou le réseau devait
flancher.
Exemple de code 5.1 : /etc/pam.d/system-auth |
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /usr/afsws/lib/pam_afs.so.1 use_first_pass ignore_root
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
|
Pour permettre à sudo de conserver le billet du véritable utilisateur et pour
éviter que les utilisateurs locaux n'obtiennent l'accès à AFS, modifiez
/etc/pam.d/su comme suit :
Exemple de code 5.2 : /etc/pam.d/su |
auth sufficient /usr/afsws/lib/pam_afs.so.1 ignore_uid 100
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so use_uid
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_xauth.so
session optional /usr/afsws/lib/pam_afs.so.1 no_unlog
|
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|