9. Impostare un Server NIS

9.1. Il programma Server ypserv

Questo documento descrive solamente come impostare il server NIS "ypserv".

Il software per il server NIS può essere reperito su:

  Sito               Directory                    Nome file

  ftp.kernel.org     /pub/linux/utils/net/NIS     ypserv-2.9.tar.gz
  ftp.kernel.org     /pub/linux/utils/net/NIS     ypserv-2.9.tar.bz2

È possibile dare un'occhiata a http://www.linux-nis.org/nis/ per maggiori informazioni.

L'impostazione del server è la stessa sia per il NIS tradizionale che NYS.

Si compili il software per generare i programmi ypserv e makedbm. Solo ypserv-2.x supporta il file securnets per le restrizioni degli accessi.

Se eseguite il vostro server come master, verificate che i file richiesti siano disponibili tramite NIS e poi aggiungete o rimuovete le voci appropriate alle regole "all" in /var/yp/Makefile. Dovreste sempre osservare il Makefile ed editare le opzioni all'inizio del file.

C'è stato un grande cambiamento tra ypserv 1.1 e ypserv 1.2. Dalla versione 1.2, la gestione del file è cached. Questo significa che si deve sempre eseguire makedbm con l'opzione -c se si vogliono creare nuove mappe. Assicurarsi di utilizzare il nuovo /var/yp/Makefile di ypserv 1.2 o successivo, oppure si agginga il flag -c a makedbm in Makefile. Se non lo si fa, ypserv continuerà ad utilizzare le vecchie mappe e non quelle aggiornate.

Ora editate /var/yp/securenets e /etc/ypserv.conf. Per maggiori informazioni, leggete le pagine del manuale di ypserv(8) e ypserv.conf(5).

Assicirarsi che portmapper (portmap(8)) sia in esecuzione esi avvii il server ypserv. Il comando

    % rpcinfo -u localhost ypserv

dovrà restituirvi qualcosa come

    program 100004 version 1 ready and waiting
    program 100004 version 2 ready and waiting

La linea "version 1" potrebbe non esserci, dipende dalla versione di ypserv e dalla configurazione in uso. È necessaria solo se si hanno vecchi client SunOS 4.x.

Ora si generi il nuovo database NIS (YP). Sul master, eseguite

    % /usr/lib/yp/ypinit -m

Su uno slave assicurarsi che ypwhich -m lavori. Questo significa che il vostro slave deve essere configurato come client NIS prima di poter eseguire
    % /usr/lib/yp/ypinit -s masterhost
per installare l'host come slave NIS.

Questo è tutto, il server è impostato ed in esecuzione.

Se si hanno grossi problemi, si può avviare ypserv e ypbind in modalità debug su differenti xterms. L'output di debug dovrebbe mostrare cosa fa di sbagliato.

Se si deve aggiornare una mappa, eseguire make nella directory /var/yp sul master NIS. Questo aggiornerà una mappa se il file sorgente è più nuovo ed invierà i file ai server slave. Per cortesia, non si utilizzi ypinit per aggiornare una mappa.

Si potrebbe editare il crontab di root sul server slave ed aggiungere le seguenti righe:

      20 *    * * *    /usr/lib/yp/ypxfr_1perhour
      40 6    * * *    /usr/lib/yp/ypxfr_1perday
      55 6,18 * * *    /usr/lib/yp/ypxfr_2perday
Questo assicurerà che la maggior parte delle mappe NIS saranno mantenute aggiornate, anche se un aggiornamento è stato perso perché lo slave era disattivo al momento degli aggiornamenti fatti sul master.

Dopo, si può aggiungere uno slave in ogni momento. Prima, assicurarsi che il nuovo server slave abbia i permessi per contattare il master NIS. Poi si esegua
    % /usr/lib/yp/ypinit -s masterhost
sul nuovo slave. Sul server master si aggiunga il nome del nuovo server slave a /var/yp/ypservers e si esegua make in /var/yp per aggiornare la mappa.

Se si vuole ridurre l'accesso agli utenti sul server NIS, si dovrà impostare il server NIS come un client eseguendo ypbind ed aggiungendo le voci + a /etc/passwd a metà del file delle password. Le funzioni di libreria ignoreranno tutte le voci normali dopo la prima voce NIS ed otterranno il resto delle informazioni direttamente da NIS. In questo modo le regole di accesso a NIS verranno mantenute. Un esempio:

     root:x:0:0:root:/root:/bin/bash
     daemon:*:1:1:daemon:/usr/sbin:
     bin:*:2:2:bin:/bin:
     sys:*:3:3:sys:/dev:
     sync:*:4:100:sync:/bin:/bin/sync
     games:*:5:100:games:/usr/games:
     man:*:6:100:man:/var/catman:
     lp:*:7:7:lp:/var/spool/lpd:
     mail:*:8:8:mail:/var/spool/mail:
     news:*:9:9:news:/var/spool/news:
     uucp:*:10:50:uucp:/var/spool/uucp:
     nobody:*:65534:65534:noone at all,,,,:/dev/null:
     +miquels::::::
     +:*:::::/etc/NoShell
     [ All normal users AFTER this line! ]
     tester:*:299:10:Just a test account:/tmp:
     miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh

Quindi l'utente "tester" esisterà ma avrà la shell di /etc/NoShell. miquels avrà un normale accesso.

Alternativamente, potrete editare il file /var/yp/Makefile ed impostare NIS per utilizzare un'altro file sorgente delle password. Su grandi sistemi i file delle password e gruppi NIS sono normalmente archiviati in /etc/yp/. Se si fa questo, i normali strumenti per amministrare il file delle password come passwd, chfn, adduser non funzioneranno più e si avrà bisogno di speciali strumenti fatti su misura per queste operazioni.

In ogni caso, yppasswd, ypchsh e ypchfn lavoreranno comunque.

9.2. Il programma server yps

Per impostare il server NIS "yps" riferirsi al precedente paragrafo. L'impostazione del server "yps" è simile ma non esattamente uguale, così si faccia attenzione se si tenta di applicare le istruzioni di "ypserv" a "yps"! "yps" non è supportato da alcun autore e contiene alcune falle nella sicurezza. Veramente non sarebbe da utilizzare!

Il server NIS "yps" può essere reperito su:

  Sito                  Directory                   Nome File

  ftp.lysator.liu.se    /pub/NYS/servers            yps-0.21.tar.gz
  ftp.kernel.org        /pub/linux/utils/net/NIS    yps-0.21.tar.gz

9.3. Il programma rpc.ypxfrd

rpc.ypxfrd è utilizzato per velocizzare il trasferimento di mappe NIS molto grandi da un server NIS master ai server slave. Se un server NIS slave riceve un messaggio che c'è una nuova mappa, avvierà ypxfr per il trasferimento della nuova mappa. ypxfr leggerà i contenuti della mappa dal server master utilizzando la funzione yp_all(). Questo processo può impiegare diversi minuti in presenza di mappe molto grandi che devono essere salvate dalla libreria.

Il server rpc.ypxfrd velocizza il processo di trasferimento permettendo ai server NIS slave di copiare semplicemente il file della mappa del server master anziché costruire le proprie da zero. rpc.ypxfrd utilizza un protocollo di trasferimento dei file basato su RPC, così che non vi sia necessità di costruire una nuova mappa.

rpc.ypxfrd può essere avviato da inetd. Ma poiché si avvia molto lentamente, dovrebbe essere avviato da ypserv. È necessario avviare rpc.ypxfrd solo sul server NIS master.

9.4. Il programma rpc.yppasswdd

Ogni qual volta gli utenti cambiano la loro password, il database NIS delle password e probabilmente gli altri database NIS, che dipendono da questo, dovrebbero essere aggiornati. Il programma "rpc.yppasswdd" è un server che gestisce le password cambiate e si assicura che che l'informazione NIS sia aggiornata di conseguenza. Ora rpc.yppasswdd è integrato in ypserv. Non avrete bisogno del vecchio, distinto yppasswd-0.9.tar.gz o yppasswd-0.10.tar.gz, e non dovrebbero essere utilizzati ancora a lungo.

Si deve eseguire rpc.yppasswdd solo su server NIS master. Per valore predefinito, gli utenti non sono autorizzati a cambiare il loro nome completo o la shell di login. È possibile permetterlo con l'opzione -e chfn o -e chsh.

Se i file passwd e shadow non sono nella directory /etc, si deve aggiungere l'opzione -D. Per esempio, se si mettono tutti i file sorgenti in /etc/yp e si vuole che gli utenti cambino la loro shell, si deve avviare rpc.yppasswdd con i seguenti parametri:

   rpc.yppasswdd -D /etc/yp -e chsh

o

   rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh

Non c'è molto altro da fare. Ci si deve solo assicurare che rpc.yppasswdd utilizzi gli stessi file di /var/yp/Makefile. Gli errori verranno riportati mediante syslog.