Installer un domaine NIS |
||
|
En plus du serveur NIS vous pouvez disposer d'un serveur de secours, en cas de défaillance du premier, les clients iront consulter les maps sur le serveur de secours, appelé serveur slave, donc en cas de modification d'une map du serveur principal, si vous disposez d'un serveur slave vous devez immédiatement répercuter la modification des maps sur le serveur slave. Je n'ai personnellement pas testé cette fonctionnalité de serveur slave mais j'en parlerai quand même dans cette page, je ne garantis pas par contre que ça fonctionnera du premier coup.
Avant de commencer vous devez choisir un nom pour votre domaine NIS, on prendra pour l'exemple alphaville, vous pouvez évidemment n'importe quoi, vous êtes simplement limité par votre imagination. On suppose aussi que votre réseau utilise les adresses IP 192.168.13.X et votre serveur NIS a l'adresse 192.168.13.1 et a por nom obelix.
Le but de la manoeuvre est le suivant, qu'un utilisateur du réseau
quelque soit le poste utilisé puisse retrouver automatiquement sa
homedirectory et que la modification de son mot de passe sur n'importe
quel poste entraîne la modif sur l'ensemble des postes.
Deux cas de figures possibles seront abordés:
cas 1: répertoire /home exporté
Tous les homes directory se trouvent sous /home sur le serveur,
tous les utilisateurs du réseau y ont été déclarés.
Sur les postes clients vous n'avez déclaré aucun utilisateur
à part les utilisateurs système (dont root) qu'on trouve
par défaut, en tout état de cause, vous devez avoir /home
vide,
de même que /home ne doit pas être le point de montage
d'une quelconque partition. Par NFS ou automontage, le répertoire
/home
du serveur sera monté sur chacun des clients et donc l'utilisateur
retrouvera sa home directory quelque soit le poste qu'il utilisera.
cas 2: répertoire /export/home exporté
Vous ne pouvez pas vider /home sur les postes clients pour diverses
raisons. Dans ce cas, sur le serveur créer l'homedirectory de chaque
utilisateur sous /home, puis on va faire un lien symbolique
de /home vers /export/home et dans le fichier /etc/passwd
au
niveau des homedirectory on remplacera /home par /export/home.
Sur les clients on montera /home du serveur sous un répertoire
/export,
chaque utiliseur retrouvera donc sa home directory sous /export/home,
tout en ne touchant pas au répertoire /home des postes clients.
Lancement automatique
A défaut voici les manips à faire pour réaliser
un démarrage automatique sous une arborescence de type RH.
Sous /etc/rc.d/init.d placer le fichier ypserv
et le fichier yppasswdd. Ensuite en tant
que root créez les liens suivants:
ln -s /etc/rc.d/init.d/ypserv /etc/rc.d/rc0.d/K84ypserv
ln -s /etc/rc.d/init.d/ypserv /etc/rc.d/rc1.d/K84ypserv
ln -s /etc/rc.d/init.d/ypserv /etc/rc.d/rc2.d/K84ypserv
ln -s /etc/rc.d/init.d/ypserv /etc/rc.d/rc3.d/S16ypserv
ln -s /etc/rc.d/init.d/ypserv /etc/rc.d/rc4.d/S16ypserv
ln -s /etc/rc.d/init.d/ypserv /etc/rc.d/rc5.d/S16ypserv
ln -s /etc/rc.d/init.d/ypserv /etc/rc.d/rc6.d/K84ypserv
et
ln -s /etc/rc.d/init.d/yppasswdd /etc/rc.d/rc0.d/K34yppasswdd
ln -s /etc/rc.d/init.d/yppasswdd /etc/rc.d/rc1.d/K34yppasswdd
ln -s /etc/rc.d/init.d/yppasswdd /etc/rc.d/rc2.d/K34yppasswdd
ln -s /etc/rc.d/init.d/yppasswdd /etc/rc.d/rc3.d/S92yppasswdd
ln -s /etc/rc.d/init.d/yppasswdd /etc/rc.d/rc4.d/S92yppasswdd
ln -s /etc/rc.d/init.d/yppasswdd /etc/rc.d/rc5.d/S92yppasswdd
ln -s /etc/rc.d/init.d/yppasswdd /etc/rc.d/rc6.d/K34yppasswdd
Configuration
A présent éditer le fichier /etc/sysconfig/network
et
rajouter:
NISDOMAIN=alphaville
Maintenant on va dans /var/yp et on édite le fichier Makefile qui s'y trouve, voici les modifications que j'ai apporté au Makefile d'origine et les lignes que je juge importantes :
# If we have only one server, we don't have to push the maps to the
# slave servers (NOPUSH=true). If you have slave servers, change
this
# to "NOPUSH=false" and put all hostnames of your slave servers
in the file
# /var/yp/ypservers.
# si vous avez pas de serveur slave mettre true, sinon mettre false
NOPUSH=true
(...)
# Should we merge the passwd file with the shadow file ?
# MERGE_PASSWD=true|false
# Si vous utilisez les shadow password mettre true
MERGE_PASSWD=false
# Should we merge the group file with the gshadow file ?
# MERGE_GROUP=true|false
# si vous utilisez les shadow password mettre true
MERGE_GROUP=false
# If you don't want some of these maps built, feel free to comment
# them out from this list.
# la ligne la plus important c'est la liste des maps susceptibles
d'être gérées
# pour ma part je me suis limité à /etc/passwd /etc/group
et /etc/hosts
#all: passwd group hosts rpc services netid protocols netgrp
mail \
#shadow publickey # networks ethers bootparams
amd.home \
# auto.master auto.home passwd.adjunct
all: passwd hosts group
Maintenant on va pouvoir construire les maps proprement dites, en fait il va partir des fichiers ascii (/etc/passwd, /etc/group, et /etc/hosts) et générer des fichiers binaires (maps). Pour cela vous devez rebooter votre machine pour que le nom de domaine NIS soit pris en compte ou alors tout simplement taper en tant que root:
domainname alphaville
A présent sous /var/yp tapez:
make
Un répertoire alphaville va se créer sous /var/yp avec les maps à l'intérieur:
group.bygid.db
group.byname.db
hosts.byaddr.db
hosts.byname.db
passwd.byname.db
passwd.byuid.db
passwd.db
A présent on va éditer le fichier /etc/ypserv.conf qui est le fichier de config du serveur nis (ypserv): voici son contenu:
#
# ypserv.conf In this file you can set certain options
for the NIS server,
#
and you can deny or restrict access to certain maps based
#
on the originating host.
#
#
See ypserv.conf(5) for a description of the syntax.
# Some options for ypserv. This things are all not needed, if
# you have a Linux net.
dns: no
# The following, when uncommented, will give you shadow like
passwords.
# Note that it will not work if you have slave NIS servers in your
# network that do not run the same server as you.
# ici on doit mettre le type d'adresse utilisé par
le réseau
# Host
: Map
: Security : Passwd_mangle
#
192.168.13.
: passwd.byname : port
: yes
192.168.13.
: passwd.byuid : port
: yes
# Not everybody should see the shadow passwords, not secure, since
# under MSDOG everbody is root and can access ports < 1024 !!!
# J'utilise pas les shadows password donc j'ai pas fait attention
à ça
# éventuellement mettre les adresses qui vont bien comme
ci-dessus
*
: shadow.byname
: port : yes
*
: passwd.adjunct.byname : port : yes
# If you comment out the next rule, ypserv and rpc.ypxfrd will
# look for YP_SECURE and YP_AUTHDES in the maps. This will make
# the security check a little bit slower, but you only have to
# change the keys on the master server, not the configuration files
# on each NIS server.
# If you have maps with YP_SECURE or YP_AUTHDES, you should create
# a rule for them above, that's much faster.
# là j'ai pas tout compris alors j'ai laissé la ligne
par défaut :-)
*
: *
: none
En cas de serveurs slaves
Attention c'est une fonctionnalité que je n'ai pas testé,
je vous livre ça avec des pincettes.
Vous devez mettre dans /var/yp/Makefile:
NOPUSH=false
Puis créer un fichier /var/yp/ypservers contenant la liste des noms des serveurs slaves. Dans la doc aussi, il est marqué qu'on doit lancé rcp.ypxfrd sur le serveur NIS primaire, pour cela rajoutez à /etc/inetd.conf les lignes suivantes:
fypxfrd/1 dgram rpc/udp wait root /usr/sbin/rpc.ypxfrd
rpc.ypxfrd
fypxfrd/1 stream rpc/tcp nowait root /usr/sbin/rpc.ypxfrd rpc.ypxfrd
Vous devez rebooter la machine pour que ça soit pris en compte
Exporter les home directories
Qu'on veuille utiliser NFS ou l'automontage, qu'on soit dans le cas
1 ou 2 énoncé plus haut dans le chapitre de présentation,
la manip est la même, on doit exporter le répertoire /home,
pour cela on rajoutera la ligne suivante au fichier /etc/exports:
/home
Eventuellement si vous voulez limiter l'accès aux machines toto, titi, tata en lecture/écriture sur le répertoire en question:
/home titi(rw) tata(rw) toto(rw)
Pour que le fichier soit pris en compte, n'oubliez pas de taper:
exportfs -a
Maintenant si vous êtes dans le cas 1, c 'est terminé (ou presque), dans le cas 2, vous devez faire en plus, un lien de /home vers /export
mkdir /export
ln -s /home /export
Et modifiez /etc/passwd pour remplacer /home par /export/home comme la ligne donnée en exemple:
veronique:3GGWf/uWiPoWM:4002:4000::/export/home/veronique:/bin/bash
Maintenant vous devez rebatir la map passwd, puisque vous venez de modifier /etc/passwd, sous /var/yp, tapez:
make
Lancement du serveur NIS
Pour lancer le serveur NIS, il suffit soit de rebooter soit simplement
de taper:
/etc/rc.d/init.d/ypserv start
Lancement automatique
Pour que ypbind soit lancé automatiquement vous devez
avoir un fichier ypbind sous /etc/rc.d/init.d
et
créer les liens suivants s'il n'existe pas:
ln -s /etc/rc.d/init.d/ypbind /etc/rc.d/rc0.d/K84ypbind
ln -s /etc/rc.d/init.d/ypbind /etc/rc.d/rc1.d/K84ypbind
ln -s /etc/rc.d/init.d/ypbind /etc/rc.d/rc2.d/K84ypbind
ln -s /etc/rc.d/init.d/ypbind /etc/rc.d/rc3.d/S16ypbind
ln -s /etc/rc.d/init.d/ypbind /etc/rc.d/rc4.d/S16ypbind
ln -s /etc/rc.d/init.d/ypbind /etc/rc.d/rc5.d/S16ypbind
ln -s /etc/rc.d/init.d/ypbind /etc/rc.d/rc6.d/K84ypbind
Configuration NIS
Editez le fichier /etc/sysconfig/network et rajoutez:
NISDOMAIN=alphaville
Ensuite éditez le fichier /etc/yp.conf et rajouter
domain alphaville server 192.168.13.1
ypserver obelix
En fait au lieu de l'adresse IP on devrait mettre juste le nom du serveur, mais j'ai eu quelques problèmes que je n'ai pas rencontré en mettant l'adresse IP. Eventuellement vous pouvez rajouter les serveurs slaves en rajoutant à la suite:
ypserver nom-du-serveur-slave
Maintenant vous devez modifier votre fichier /etc/nsswitch.conf pour les lignes hosts, group et passwd (uniqument les maps exportés) pour prendre en compte d'abord les fichiers /etc/hosts, /etc/group et /etc/passwd locaux puis ceux du serveur NIS, on aura donc pour les lignes en question:
passwd: files nis
group: files nis
hosts: files nis dns
Lancement du client NIS
Vous pouvez soit rebooter votre machine, soit tapez les commandes suivantes:
domainname alphaville
/etc/rc.d/init.d/ypbind start
Test de fonctionnement
Pour voir si tout marche, il suffit de taper sur le client:
ypwhich
Vous devriez voir en réponse:
obelix
C'est à dire le nom de votre serveur NIS.
Configuration du client si vous utilisez NFS
Cas 1
Rajoutez dans /etc/fstab
tavel:/home /home nfs defaults 0 0
Cas 2
Vous devez créer un répertoire /export/home
mkdir /export
mkdir /export/home
Puis rajoutez dans /etc/fstab la ligne suivante:
tavel:/home /export/home nfs defaults 0 0
Dans les deux cas, tapez:
mount -a
Pour que le répertoire soit effectivement monté.
Configuration du client si vous utilisez l'automontage
Cas 1
Rajoutez à votre fichier /etc/auto.master la ligne suivante:
/ /etc/auto.home --timeout 60
Cas 2
Créer un répertoire /export :
mkdir /export
Rajoutez au fichier /etc/auto.master la ligne suivante:
/export /etc/auto.home --timeout 60
Dans les deux cas le fichier /etc/auto.home contiendra:
home -fstype=nfs obelix:/home
Pour relancer l'automontage et prendre en compte les nouvelles modifications, il suffit de taper:
/etc/rc.d/init.d/autofs stop
/etc/rc.d/init.d/autofs start
Modifier /etc/passwd
En toute rigueur au fichier /etc/passwd du client vous devez rajouter
la ligne suivante tout à la fin:
+::::::
Mais ce n'est pas absolument nécessaire, ça marchera très bien sans. Mais on peut aller plus loin, les ":" correspondent en fait aux champs de /etc/passwd, qui je le rappelle sont:
login:passord:uid:gid:commentaire:homedirectory:shell
Si vous voulez que l'utilisateur toto déclaré sur le serveur maitre utilise un shell /bin/ksh, vous rajouterez donc:
+toto::::::/bin/ksh
Si vous voulez que celui ci ait comme homedirectory /tmp
+toto:::::/tmp:
Enfin si vous voulez limiter le nombre de comptes accessibles par nis (utilisateur toto, titi, tata), il suffira de rajouter:
+toto:::::::
+titi:::::::
+tata::::::
ypcat passwd
Vous verrez donc tous les comptes accessibles sur le réseau.
Changer son mot de passe
Si vous voulez modifiez votre mot de passe, vous ne devez plus taper
tout simplement passwd mais yppasswd pour que ça soit
pris en compte dans la map passwd présente sur le serveur
NIS.
Pour que ce soit transparent pour l'utilisateur vous pouvez très
bien renommer passwd sur vos postes clients.
mv /usr/bin/passwd /usr/bin/passwd.sansnis
Puis faire un lien de passwd vers yppasswd
ln -s /usr/bin/yppasswd /usr/bin/passwd
ATTENTION: il se peut qu'il y ait un léger temps de latence entre le temps où vous avez tapé votre mot de passe et le temps où le serveur NIS va reconstruire ses maps, donc ne vous étonnez pas si après modif du mot de passe, vous essayer de vous loguer et que vous vous faîtes jeter, il suffit d'attendre un peu ou de se loguer encore avec l'ancien mot de passe.
En cas de modif d'une map
Si sur le serveur NIS vous avez à changer une map (pour rajouter
un poste dans /etc/hosts par exemple), il suffit d'aller dans /var/yp
et
de taper make, normalement les maps des serveurs slaves devraient
être mises à jour automatiquement.
Sous l'unix d'HP, HP-UX, on trouve la commande ypmake qui réalise
les fonctions suivantes :
cd /var/yp
make
Sous linux rien ne vous empêche de créer le script ypmake sous /usr/sbin contenant
#!/bin/bash
cd /var/yp
make
Avec les droits 744
chmod 744 /usr/sbin/ypmake
/usr/lib/yp/ypinit -s obelix