User Tools

Site Tools


doc:appunti:linux:sa:nis

This is an old revision of the document!


Installazione NIS server

Installato il pacchetto nis, si è specificato come nome di dominio il dominio DNS dell'host, in questo esempio mydomain.org. Viene salvato in /etc/defaultdomain (vedi avanti come cambiarlo).

Fare attenzione al contenuto dei seguenti file:

  • /etc/defaultdomain
  • /etc/default/nis
  • /etc/hosts
  • /etc/ypserv.securenets

Conviene che in /etc/hosts i nomi dei server NIS siano presenti sia nella versione breve che in quella completa, qualcosa del tipo:

127.0.0.1       localhost.localdomain localhost
10.0.1.47       nisserver.mydomain.org nisserver

Poiché vogliamo essere NIS master server, in /etc/default/nis si imposta

NISSERVER=master

Per decidere chi ha accesso al server NIS si mette in /etc/ypserv.securenets una riga come segue (commentando la riga che garantisce accesso a tutti):

255.255.255.0 10.0.1.0

NOTA: se il server NIS ha più di una interfaccia di rete e si vuole rispondere a richieste broadcast da parte dei client, è opportuno aggiungere in /etc/ypserv.securenets anche tutti gli indirizzi alternativi del server NIS, oltre all'indirizzo loopback:

# Always allow access for localhost
255.0.0.0       127.0.0.0

# Allow access from localhost (when proxying broadcast requests?)
# See Debian bugs:
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=280537
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=126177
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329382
255.255.255.255 192.168.144.2

infatti pare che ypserv - in risposta ad una richiesta broadcast di un client - inoltri a sé stesso una richiesta broadcast utilizzando l'indirizzo IP aggiuntivo che non è nelle securenets, facendo fallire la richiesta del client e generando questo errore in syslog:

ypserv[9960]: refused connect from 192.168.144.2:46594 to procedure ypproc_domain_nonack (mydomain.org,;0)

Bisogna inizializzare il database del dominio NIS, che verrà tenuto nella directory /var/yp/mydomain.org/. Si usa il comando

/usr/lib/yp/ypinit -m

Per testare il corretto funzionamento del server si può usare il comando ypcat passwd. Mostra tutte le voci del database “passwd” presente nel server NIS. Quali database ci sono sul server NIS lo si vede dal file /var/yp/nicknames. Per es. le shadow password si vedono con ypcat shadow.byname.

Per modificare il nome del dominio NIS da mydomain.org a newdomain.org:

/etc/init.d/nis stop
vi /etc/defaultdomain
rm -r /var/yp/mydomain.org
domainname newdomain.org
/usr/lib/yp/ypinit -m
/etc/init.d/nis start

Utenti NIS separati da quelli di sistema

Invece di usare i file in /etc/ (passwd, group, …), si vogliono usare delle copie in /var/yp/ypfiles. Modificare /var/yp/Makefile:

YPSRCDIR = /var/yp/ypfiles
YPPWDDIR = /var/yp/ypfiles

Si deve editare anche /etc/default/nis:

YPPWDDIR=/var/yp/ypfiles

Per fare in modo che ypinit riesca a generare i database necessari bisogna provvedere i seguenti file:

  • group
  • hosts
  • netgroup
  • passwd
  • protocols
  • rpc
  • services
  • shadow

Dopo aver modificato il contenuto di tali file bisogno aggiornare lo stato del server NIS:

make -C /var/yp

Per far partecipare gli utenti NIS a gruppi di sistema (ad esempio plugdev, lpadmin, ecc. di Ubuntu) bisogna aggiungere le voci opportune in /var/yp/ypfiles/group e modificare il valore di MINGID in /var/yp/Makefile in modo che tali gruppi siano esportati via NIS.

NIS client

Si installa il pacchetto nis. Chiunque voglia essere NIS client (eventualmente anche il NIS server stesso) deve impostare NISCLIENT=true nel file /etc/default/nis.

Per integrare gli utenti e i gruppi NIS in quelli standard unix si deve modificare /etc/passwd aggiungendo la riga:

+::::::

Analogamente in /etc/shadow e /etc/group si deve mettere rispettivamente:

+::::::::
+:::

La ricerca del NIS server avviene tramite richieste broadcast sulla rete locale. Per evitarle (potrebbero fallire per regole di firewall) si dichiarano esplicitamente i server in /etc/yp.conf:

# We states NIS servers explicitly to avoid broadcast requests.
ypserver bianca.rigacci.org
ypserver neve.rigacci.org

Un altro motivo per cui la richiesta broadcast potrebbe fallire è se il server NIS è multihomed (ha più di una interfaccia di rete), vedi la nota sopra riguardo ypserv.securenets.

L'utente autenticato via NIS può cambiare la propria password con yppasswd.

NIS slave server

Configurare l'host che dovrà essere slave server come se fosse un NIS client, quindi mettere in /etc/default/nis la riga NISSERVER=slave.

Sul master modificare /var/yp/Makefile mettendo NOPUSH=“false”, quindi eseguire /usr/lib/yp/ypinit -m.

Riavviare NIS sullo slave ed eseguire /usr/lib/yp/ypinit -s <master_server> per trasferire il contenuto dei file.

Le repliche dovrebbero avvenire automaticamente dal master allo slave. Nel caso qualcosa vada storto è opportuno configurare un cron job sullo slave come suggerito dal file nis.debian.howto:

20 *    * * *    root  /usr/lib/yp/ypxfr_1perhour >/dev/null 2>&1
40 6    * * *    root  /usr/lib/yp/ypxfr_1perday  >/dev/null 2>&1
55 6,18 * * *    root  /usr/lib/yp/ypxfr_2perday  >/dev/null 2>&1

Firewall

Se il server NIS è protetto da firewall che filtra in base al numero di porta si deve avere l'accortezza di impostare i vari server su porte predefinite (non su porte dinamiche come sarebbe l'impostazione predefinita) ed aprire di conseguenza il firewall. Come per il servizio NFS la gestione delle porte è affidata a portmapper, vedere in proposito la pagina relativa.

In particolare si devono indicare le porte per ypserv, yppasswdd, FIXME ypbind, fypxfrd.

In un sistema Debian vedere /etc/default/nis:

YPSERVARGS="--port 808"
YPPASSWDDARGS="--port 600"
doc/appunti/linux/sa/nis.1309773494.txt.gz · Last modified: 2011/07/04 11:58 by niccolo