Partindo do princípio que você já tenha o servidor NIS configurado, é necessário:
Remover o Makefile e os antigos mapas do seu domínio:
# cd /var/yp/
# rm Makefile
# rm -rf nomeDoSeuDominio/
Modificar o Makefile.dist para gerar os mapas do shadow para o Linux. Neste exemplo vou usar a versão 1.36.2.1 do Makefile.dist (veio com FreeBSD 6.2). Para saber a versão do seu Makefile.dist, olhe as primeiras linhas do mesmo:
# head Makefile.dist
#
# Makefile for the NIS databases
#
# $FreeBSD: src/usr.sbin/ypserv/Makefile.yp,v 1.36.2.1 2006/07/08 07:45:58 maxim Exp $
versao: 1.36.2.1
Para esta versão gerei o patch:
--- Makefile.dist Wed Mar 28 15:06:13 2007
+++ mk.new Wed Mar 28 15:12:40 2007
@@ -194,7 +194,7 @@
publickey: publickey.byname
aliases: mail.aliases
-master.passwd: master.passwd.byname master.passwd.byuid
+master.passwd: master.passwd.byname master.passwd.byuid shadow.byname shadow.byuid
#
# This is a special target used only when doing in-place updates with
@@ -499,7 +499,7 @@
@echo "Creating new $@ file from $(MASTER)..."
@if [ ! $(UNSECURE) ]; then \
$(AWK) -F: '{if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
- print $$1":*:"$$3":"$$4":"$$8":"$$9":"$$10}' $(MASTER) \
+ print $$1":x:"$$3":"$$4":"$$8":"$$9":"$$10}' $(MASTER) \
> $(PASSWD) ; \
else \
$(AWK) -F: '{if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
@@ -592,6 +592,31 @@
@if [ ! $(NOPUSH) ]; then echo "Pushed $@ map." ; fi
.endif
+shadow.byname: $(MASTER)
+ @echo "Updating $@..."
+.if ${MASTER} == "/dev/null"
+.else
+ $(AWK) -F: '{ if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
+ print $$1"\t"$$1":"$$2":12345:0:99999:7:::" }' $(MASTER) \
+ | $(DBLOAD) ${S} -f -i $(MASTER) -o $(YPMAPDIR)/$@ - $(TMP); \
+ $(RMV) $(TMP) $@
+ @$(DBLOAD) -c
+ @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOMAIN) $@; fi
+ @if [ ! $(NOPUSH) ]; then echo "Pushed $@ map. " ; fi
+.endif
+
+shadow.byuid: $(MASTER)
+ @echo "Updating $@..."
+.if ${MASTER} == "/dev/null"
+.else
+ $(AWK) -F: '{ if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
+ print $$3"\t"$$0 }' $(MASTER) \
+ | $(DBLOAD) ${S} -f -i $(MASTER) -o $(YPMAPDIR)/$@ - $(TMP); \
+ $(RMV) $(TMP) $@
+ @$(DBLOAD) -c
+ @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOMAIN) $@; fi
+ @if [ ! $(NOPUSH) ]; then echo "Pushed $@ map. " ; fi
+.endif
amd.map: $(AMDHOST)
@echo "Updating $@..."
Para versões diferentes, veja os que fiz em:
Se não tiver a sua versão você deve fazer as modificações no seu Makefile.dist na mão.
Baixe o patch para a pasta /var/yp e aplique:
# patch < ypmk.patch
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- Makefile.dist Wed Mar 28 15:06:13 2007
|+++ mk.new Wed Mar 28 15:12:40 2007
--------------------------
Patching file Makefile.dist using Plan A...
Hunk #1 succeeded at 194.
Hunk #2 succeeded at 499.
Hunk #3 succeeded at 592.
done
Agora recrie os mapas do NIS executando o comando
ypinit e responda conforme sua necessidade:
# ypinit -m nomeDoSeuDominio
Após isto, confirme que seu Makefile possui a seguinte linha comentada:
#UNSECURE = "True"
Modifique conforme sua necessidade a linha (comente se existe servidores slaves):
NOPUSH = "True"