Gentoo Logo

Le guide d'openafs pour Gentoo Linux

Table des matières :

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

# On considère ici que les utilisateurs dont l'uid est > 100 appartiennent
# à AFS. Les utilisateurs dont l'uid est <= 100 sont ignorés par pam_afs.
auth       sufficient   /usr/afsws/lib/pam_afs.so.1 ignore_uid 100

auth       sufficient   /lib/security/pam_rootok.so

# Si vous souhaitez restreindre encore davantage l'utilisation de su,
# créez un fichier /etc/security/suauth.allow qui ne peut être modifié que
# par root, puis ajoutez à ce fichier les utilisateurs qui ont la
# permission d'utiliser su (un utilisateur par ligne).
#auth       required     /lib/security/pam_listfile.so item=ruser \
#       sense=allow onerr=fail file=/etc/security/suauth.allow

# Décommentez ce qui suit pour permettre aux membres du groupe wheel
# d'utiliser su sans avoir à entrer un mot de passe.
#auth       sufficient   /lib/security/pam_wheel.so use_uid trust

# Alternativement, vous pouvez implémenter une liste d'utilisateurs qui
# n'ont pas besoin de d'entrer un mot de passe.
#auth       sufficient   /lib/security/pam_listfile.so item=ruser \
#       sense=allow onerr=fail file=/etc/security/suauth.nopass

# Décommentez ce qui suit pour permettre à tous les utilisateurs (même
# ceux qui ne font pas partie du groupe wheel) d'utiliser su.
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

# Voici comment éviter la perte du billet du véritable utilisateur.
session    optional     /usr/afsws/lib/pam_afs.so.1 no_unlog


Imprimer

Dernière mise à jour le 18 juillet 2005

Une version originale plus récente datée du 13 décembre 2011 existe.

Résumé : Ce guide vous montre comment installer un serveur et un client OpenAFS sur Gentoo Linux.

Holger Brueckner
Auteur

Benny Chuang
Auteur

Tiemo Kieft
Auteur

Steven McCoy
Correcteur

Gérald Fenoy
Traducteur

Donate to support our development efforts.

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