11. Creazione ed aggiornamento delle mappe NIS

11.1. Creazione di nuove mappe NIS

Le mappe NIS iniziali verranno create eseguendo

    % /usr/lib/yp/ypinit -m

Questo viene fatto quando si imposta il server NIS master per la prima volta. Per maggiori informazioni inerenti questa operazione, leggere la Sezione 9. Se si desidera aggiungere nuove mappe al server o rimuoverne alcune, è necessario editare /var/yp/Makefile e cambiare la regola all:. Aggiungere o rimuovere la regola che genera la mappa.

Se si cancella una mappa, si devono rimuovere anche i file corrispondenti.

Dopo questo cambiamento, si deve eseguire

    % make -C /var/yp

e le mappe dovrebbero essere create.

11.2. Aggiornamento delle mappe NIS

Se si modificano i sorgenti per le mappe NIS (per esempio se si crea un nuovo utente aggiungendo l'account al file passwd), è necessario rigenerare le mappe NIS. Questo viene fatto con un semplice

    % make -C /var/yp

Questo comando verificherà quali sorgenti sono stati cambiati, crea le nuove mappe ed avvisa ypserv che le mappe sono state sostituite.

11.3. Lunghezza delle voci della mappa

La lunghezza di una voce è limitata a 1024 caratteri dal protocollo NIS. Non è possibile incrementare semplicemente questo valore e ricompilare il sistema. Ogni sistema che usa NIS v2 attende chiavi e dati non più lunghi in dimensione di 1024 byte; se improvvisamente si aumenta il valore di YPMAXRECORD sul client e sul server, si interromperà l'interoperatività con altri sistemi che utilizzano NIS sulla rete. Per lavorare correttamente, si dovrebbe andare da ogni venditore che supporta NIS ed ottenere da loro di fare tutti i cambiamenti allo stesso tempo. Possibilità che non si può avere.

Con glibc 2.1 e successivi questo limite è stato rimosso dall'implementazione di glibc NIS. In questo modo è possibile, sotto Linux, utilizzare voci più lunghe ma solo se non ci sono altri client o server NIS nella rete.

Per permettere la creazione di mappe NIS con una voce più lunga, si deve aggiungere l'opzione --no-limit-check alla chiamata a makedbm in /var/yp/Makefile.

Il risultato dovrebbe apparire come:

DBLOAD = $(YPBINDIR)/makedbm -c -m `$(YPBINDIR)/yphelper --hostname` --no-limit-check

ATTENZIONE: questo interrompe il protocollo NIS e anche se Linux lo supporta, non tutte le applicazioni eseguibili sotto Linux lavorano con questa variazione!

C'è un'altro modo per risolvere questo problema per le voci di /etc/group. L'idea è di Ken Cameron:

1. Interrompere la voce in più di una linea e dare un nome ad ogni
   gruppo lievemente differente.

2. assegnare lo stesso GID per tutte.

3. avere la prima voce con il giusto nome di gruppo e GID.
   Non inserire nessun nome utente in questa.

Succede che partendo dal nome dell'utente, si recupererà
il GID quando il codice lo legge. Poi partendo in altro modo, si ferma
dopo la prima corrispondenza di GID e ne ottiene il nome. È brutto ma
funziona!