Partage de fichier avec NFSv4 - Coté serveur

L’objectif de ce TP est de configurer la machine virtuelle filer comme un serveur de fichier NFSv4. Nous allons faire en sorte que sa partition /home soit exportée en NFS avec authentification Kerberos.

Si ce n’est pas déjà fait, démarrer la machine virtuelle

$ vagrant up filer

Toutes les manipulations de cette page s’effectuent sur la machine filer, en tant qu’utilisateur root.

Identification des utilisateurs

Avant toute chose, le serveur de fichier doit être capable de connaître les utilisateurs du système d’information. Nous devons installer et configurer le module NSS LDAP.

  1. Installer le paquet libnss-ldapd

  2. Configurer le daemons nslcd dans /etc/nslcd.conf

  3. Rédémarrer le service nslcd

    root@filer$ service nslcd restart
    
  4. Configurer la bibliothèque NSS de façon à ce qu’elle aille chercher les informations dans l’annuaire LDAP (fichier /etc/nsswitch.conf)

    passwd:         files ldap
    group:          files ldap
    shadow:         files ldap
    
  5. Eventuellement, purger le cache du daemon nscd au moment de le redémarrer

    root@filer$ service nscd stop
    root@filer$ rm /var/cache/nscd/{group,passwd}
    root@filer$ service nscd start
    
  6. Dans /etc/ldap/ldap.conf, ajouter éventuellement le chemin vers le certificat racine de l’autorité de certification ayant produit celui de votre annuaire (directive TLS_CACERT). Ou demander de ne pas vérifier le certificat à chaque connexion LDAP (directive TLS_REQCERT never).

  7. Vérifier que les utilisateurs listés dans l’annuaire sont bien visibles avec la commande ci-dessous.

    root@filer$ getent passwd
    

Royaume Kerberos

Afin que les utilisateurs puissent accéder au montage de leur répertoire d’accueil, le serveur de fichier doit faire partie intégrante du royaume Kerberos.

  1. Installer les paquets krb5-user et krb5-config

  2. Définir le royaume Kerberos à l’aide du fichier /etc/krb5.conf.

    Voir le fichier /etc/krb5.conf

  3. Vérifier qu’il est possible d’obtenir un ticket pour un utilisateur (kinit). Au besoin consulter les fichiers journaux sur le KDC (/var/log/krb5kdc.log)

  4. Avec l’outil kadmin, créer deux principals :
    • host/filer.vbox.tp@VBOX.TP -> pour identifer la machine
    • nfs/filer.vbox.tp@VBOX.TP -> pour identifier le service NFS

    Ces deux principals seront utilisés par le système; un secret aléatoire leur est donc attribué (option -randkey).

    root@filer$ kadmin  -p jack/admin@VBOX.TP
    Authenticating as principal jack/admin@VBOX.TP with password.
    Password for jack/admin@VBOX.TP: 
    kadmin: addprinc -randkey host/filer.vbox.tp@VBOX.TP
    kadmin: addprinc -randkey nfs/filer.vbox.tp@VBOX.TP
    
  5. Afin que les daemon du système puissent demander des tickets, il est néecessaire d’exporter les secrets dans un fichier keytab. Continuer dans kdamin pour créer le fichier /etc/krb5.keytab

    kadmin: ktadd -k /etc/krb5.keytab host/filer.vbox.tp@VBOX.TP
    kadmin: ktadd -k /etc/krb5.keytab nfs/filer.vbox.tp@VBOX.TP
    kadmin: quit
    
  6. Vérifier que le fichier /etc/krb5.keytab est bien présent et qu’il possède bien les bonnes permissions

    root@filer$ ls -l /etc/krb5.keytab 
    -rw------- 1 root root 550 Sep 14 21:50 /etc/krb5.keytab
    
  7. Au besoin, vérifier le contenu du fichier keytab (deux secrets chiffrés avec quatre algorithmes différents)

    root@filer$ klist -k /etc/krb5.keytab -e 
    

Partage de fichiers NFS

  1. Installer le paquet nfs-kernel-server

  2. Dans le fichier /etc/default/nfs-common, positionner comme indiqué ci-dessous les deux variables de façon à démarrer uniquement le daemon idmapd. Le daemon gssd n’est utile que pour effectuer des montages (coté client).

    NEED_IDMAPD=yes
    NEED_GSSD=no
    
  3. Dans le fichier /etc/default/nfs-kernel-server, demander le lancement du daemon svcgssd en positionnant la variable ci-dessous

    NEED_SVCGSSD=yes
    
  4. Le serveur NFSv4 a besoin d’un dossier racine sous lequel sont placés les répertoires partagés. C’est pourquoi, nous allons partager /srv/home au lieu de /home.

    root@filer$ mkdir /srv/home
    
  5. Configurer le daemon idmapd dans le fichier /etc/idmapd.conf.
    • Domain = filer.vbox.tp définit un espace de nommage pour la correpondance nom d’utilisateur vers numéro d’utilisateur (UID), et nom de groupe vers numéro de groupe (GID). La valeur de Domain doit être la même coté serveur et coté client.
    • Local-Realms = VBOX.TP définit le domaine Kerberos local
    • Nobody-User = nobody définit le nom de d’utilisateur à retourner lorsque la translation ne donne rien
    • Nobody-Group = nogroup définit le nom de groupe à retourner lorsque la translation ne donne rien

    Voir le fichier /etc/idmapd.conf

  6. Dans le fichier /etc/exports définir le dossier à partager. Ici nous partageons le dossier /srv/home, mais le /srv sera masqué aux clients. C’est à dire qu’ils devront utiliser filer:/home comme adresse source.

    # /etc/exports: the access control list for filesystems which may be exported
    #               to NFS clients.  See exports(5).
    
    
    /srv            172.16.20.0/24(sec=krb5i,rw,sync,fsid=0,crossmnt,no_subtree_check)
    /srv/home       172.16.20.0/24(sec=krb5i,rw,sync,no_subtree_check)
    
  7. Stopper puis relancer les services NFS

    root@filer$ service nfs-kernel-server stop
    root@filer$ service nfs-common stop
    root@filer$ service nfs-common start
    root@filer$ service nfs-kernel-server start
    
  8. A l’aide du script proposé en bas de la page de présentation des membres de l’annuaire, créez les différents répertoires utilisateurs dans /srv/home.