Mettre en place le « Network Information System »

Introduction et présentation

Objectifs : LE NIS (Network Information System) est un service de diffusion de l'information dans un réseau de machines. Cette information regroupe le contenu des tables présentes sur le serveur NIS (/etc/passwd, /etc/shadow, /etc/group, /etc/hosts, /etc/services, ...).

Le serveur NIS

  1. Donnez un nom à votre machine (commande hostnamectl set-hostname nom-choisi), vérifiez ce nom (hostnamectl status) et prévoyez une entrée avec l'adresse IP publique dans le fichier /etc/hosts.
    ## A faire si ce n'est pas déjà le cas
    hostnamectl set-hostname srv.idl.fr                     # Fixer le nom
    hostnamectl status                                      # Vérifier
    echo "10.0.2.15  srv  srv.idl.fr" >> /etc/hosts         # Nom <--> IP
    ping srv.idl.fr
    
  2. Vérifiez la présence du portmapper :
    dnf -y install rpcbind
    systemctl restart rpcbind
    systemctl enable  rpcbind
    rpcinfo -p localhost
    
  3. Vérifiez la présence des packages serveur :
    dnf -y install ypserv yp-tools
    
  4. Choisissez un domaine NIS (une chaîne de caractères pour faire le lien entre clients NIS et serveur NIS).
    ypdomainname idl.domaine.fr
    
  5. Pour que le choix du domaine NIS soit automatiquement fait au démarrage de la machine, ajoutez une ligne au fichier /etc/sysconfig/network :
    echo NISDOMAIN=idl.domaine.fr >> /etc/sysconfig/network
    
  6. Lancez un serveur pour ce domaine et vérifiez la présence du service RPC ypserv avec la commande rpcinfo.
    systemctl enable --now rpcbind ypserv ypxfrd yppasswdd nis-domainname
    rpcinfo -p localhost
    
  7. Initalisez la base de données du NIS à partir des fichiers locaux (l'option -m indique que vous êtes sur un serveur maître). Vous pouvez constater le résultat dans le répertoire /var/yp/idl.domaine.fr.
    /usr/lib64/yp/ypinit -m
    
  8. Si vous créez un utilisateur sur le serveur, il est nécessaire de mettre à jour la base NIS :
    # creation
    useradd nisuser
    id nisuser 
    # donner un mot de passe
    passwd nisuser
    # mise à jour du NIS
    make -C /var/yp/
    

Un client NIS

  1. Nous allons configurer notre client C1.
  2. Vérifiez que l'utilisateur nisuser créé sur le serveur n'existe pas sur le client :
    id nisuser             # doit donner une erreur
    
  3. Vérifiez la présence des packages client :
    dnf -y install ypbind rpcbind oddjob-mkhomedir
    
  4. Choisissez le domaine NIS auquel votre client NIS doit se connecter.
    ypdomainname idl.domaine.fr
    
  5. Pour que le choix du domaine NIS soit automatiquement fait au démarrage de la machine, ajoutez une ligne au fichier /etc/sysconfig/network :
    echo NISDOMAIN=idl.domaine.fr >> /etc/sysconfig/network
    
  6. Donnez (dans le fichier de configuration du client NIS /etc/yp.conf) le nom (ou l'adresse) du serveur NIS. Provitez-en pour lire ce fichier de configuration.
    echo domain idl.domaine.fr server 10.0.2.15 >> /etc/yp.conf
    
  7. Vérifiez que le serveur RPC est lancé (rpcbind) :
    systemctl status rpcbind
    rpcinfo -p localhost
    
  8. Sélectionnez le profil client (nis) pour l'authentification du client. Cette opération va notamment modifier le fichier /etc/nsswitch.conf pour utiliser le service NIS lors de la résolution des noms.
    authselect select nis --force
    
  9. Lancez le démon client NIS (ypbind) et vérifiez sa présence :
    systemctl --now enable  ypbind
    rpcinfo -p localhost
    
  10. Demandez au client NIS (ypbind) de vous donner la liste des utilisateurs définis sur le serveur NIS :
    ypcat passwd       # la liste des utilisateurs exportée
    ypwhich            # pour connaître le serveur NIS
    
  11. Vérifiez que l'utilisateur nisuser est maintenant connu du client :
    id nisuser               # cela doit marcher
    ssh nisuser@localhost    # cela doit marcher aussi
    
  12. Lisez le manuel des commandes ypcat, ypmatch et ypwhich.

Aller plus loin

  1. Vérifiez qu'un utilisateur peut changer son mot de passe à partir de C1 (commande yppasswd).
  2. En modifiant la configuration du serveur NIS (fichier /etc/ypserv.conf), faites en sorte que la C1 ne puisse plus avoir accès à la table hosts (à titre d'exemple bien sur).
  3. Limitez l'accès au serveur NIS aux deux seules machines VM et C1 (fichier /var/yp/securenets).
  4. Cherchez dans le makefile (fichier /var/yp/Makefile) l'entrée all. Vous voyez que certaines tables ne sont pas publiées par défaut. Ajoutez une nouvelle table (par exemple ethers).
  5. Sur un autre client, vous pouvez raccourcir les étapes de configuration en utilisant :
    authconfig --enablenis --nisdomain=idl.domaine.fr \
      --nisserver=10.0.2.15 --updateall
    
  6. En utilisant cette documentation, modifez le fichier config.ks afin de créer directement des clients NIS (en utilisant les paramètres ci-dessus).

Nous allons maintenant faire travailler ensemble NFS et le NIS :

  1. Exporter les fichiers des utilisateurs (/home de la VM) de manière à ce qu'un utilisateur (défini sur la VM) puisse se connecter et travailler avec ses fichiers sur la C1.