\documentclass{article}
\title{NIS + NFS}
\author{Marcelin Fotze\\fotze@club-internet.fr\\Revu Par\\Julien Danjou\\jdanjou@linuxenrezo.org}
\date{}
\begin{document}
\maketitle

\section{Avertissement}

Les fichiers donn\'es sont cons\'equents des services que vous avez configur\'es personnellement sur votre machine. De plus les exemples sont donn\'es pour une configuration minimale, \`a vous de les peaufiner pour vos r\'eglages personnels.\\

\section{But}

	Lorsque l'on veut connecter plusieurs machines ensembles, avec un service de connection centralis\'e sur un serveur (primaire) tout en retrouvant son bureau personnel depuis n'importe quelle machine, on dispose du service NIS pour la connection et du service NFS pour le montage des r\'epertoires. G\'en\'eralement pour des raisons de rapidit\'e du réseau (sur un petit réseau classique) les logiciels (que l'on veut utiliser) peuvent \^etre install\'es sur la machine locale, et par conséquent seul le répertoire /home sera import\'e du serveur vers la machine locale ainsi, que les services que l'on d'esire autoriser (par exemple le cdrom du serveur, un r\'epertoire commun o\`u d\'eposer des fichiers par exemple /var/commun). NIS ne permet pas de s\'ecuriser le r\'eseau (ce n'est pas son but) car les mots de passe ne sont pas crypt\'es. Donc pour plus de s\'ecurit\'e sur les mots de passe il faut utiliser NIS+ (pas traité par ce document). Mais, on a la possibilité de choisir les utilisateurs, les groupes et d'autres services exploitables par NIS.\\

\section{Les cartes}

	On se propose d'exporter par NIS les cartes, des mots de passe, des groupes, des h\^otes. Pour cela il faut:\\
	
	\textbf{3.1 Désactiver le codage shadow}\\

	V\'erifier si le fichier /etc/shadow existe, et si il existe le d\'esactiver par la commande pwunconv(pour plus d'information taper dans une console man pwunconv) , si pwunconf ne fonctionne pas v\'erifier que le paquetage shadow-utils-xxxxxx-xx est install\'e(taper dans une console rpm -qva | grep shadow -i). Si rien n'est trouv\'e il faut l'installer.\\

	\textbf{3.2 Faire une copie}\\

	Faire une copie des fichiers /etc/passwd, /etc/hosts, /etc/group dans un r\'epertoire /etc/nis que l'on aura pr\'ealablement cr\'e\'e. Maintenant dans ces nouveaux fichiers (sous le r\'epertoire /etc/nis) enlever les personnes ou les groupes non d\'esir\'es pour le fonctionnement en r\'eseau.\\

	\textbf{3.3 Réactiver le codage shadow}\\

	Taper la commande pwconv:\\

	\textbf{4 Point de départ}\\

	On se propose d'importer sur la machine locale son r\'epertoire home, le point de montage du lecteur de cdrom du serveur, un r\'epertoire du serveur en lecture/\'ecriture appel\'e /var/commun.\\

	\textbf{5 Configuration de la machine serveur}\\

	Nous allons maintenant donner un exemple de configuration pour un r\'eseau \`a deux machines, qui reste valable pour un r\'eseau \`a X machines. Si le serveur NIS (et NFS) s'appelle Den et qu'il r\'eside sur le domaine Terre et que la machine locale s'appelle Servfich on aura les modifications suivantes (en gras) \`a faire dans les fichiers:\\

	\textbf{5.1 /etc/hosts}\\

	127.0.0.1      localhost         localhost.localdomain\\
	192.168.1.1    Den.Terre         Den\\
	192.168.1.2    Servfich.Terre    Servfich\\

	\textbf{5.2 /etc/host.conf}\\

	order hosts,nis,bind\\
	multi on\\

	\textbf{5.3 /etc/sysconfig/network}\\

	NETWORKING=yes\\
	FORWARD\_IPV4=no\\
	HOSTNAME=Den.Terre\\
	DOMAINNAME=Terre\\
	GATEWAY=\\
	GATEWAYDEV=ppp0\\
	NISDOMAIN=Terre\\

	\textbf{5.4 /etc/ypserv.conf}\\

	\# 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\\

	\# *                          : passwd.byname    : port       : yes\\
	\# *                          : passwd.byuid     : port       : yes\\

	\# Not everybody should see the shadow passwords, not secure, since\\
	\# under MSDOG everbody is root and can access ports < 1024 !!!\\
	*                            : 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.\\

	*                           : *                : none\\

	\textbf{5.5 /var/yp/securenets}\\

	\# securenets    This file defines the access rights to your NIS server\\
	\#               for NIS clients. This file contains netmask/network\\
	\#               pairs. A clients IP address needs to match with at least\\
	\#               one of those.\\

	\#               One can use the word "host" instead of a netmask of\\
	\#               255.255.255.255. Only IP addresses are allowed in this\\	
	\#               file, not hostnames.\\

	\# Always allow access for localhost\\
	255.0.0.0       127.0.0.0\\

	\# This line gives access to everybody. PLEASE ADJUST!\\
	0.0.0.0         0.0.0.0\\

	\textbf{5.6 /var/yp/Makefile}\\

	\# Makefile for the NIS databases\\

	\# \$Id: ypMakefile.in,v 1.25 1999/02/19 15:07:35 kukuk Exp \$ \\

	\# This Makefile should only be run on the NIS master server of a domain.\\
	\# All updated maps will be pushed to all NIS slave servers listed in the\\
	\# /var/yp/ypservers file. Please make sure that the hostnames of all\\
	\# NIS servers in your domain are listed in /var/yp/ypservers.\\
	\# This Makefile can be modified to support more NIS maps if desired.\\
	\# Set the following variable to "-b" to have NIS servers use the domain\\
	\# name resolver for hosts not in the current domain. This is only needed,\\
	\# if you have SunOS slave YP server, which gets here maps from this\\
	\# server. The NYS YP server will ignore the YP\_INTERDOMAIN key.\\

	\#B=-b\\
	B=\\

	\# 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.\\

	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.\\
	
	MINUID=500\\
	MINGID=500\\

	\# Should we merge the passwd file with the shadow file ?\\
	\# MERGE\_PASSWD=true\textbar false\\
	MERGE\_PASSWD=false\\

	\# Should we merge the group file with the gshadow file ?\\
	\# MERGE\_GROUP=true\textbar false\\
	MERGE\_GROUP=false\\

	\# These are commands which this Makefile needs to properly rebuild the\\
	\# NIS databases. Don't change these unless you have a good reason.\\
	AWK = /usr/bin/gawk\\
	MAKE = /usr/bin/gmake\\
	UMASK = umask 066\\

	\# These are the source directories for the NIS files; normally\\
	\# that is /etc but you may want to move the source for the password\\
	\# and group files to (for example) /var/yp/ypfiles. The directory\\
	\# for passwd, group and shadow is defined by YPPWDDIR, the rest is\\
	\# taken from YPSRCDIR.\\

	YPSRCDIR = /etc\\
	YPPWDDIR = /etc/nis\\
	YPBINDIR = /usr/lib/yp\\
	YPSBINDIR = /usr/sbin\\
	YPDIR = /var/yp\\
	YPMAPDIR = \$(YPDIR)/\$(DOMAIN)\\

	\# These are the files from which the NIS databases are built. You may edit\\
	\# these to taste in the event that you wish to keep your NIS source files\\
	\# seperate from your NIS server's actual configuration files.\\

	GROUP       = \$(YPPWDDIR)/group\\
	PASSWD      = \$(YPPWDDIR)/passwd\\
	SHADOW      = \$(YPPWDDIR)/shadow\\
	GSHADOW     = \$(YPPWDDIR)/gshadow\\
	ADJUNCT     = \$(YPPWDDIR)/passwd.adjunct\\
	\#ALIASES     = \$(YPSRCDIR)/aliases  \# aliases could be in /etc or /etc/mail\\
	ALIASES     = /etc/aliases\\
	ETHERS      = \$(YPSRCDIR)/ethers     \# ethernet addresses (for rarpd)\\
	BOOTPARAMS  = \$(YPSRCDIR)/bootparams \# for booting Sun boxes (bootparamd)\\
	HOSTS       = \$(YPSRCDIR)/hosts\\
	NETWORKS    = \$(YPSRCDIR)/networks\\
	PROTOCOLS   = \$(YPSRCDIR)/protocols\\
	PUBLICKEYS  = \$(YPSRCDIR)/publickey\\
	RPC         = \$(YPSRCDIR)/rpc\\
	SERVICES    = \$(YPSRCDIR)/services\\
	NETGROUP    = \$(YPSRCDIR)/netgroup\\
	NETID       = \$(YPSRCDIR)/netid\\
	AMD\_HOME    = \$(YPSRCDIR)/amd.home\\
	AUTO\_MASTER = \$(YPSRCDIR)/auto.master\\
	AUTO\_HOME   = \$(YPSRCDIR)/auto.home\\

	YPSERVERS = \$(YPDIR)/ypservers  \# List of all NIS servers for a domain\\
	
	\begin{verbatim}
	target: Makefile
        @test ! -d $(LOCALDOMAIN) && mkdir $(LOCALDOMAIN) ; 
        cd $(LOCALDOMAIN)  ;
        $(NOPUSH) || $(MAKE) -f ../Makefile ypservers; 
        $(MAKE) -f ../Makefile all
	\end{verbatim}
 
	\# If you don't want some of these maps built, feel free to comment\\
	\# them out from this list.\\
	all:  passwd group hosts\\
	\#all:  passwd group hosts rpc services netid protocols netgrp mail \\
       	\#shadow publickey \# networks ethers bootparams amd.home \\
	\#       auto.master auto.home passwd.adjunct\\

	\textbf{5.7 /etc/hosts.allow}\\

	\# hosts.allow   This file describes the names of the hosts which are\\
	\#               allowed to use the local INET services, as decided\\
	\#               by the '/usr/sbin/tcpd' server.\\

	ALL:    Servfich\\

	\textbf{5.8 /etc/exports}\\

	/mnt/cdrom      Servfich\\
	/home           Servfich\\
	/var/commun     Servfich(rw)\\

	\textbf{5.9 /etc/yp.conf}\\

	\# /etc/yp.conf - ypbind configuration file\\
	\# Valid entries are\\

	\# domain NISDOMAIN server HOSTNAME\\
	\#       Use server HOSTNAME for the domain NISDOMAIN.\\

	\#domain NISDOMAIN broadcast\\
	\#       Use  broadcast  on  the local net for domain NISDOMAIN\\

	\#ypserver HOSTNAME\\
	\#       Use server HOSTNAME for the  local  domain.  The\\
	\#       IP-address of server must be listed in /etc/hosts.\\

	domain Terre broadcast\\

	\textbf{5.10 le final}\\

	Il faut maintenat construire les cartes export\'es par NIS.Pour cela on \'ex\'ecutera la commande suivante sur le serveur en tant que root:\\

	/usr/lib/yp/ypinit -m\\ 
	
	Les cartes correspondantes \`a nos choix seront construites dans le r\'epertoire /var/yp/nom\_du\_domaine.\\

	\textbf{6 Configuration de la machine locale}

	Attention de ne pas oublier de créer le répertoire /var/commun sur les deux machines.\\

	\textbf{6.1 /etc/fstab}\\

	/dev/hda8               	/                       ext2    defaults        1 1\\
	/dev/hda1               	/boot                   ext2    defaults        1 2\\
	\#/dev/hda7              	/home                   ext2    defaults        1 2\\
	Den:/home             		/home                   nfs    hard,rw,intr,rsize=8192\\
	,wsize=8192  0 0\\
	/dev/hda5               	/usr                    ext2    defaults        1 2\\
	/dev/hda9               	/usr/local1             ext2    defaults        1 2\\
	Den:/mnt/cdrom        		/cdrom1                 nfs    noauto,user,ro,hard\\
	,intr,rsize=8192,wsize=8192  0 0\\
	Den:/var/commun       		/var/commun             nfs     hard,rw,intr,rsize=8192\\
	,wsize=8192  0 0\\
	/dev/hda10              	/var                    ext2    defaults        1 2\\
	/dev/hda6               	swap                    swap    defaults        0 0\\
	/dev/fd0                	/mnt/floppy             ext2    noauto          0 0\\
	/dev/fd0                	/mnt/flopfat            vfat    noauto          0 0\\
	none                    	/proc                   proc    defaults        0 0\\

	\textbf{6.2 /etc/hosts}\\

	127.0.0.1               localhost localhost.localdomain\\
	192.168.1.2             Servfich.Terre Servfich\\
	192.168.1.1             Den.Terre Den\\

	\textbf{6.3 /etc/host.conf}\\

	order hosts,nis,bind\\
	multi on\\

	\textbf{6.4 /etc/passwd}\\

	root:hEN8PT6JdzGQI:0:0:root:/root:/bin/bash\\
	bin:*:1:1:bin:/bin:\\
	daemon:*:2:2:daemon:/sbin:\\
	adm:*:3:4:adm:/var/adm:\\
	lp:*:4:7:lp:/var/spool/lpd:\\
	sync:*:5:0:sync:/sbin:/bin/sync\\
	shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown\\
	halt:*:7:0:halt:/sbin:/sbin/halt\\
	mail:*:8:12:mail:/var/spool/mail:\\
	news:*:9:13:news:/var/spool/news:\\
	uucp:*:10:14:uucp:/var/spool/uucp:\\
	operator:*:11:0:operator:/root:\\
	games:*:12:100:games:/usr/games:\\
	gopher:*:13:30:gopher:/usr/lib/gopher-data:\\
	ftp:*:14:50:FTP User:/home/ftp:\\
	nobody:*:99:99:Nobody:/:\
	+::::::\\

	\textbf{6.5 /etc/yp.conf}\\

	\# /etc/yp.conf - ypbind configuration file\\
	\# Valid entries are\\

	\#domain NISDOMAIN server HOSTNAME\\
	\#       Use server HOSTNAME for the domain NISDOMAIN.\\

	\#domain NISDOMAIN broadcast\\
	\#       Use  broadcast  on  the local net for domain NISDOMAIN\\

	\#ypserver HOSTNAME\\
	\#       Use server HOSTNAME for the  local  domain.  The\\
	\#       IP-address of server must be listed in /etc/hosts.\\

	domain Terre broadcast\\

	\textbf{6.6 /etc/sysconfig/network}\\

	ypserver Den\\
	NETWORKING=yes\\
	FORWARD\_IPV4=false\\
	HOSTNAME=Servfich.Terre\\
	DOMAINNAME=Terre\\
	GATEWAY=192.168.1.1\\
	GATEWAYDEV=eth0\\
	NISDOMAIN=Terre\\

	\textbf{6.7 /etc/host.conf}\\

	order hosts,nis,bind\\
	multi on\\\

	\textbf{7 Post configuration}\\

	Tout d'abord sur la machine machine serveur, on permet le d\'emarrage de ypserv et nfs en lancant (en tant que root) la commande /usr/sbin/ntsysv. Il faut cocher les 2 services nomm\'es pr\'ec\'edement. Ensuite arr\^etez la machine locale, puis rebootez la machine serveur lorsque la machine locale est stopp\'ee. Lorsque le serveur tourne, red\'emarrer la machine locale. Une fois la machine Locale en fonction vous devez \^etre capable de vous logger localement sur un compte utilisateur du serveur et d'utiliser le r\'epertoire qui est export\'e par le serveur.\\

	\textbf{8 Quelques tests}\\

	La commande ypwhich ex\'ecut\'ee sur la machine locale vous permet de d\'eterminer le nom de la machine serveur NIS, ypcat 'carte' vous affiche la carte en question \`a l'\'ecran (ex: ypcat passwd ram\`ene le contenu de la carte passwd), domainname vous permet de v\'erifier le nom de votre domaine NIS.\\

\end{document}