Dernière modification 14 juillet 2009
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 choisir le nom de domaine qui vous plait, 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 pour 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.
Configuration sous Mandriva
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
# We do not put password entries with lower UIDs (the root and
system
# entries) in the NIS password database, for security. MINUID is the
# lowest uid that will be included in the password maps.
# MINGID is the lowest gid that will be included in the group maps.
# dans la table NIS des password il n'y aura pas les comptes dont
l'UID est inférieur
# à 500, cela correspond aux utilisateurs systèmes
# idem pour les groupes
# vos utilisateurs et vos groupes doivent donc avoir un
numéro d'identification supérieur à 500
MINUID=500
MINGID=500
(...)
# Should we merge the passwd file with the shadow file ?
# MERGE_PASSWD=true|false
# Si vous utilisez les shadow password et que souhaitez fusionner
# les fichiers passwd et shadow mettre true
MERGE_PASSWD=false
# Should we merge the group file with the gshadow file ?
# MERGE_GROUP=true|false
# si vous n'utilisez pas de shadow password pour les groupes laissez
à false
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 group shadow
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 taper en tant que root:
domainname alphaville
Vous ne devez pas oublier aussi de lancer ypserv et yppasswdd en tapant :
/etc/rc.d/init.d/ypserv start
/etc/rc.d/init.d/yppasswdd start
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:
gmake[1]: Entering directory
`/var/yp/kervao'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating shadow.byname...
gmake[1]: Leaving directory
`/var/yp/kervao'
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.
#
Host
:
Map
: Security : Passwd_mangle
#
#
Host
: Domain :
Map
: Security
#
#*
: * :
passwd.byname : port
#*
: * :
passwd.byuid : port
# Not everybody should see the shadow passwords, not secure, since
# under MSDOG everbody is root and can access ports < 1024 !!!
*
: * :
shadow.byname : port
*
: * : passwd.adjunct.byname : port
# 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.
#
*
:
*
: none
Vous pouvez restreindre l'accès des tables NIS à votre sous réseau 192.168.13 en tapant par exemple :
192.168.13.
: shadow.byname :
port
192.168.13.
: passwd.adjunct.byname : port
Dans un but de sécurisation on créera le fichier
/var/yp/securenets qui aura cette tête là
# pour permettre l'accès sur le serveur même
255.0.0.0 127.0.0.0
# pour permettre l'accès de toutes les machines du
sous-réseau (masque et adresse réseau)
255.255.255.0 192.168.13.0
Configuration sous ubuntu
Il faut éditer le fichier /etc/default/nis et rajouter
NISSERVER=master
on édite maintenant le fichier /etc/defaultdomain où on indique le nom de domaine. Il n'est pas nécessaire de modifier les fichiers /etc/yp.conf et /etc/ypserv.conf. Maintenant on ouvre le fichier /var/yp/Makefile, pour exporter les utilisateurs et les groupes il suffit d'avoir la ligne suivantesudo /usr/lib/yp/ypinit -m
Voilà le résultat
At this point, we have to construct a list of the hosts which will run NIS
servers. obelix.kervao.fr is in the list of NIS server hosts. Please continue to add
the names for the other hosts, one per line. When you are done with the
list, type a <control D>.
next host to add: obelix.kervao.fr
next host to add: CTRL-D
The current list of NIS servers looks like this:
obelix.kervao.fr
Is this correct? [y/n: y] y
We need a few minutes to build the databases...
Building /var/yp/alphaville/ypservers...
Running /var/yp/Makefile...
make[1]: entrant dans le répertoire « /var/yp/alphaville »
Updating passwd.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.bygid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating shadow.byname...
failed to send 'clear' to local ypserv: RPC: Program not
registeredmake[1]: quittant le répertoire « /var/yp/alphaville
»
obelix.kervao.fr has been set up as a NIS master server.
Now you can run ypinit -s obelix.kervao.fr on all slave server.
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 sur le serveur, 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
NOTE: Dans le cas de shadow password, au lieu du mot de passe crypté on voit un x.
Maintenant vous devez rebatir la map passwd, puisque vous venez de modifier /etc/passwd, sous /var/yp, tapez:
make
ou bien encore ypinit -m
Configuration NIS sous Mandriva
Editez le fichier /etc/sysconfig/network et rajoutez:
NISDOMAIN=alphaville
Ensuite éditez le fichier /etc/yp.conf et rajouter
domain alphaville server obelix
Vous pouvez éventuellement mettre l'adresse IP de votre serveur NIS. 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: compat
shadow: compat
group: compat
hosts: files nis dns
L'argument compat permet de pouvoir mixer des informations du serveur NIS et des informations du poste client (voir illustration plus bas).
Lancement du client NIS sous Mandriva
Tapez maintenant les commandes suivantes:
domainname alphaville
/etc/rc.d/init.d/ypbind start
/etc/rc.d/init.d/portmap 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 restart
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:
C'est l'intérêt de l'argument compat du fichier /etc/nsswitch.conf, sans quoi il ne sera pas possible de panacher des informations du serveur NIS et des informations des fichiers locaux.
Enfin si vous voulez limiter le nombre de comptes accessibles par nis (utilisateur toto, titi, tata), il suffira de rajouter:
+toto::::::
+titi::::::
+tata::::::
Concrêtement, j'ai un serveur sous kubuntu et un poste client sous Mandriva avec une version de KDE différente, du coup sous kubuntu ma home directory est /export/home/user sur le poste Mandriva /home/user qui est un répertoire local qui me permet d'avoir des environnements KDE distincts mais par contre en retrouvant toutes mes données (je fais des liens pour le répertoire Documents, .thunderbird, etc.).
Modifier /etc/shadow
Vous devez mettre un + tout à la fin sinon ça ne marchera pas !
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, ou alors de taper ypinit -m 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
Plus simplement vous disposez également de la commande ypinit à taper avec l'option -m
[Retour haut de la page] | [Retour haut de la page] |