Domaine NIS

1 - Introduction

Voici un extrait des possibilités offertes par les services NIS/NFS avec OpenBSD, pour un contrôleur de domaine. Il est bien évidemment possible de mettre en place des structures plus évoluées, comme des contrôleurs maître / esclave. Ces technologies reposent sur le protocole RPC.

2 - Installation du contrôleur de domaine

NIS

La gestion des utilisateurs du domaine (au sens NIS du terme) va être opérée par NIS, à entrevoir comme un exemplaire des Pages Jaunes. Ses objectifs en terme d'authentification sont assez proches de ceux des annuaires LDAP.

Il faut tout d'abord procéder à la définition du nom de domaine NIS :

% sudo echo "exemple.com" > /etc/defaultdomain
% domainname exemple.com

Les différents services qui sont utilisés sont à activer dans le fichier /etc/rc.conf :

rwhod=YES
nfs_server=YES
lockd=YES
amd=NO
portmap=YES
...
yppasswdd_flags=""
nfsd_flags="-tun 4"

A présent, afin de réaliser l'initialisation du contrôleur de domaine, un jeu de fichiers indépendant est préféré aux fichiers du système serveur.

% sudo mkdir -p /var/yp/files/mail
% sudo cp -p /etc/{group,hosts,networks,protocols,rpc,services,protocols} /var/yp/files
% sudo cp -p /etc/{passwd,master.passwd,spwd.db,pwd.db} /var/yp/files
% sudo touch /var/yp/files/{ethers,netgroup,netid}
% sudo cp -p {mail/aliases,mail/aliases.db} /var/yp/files/mail

Changer à présent la ligne "DIR=/etc" en "DIR=/var/yp/files" dans Makefile.yp, avant d'initialiser le domaine :

% sudo ypinit -m exemple.com

Remarque : dans le cas d'un serveur secondaire, l'initialisation est réalisée via la commande `ypinit -s exemple.com`, et il faut alors programmer la mise à jour des maps, par exemple via :

*       */1     *       *       *       /usr/sbin/ypxfr_1perhour

A l'issue du questionnaire et des étapes de création de /var/yp/exemple.com, le message suivant est obtenu :

exemple.com has been setup as an YP master server without any errors.

Créer le journal :

% sudo touch /var/yp/ypserv.log

Indiquer les réseaux autorisés à utiliser yp; par exemple :

% sudo echo "255.255.255.0 192.168.1.0" > /var/yp/securenet
% cd /var/yp && sudo make

Netgroups

Afin de faciliter la gestion des utilisateurs, il est possible d'utiliser des netgroups; par exemple :

ADMINS (, admin1, network.com) (, admin2, network.com)
dans le fichier /var/yp/files/netgroup aura pour effet de permettre aux utilisateurs "admin1" et "admin2" de se connecter sur toutes les machines du réseau.

Pour tout changement, appliquez les modifications grâce à la commande `make' dans le répertoire /var/yp.

Partage NFS

Dans /etc/exports, il faut à présent ajouter le répertoire /home pour les utilisateurs :

/home -alldirs -root=0 -network 192.168.1.0 -mask 255.255.255.0

AMD

Pour /etc/amd/amd.master :

% cd /etc/amd
% sudo mv master.sample amd.master

/home   amd.home

Dans /etc/amd/amd.home, il est possible d'ajouter :

/defaults type:=nfs;sublink:=${key};opts:=rw,soft,intr,vers=2,proto=udp
*         rhost:=NOMDELHOTE;rfs:=/home

A noter que l'administration d'amd peut être réalisée par la commande amq.

Conclusion

Une fois ces opérations terminées, le plus simple est de rebooter le serveur. Les services portmap, ypbind, ypserv et rpc.yppasswdd devraient alors se lancer (yp est lancé lorsque le répertoire /var/yp/exemple.com existe, et rpc.yppasswdd permet aux utilisateurs sur les clients de changer leur mots de passe). Il est possible de vérifier que la base de mots de passe est bien prise en compte via :

% sudo ypcat passwd

3 - Configuration des clients

NIS

Définition du nom d'hôte :

% sudo echo "exemple.com" > /etc/defaultdomain
% domainname exemple.com

Automatiser les lancements via rc.conf :

amd=YES
portmap=YES
lockd=YES

% sudo portmap
% sudo rpc.lock
% sudo amd -x error,noinfo,nostats -a /tmp_mnt -l syslog /home amd.home
% sudo ypbind
Enabling yp client subsystem.
To disable: kill ypbind and remove /var/yp/binding

Répertoires

Il est nécessaire de créer manuellement les points de montage dans /home, puis de faire un `chown' correspondant à l'utilisateur. Le fichier master.sample contient la map que à utiliser, il suffit donc de le renommer convenablement :

% cd /etc/amd
% sudo mv master.sample amd.master

Rebooter. Afin de pouvoir utiliser les comptes NIS, les lignes suivantes sont à ajouter sur les clients :

/etc/master.passwd      :       +:*::::::::
/etc/group              :       +:*::

Elles permettent l'import, et peuvent également "forcer" certains paramètres. Par exemple, +::::::::/sbin/nologin forcera tous les comptes importés en shell nologin.


Alexandre Anriot - http://www.atlantilde.com/aanriot/