File: a2152.html

package info (click to toggle)
appunti-informatica-libera 2001.08.18-2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 27,912 kB
  • ctags: 23,734
  • sloc: makefile: 69
file content (1051 lines) | stat: -rw-r--r-- 73,139 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd">
<HTML LANG="it">
<HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html">
    <META NAME="Generator" CONTENT="Alml">
    <META NAME="Description" CONTENT="GNU/Linux e altro software libero">
    <META NAME="Keywords" CONTENT="Linux, GNU/Linux, Unix, software, software libero, free software">
    <META NAME="Author" CONTENT="Daniele Giacomini &nbsp;&nbsp; &nbsp;daniele&nbsp;@&nbsp;swlibero.org">
    <META NAME="Date" CONTENT="2001.08.18 ">
    <META NAME="Resource-type" LANG="en" CONTENT="Document" >
    <META NAME="Revisit-after" LANG="en" CONTENT="15 days" >
    <META NAME="Robots" CONTENT="ALL" >
    <TITLE> Appunti di informatica libera</TITLE>
    <LINK REL="stylesheet" TYPE="text/css" HREF="a2.css">
    <LINK REL="Start" TITLE="Start" HREF="a2.html">
    <LINK REL="Prev" TITLE="Previous" HREF="a2151.html">
    <LINK REL="Next" TITLE="Next" HREF="a2153.html">
</HEAD>
<BODY>
<P>
<A HREF="a2153.html">[successivo]</A>
<A HREF="a2151.html">[precedente]</A>
<A HREF="a2.html">[inizio]</A>
<A HREF="a2506.html">[fine]</A>
<A HREF="a21.html">[indice generale]</A>
<A HREF="a26.html">[violazione GPL]</A>
<A HREF="a2504.html">[licenze]</A>
<A HREF="a2505.html">[indice analitico]</A>
<A HREF="a2127.html">[tomo]</A>
<A HREF="a2138.html">[parte]</A>
</P>
<HR>
<DIV>
<H1>Capitolo 116. &nbsp; <A NAME="title1904"></A><A NAME="anchor2294"></A> NIS <A NAME="index10325"></A> <A NAME="index10326"></A> <A NAME="index10327"></A> </H1>

<P>Il NIS, <SUP><A HREF="#footnote1" NAME="footnote-ref1">(1)</A></SUP> o <EM>Network Information Service</EM>, &egrave; un sistema di gestione di dati amministrativi concentrati in una sola fonte, rendendoli disponibili a tutta una rete in modo uniforme.</P>

<P>Questo tipo di servizio &egrave; stato ideato e sviluppato originariamente dalla <A NAME="index10328"></A>Sun Microsystems denominandolo <EM>Yellow Pages</EM> (YP), ma successivamente il nome &egrave; stato cambiato perch&eacute; questo era gi&agrave; un marchio registrato in Gran Bretagna della societ&agrave; telefonica <A NAME="index10329"></A>British Telecom. Questa storia di NIS serve a spiegare il motivo per il quale molti <A NAME="index10330"></A>programmi di servizio che riguardano questa gestione hanno il prefisso <SAMP>yp</SAMP>, oltre al fatto che spesso si parli di &laquo;servizi YP&raquo; invece che di &laquo;servizi NIS&raquo;.</P>

<P>Il NIS &egrave; un meccanismo che si sovrappone alla gestione amministrativa di un sistema Unix tipico, ma questo avviene in un modo non perfettamente integrato. Quando si introduce il NIS, si inserisce un livello di intermediazione tra l'utente e il sistema di amministratore preesistente.</P>

<H2>116.1 &nbsp; <A NAME="title1905"></A><A NAME="anchor2295"></A>
 Concentrazione amministrativa </H2>

<P>Lo scopo del NIS &egrave; quello di concentrare in un solo elaboratore la gestione di una serie di file amministrativi. La tabella <A HREF="a2152.html#anchor2296">116.1</A> elenca alcuni file di configurazione, tipici di un sistema Unix, che possono essere gestiti in questo modo.</P>

<TABLE ID="anchor2296" BORDER="3">

<THEAD>
<TR><TD>File </TD><TD>Descrizione </TD></TR>
</THEAD>

<TBODY>
<TR><TD>/etc/passwd </TD><TD>Informazioni sugli utenti. </TD></TR>
<TR><TD>/etc/group </TD><TD>Gruppi di utenti. </TD></TR>
<TR><TD>/etc/shadow </TD><TD><A NAME="index10331"></A>password shadow (quando gestibili). </TD></TR>
<TR><TD>/etc/aliases </TD><TD>Alias di posta elettronica. </TD></TR>
<TR><TD>/etc/hosts </TD><TD>Traduzione degli indirizzi IP dei <A NAME="index10332"></A>nodi della rete locale. </TD></TR>
<TR><TD>/etc/networks </TD><TD>Traduzione degli indirizzi IP delle sottoreti (locali). </TD></TR>
<TR><TD>/etc/protocols </TD><TD>Nomi e numeri dei protocolli di rete. </TD></TR>
<TR><TD>/etc/rpc </TD><TD>Numeri delle chiamate RPC. </TD></TR>
<TR><TD>/etc/services </TD><TD>Abbinamento dei servizi di rete ai numeri di porta corrispondenti. </TD></TR>
</TBODY>
</TABLE>

<P><EM> Tabella <A HREF="a2152.html#anchor2296">116.1</A>. Elenco di alcuni dei file amministrativi comunemente gestibili attraverso il NIS. </EM></P>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>&Egrave; bene chiarire subito che il supporto alle <A NAME="index10333"></A>password shadow non &egrave; disponibile in tutti i NIS esistenti; inoltre, la natura del NIS rende poco probabile l'utilit&agrave; del loro utilizzo.</P>

</TD></TR>
</TABLE>

<P>La concentrazione amministrativa si attua facendo in modo che le informazioni dei file che interessano siano gestite a partire da un solo <A NAME="index10334"></A>nodo. Generalmente, l'utilit&agrave; del NIS sta nella possibilit&agrave; di amministrare gli utenti da un'unica origine, facendo in modo che questi vengano riconosciuti in tutti gli elaboratori di un certo &laquo;dominio&raquo;, senza dover essere inseriti effettivamente in ognuno di questi.</P>

<P>Gli esempi che si faranno in questo capitolo sono volti principalmente al raggiungimento di questo risultato, concentrando cos&igrave; l'amministrazione dei file <CODE>/etc/passwd</CODE> e <CODE>/etc/group</CODE>.</P>

<H3>116.1.1 &nbsp; <A NAME="title1906"></A><A NAME="anchor2297"></A>
 Mappe NIS </H3>

<P>Il NIS non utilizza i file amministrativi cos&igrave; come sono, ne crea una copia; queste copie sono denominate &laquo;mappe&raquo;. I file di mappa sono in formato DBM, dove si memorizzano solo coppie di dati: chiave-valore. Per questo motivo, a seconda della struttura dei file amministrativi originali, si possono generare pi&ugrave; mappe differenti.</P>

<P>Quando si attiva il NIS, non si possono pi&ugrave; utilizzare i vecchi comandi amministrativi (come <SAMP>passwd</SAMP>, <SAMP>chsh</SAMP>, ecc.), o quantomeno non conviene, perch&eacute; il NIS non si accorge (autonomamente) dei cambiamenti apportati ai file amministrativi tradizionali. Bisogna utilizzare i comandi specifici del NIS, in modo che i cambiamenti siano annotati immediatamente nelle mappe e poi siano propagati nei file amministrativi normali del <A NAME="index10335"></A>servente NIS.</P>

<P>La tabella <A HREF="a2152.html#anchor2298">116.2</A> riporta l'elenco di alcune delle mappe tipiche della gestione NIS. La collocazione di questi file dipende dal dominio NIS, descritto nella sezione seguente, e corrisponde in pratica a <CODE>/var/yp/<VAR>dominio_nis</VAR>/</CODE>.</P>

<TABLE ID="anchor2298" BORDER="3">

<THEAD>
<TR><TD>Mappa </TD><TD>Descrizione </TD></TR>
</THEAD>

<TBODY>
<TR><TD>passwd.byname </TD><TD>Utenti per nome. </TD></TR>
<TR><TD>passwd.byuid </TD><TD>Utenti per numero UID. </TD></TR>
<TR><TD>group.byname </TD><TD>Gruppi per nome. </TD></TR>
<TR><TD>group.bygid </TD><TD>Gruppi per numero GID. </TD></TR>
<TR><TD>shadow.byname </TD><TD>Utenti per nome (dal file <CODE>/etc/shadow</CODE>). </TD></TR>
<TR><TD>mail.aliases </TD><TD>Alias di posta elettronica. </TD></TR>
<TR><TD>hosts.byname </TD><TD><A NAME="index10336"></A>Nodi per nome. </TD></TR>
<TR><TD>hosts.byaddr </TD><TD><A NAME="index10337"></A>Nodi per indirizzo. </TD></TR>
<TR><TD>networks.byname </TD><TD>Reti locali per nome. </TD></TR>
<TR><TD>networks.byaddr </TD><TD>Reti locali per indirizzo. </TD></TR>
<TR><TD>protocols.byname </TD><TD>Protocolli di rete per nome. </TD></TR>
<TR><TD>protocols.bynumber </TD><TD>Protocolli di rete per numero. </TD></TR>
<TR><TD>rpc.byname </TD><TD>Chiamate RPC per nome. </TD></TR>
<TR><TD>rpc.bynumber </TD><TD>Chiamate RPC per numero. </TD></TR>
<TR><TD>services.byname </TD><TD>Servizi di rete per nome. </TD></TR>
</TBODY>
</TABLE>

<P><EM> Tabella <A HREF="a2152.html#anchor2298">116.2</A>. Elenco di alcune mappe NIS. </EM></P>

<H3>116.1.2 &nbsp; <A NAME="title1907"></A><A NAME="anchor2299"></A>
 Dominio NIS </H3>

<P>Quando si attiva un servizio NIS in un <A NAME="index10338"></A>nodo, in modo che questo renda disponibili le informazioni relative a un gruppo di elaboratori, si deve definire un dominio NIS corrispondente. Questo non ha niente a che fare con i domini utilizzati dal servizio DNS, ma generalmente, anche se potrebbe sovrapporsi perfettamente a un dominio di questo tipo, conviene utilizzare nomi distinti, che non abbiano un nesso logico o intuitivo.</P>

<P>Pi&ugrave; precisamente, &egrave; meglio dire che si stabilisce prima l'estensione del dominio NIS che si vuole creare, quindi si deve &laquo;eleggere&raquo; il <A NAME="index10339"></A>nodo pi&ugrave; adatto a fungere da <A NAME="index10340"></A>servente NIS. Infatti, questo elaboratore deve trovarsi in una posizione adatta nella rete, in modo che sia accessibile facilmente da tutti gli elaboratori del dominio NIS. Oltre a questo &egrave; bene che si tratti di una macchina adeguata all'estensione del dominio: maggiore &egrave; il numero di <A NAME="index10341"></A>clienti, maggiore sar&agrave; la frequenza con cui dovr&agrave; rispondere a richieste del protocollo NIS.</P>

<P>I file di mappa di un <A NAME="index10342"></A>servente NIS sono raggruppati distintamente per dominio, nella directory <CODE>/var/yp/<VAR>dominio_nis</VAR>/</CODE>.</P>

<H3>116.1.3 &nbsp; <A NAME="title1908"></A><A NAME="anchor2300"></A>
 <A NAME="index10343"></A>Servente principale e <A NAME="index10344"></A>serventi secondari </H3>

<P>Finora si &egrave; fatto riferimento a un <A NAME="index10345"></A>servente NIS unico per tutto il suo dominio di competenza. Quando si attiva un servizio di questo tipo, tutti gli elaboratori <A NAME="index10346"></A>clienti di questo dominio dipendono completamente dal <A NAME="index10347"></A>servente per tutte quelle informazioni che sono state concentrate sotto la sua amministrazione. Se l'elaboratore che offre questo servizio dovesse venire a mancare per qualsiasi motivo, come un guasto, tutti i suoi <A NAME="index10348"></A>clienti sarebbero in grave difficolt&agrave;.</P>

<P>Per risolvere il problema, si possono predisporre dei <A NAME="index10349"></A>serventi NIS secondari, o <EM>slave</EM>, che riproducono le informazioni del <A NAME="index10350"></A>servente principale, o <EM>master</EM>.</P>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>Il motivo per il quale si utilizza il servizio NIS &egrave; quello di uniformare e concentrare la gestione di informazioni di un gran numero di elaboratori, altrimenti non sarebbe giustificato l'impegno necessario alla sua attivazione. Di conseguenza, &egrave; praticamente obbligatorio attivare dei <A NAME="index10351"></A>serventi secondari, sia per attenuare i rischi di blocco del sistema globale, sia per ridurre il carico di richieste NIS su un'unica macchina.</P>

</TD></TR>
</TABLE>

<P>La presenza di <A NAME="index10352"></A>serventi secondari impone la creazione di meccanismi automatici per il loro allineamento, generalmente attraverso il sistema <A NAME="index10353"></A>Cron.</P>

<H2>116.2 &nbsp; <A NAME="title1909"></A><A NAME="anchor2301"></A>
 Distinzione dei ruoli tra <A NAME="index10354"></A>servente e <A NAME="index10355"></A>cliente </H2>

<P>Finora &egrave; stato preso in considerazione il compito del <A NAME="index10356"></A>servente NIS, senza valutare i <A NAME="index10357"></A>clienti, ma all'inizio la distinzione dei compiti pu&ograve; sembrare confusa.</P>

<P>Il <A NAME="index10358"></A>cliente &egrave; un programma demone che si occupa di fornire al sistema in cui &egrave; in funzione le informazioni che altrimenti verrebbero ottenute dai soliti file di configurazione. La situazione tipica &egrave; quella della <A NAME="index10359"></A>procedura di accesso: se il nome dell'utente non viene trovato nel file <CODE>/etc/passwd</CODE> locale, il <A NAME="index10360"></A>cliente NIS cerca di ottenerlo dal <A NAME="index10361"></A>servente NIS.</P>

<P>In pratica, le funzionalit&agrave; di <A NAME="index10362"></A>servente e <A NAME="index10363"></A>cliente sono indipendenti: ci possono essere elaboratori che fungono da <A NAME="index10364"></A>serventi, altri che utilizzano il programma <A NAME="index10365"></A>cliente per accedere alle informazioni e altri ancora che fanno entrambe le cose.</P>

<P>Se si pensa che il <A NAME="index10366"></A>servente NIS principale deve contenere tutte le informazioni che vengono condivise dai programmi <A NAME="index10367"></A>clienti presso gli altri elaboratori, potrebbe sembrare inutile l'attivazione del programma <A NAME="index10368"></A>cliente nello stesso <A NAME="index10369"></A>servente. Tuttavia, le cose cambiano quando si considerano i <A NAME="index10370"></A>serventi secondari. Questi non dispongono delle informazioni che ha l'elaboratore corrispondente al <A NAME="index10371"></A>servente principale; per ottenerle occorre attivare il <A NAME="index10372"></A>cliente NIS in modo che si possa mettere in comunicazione con il <A NAME="index10373"></A>servente principale.</P>

<P>Nel sistema NIS cos&igrave; strutturato, i <A NAME="index10374"></A>clienti cercano le informazioni, riferite al loro dominio, dal <A NAME="index10375"></A>servente che risponde pi&ugrave; rapidamente. Ci&ograve; viene determinato generalmente attraverso una richiesta circolare (<A NAME="index10376"></A>broadcast). Questo, tra le altre cose, &egrave; uno dei punti deboli del NIS: dal momento che qualunque elaboratore pu&ograve; rispondere a una chiamata circolare, chiunque &egrave; in grado di intromettersi per cercare di catturare delle informazioni.</P>

<H3>116.2.1 &nbsp; <A NAME="title1910"></A><A NAME="anchor2302"></A>
 Propagazione delle informazioni </H3>

<P>Quando si deve intervenire per modificare qualche informazione di quelle che sono condivise attraverso il NIS, si presentano situazioni differenti a seconda delle circostanze. Queste si traducono in modalit&agrave; diverse di propagazione di queste modifiche nell'intero sistema NIS. Si distinguono due situazioni fondamentali:</P>

<UL>

<LI>

<P>la modifica di un'informazione nell'elaboratore di origine (il <A NAME="index10377"></A>servente principale) sui dati di partenza;</P>
</LI>

<LI>

<P>la modifica di un'informazione attraverso gli strumenti offerti dal sistema NIS.</P>
</LI>
</UL>

<P>Nel primo caso le azioni da compiere sono:</P>

<OL>

<LI>

<P>aggiornare le mappe del <A NAME="index10378"></A>servente principale;</P>
</LI>

<LI>

<P>aggiornare le mappe dei <A NAME="index10379"></A>serventi secondari.</P>
</LI>
</OL>

<P>Nel secondo caso le azioni da compiere sono:</P>

<OL>

<LI>

<P>aggiornare i file di configurazione corrispondenti nel <A NAME="index10380"></A>servente principale</P>
</LI>

<LI>

<P>aggiornare le mappe del <A NAME="index10381"></A>servente principale</P>
</LI>

<LI>

<P>aggiornare le mappe dei <A NAME="index10382"></A>serventi secondari</P>
</LI>
</OL>

<P>Quando si interviene manualmente sui file di configurazione di partenza del <A NAME="index10383"></A>servente principale, per esempio quando si vuole aggiungere o eliminare un utente, si deve poi comandare manualmente l'aggiornamento delle mappe NIS; eventualmente si pu&ograve; pilotare anche l'aggiornamento dei <A NAME="index10384"></A>serventi secondari, attraverso un cosiddetto <EM>push</EM>.</P>

<P>Quando si utilizzano gli strumenti offerti da NIS per modificare la configurazione dei dati condivisi, ci&ograve; pu&ograve; avvenire solo attraverso un <A NAME="index10385"></A>cliente, il quale si occupa di contattare il <A NAME="index10386"></A>servente principale che poi deve provvedere ad aggiornare i file normali e le mappe.</P>

<P>La propagazione delle mappe modificate ai <A NAME="index10387"></A>serventi secondari potrebbe essere un problema. Per questo si utilizza generalmente il sistema <A NAME="index10388"></A>Cron in ogni <A NAME="index10389"></A>servente secondario, in modo da avviare periodicamente il comando necessario a metterli in comunicazione con il <A NAME="index10390"></A>servente principale e verificare cos&igrave; la presenza di aggiornamenti eventuali.</P>

<P>Dalla precisione del funzionamento di questo sistema di propagazione derivano delle conseguenze pratiche che, a prima vista, possono sembrare assurde. Si pu&ograve; immaginare cosa pu&ograve; accadere quando un utente cambia la propria <A NAME="index10391"></A>parola d'ordine da un <A NAME="index10392"></A>cliente NIS. Questo contatta il <A NAME="index10393"></A>servente principale che provvede ad aggiornare le mappe e il file <CODE>/etc/passwd</CODE>. Ma fino a che i <A NAME="index10394"></A>serventi secondari non ricevono l'aggiornamento, i <A NAME="index10395"></A>clienti che li utilizzano continuano a permettere l'accesso con la <A NAME="index10396"></A>parola d'ordine vecchia. Questo pu&ograve; capitare allo stesso elaboratore dal quale &egrave; stata compiuta l'operazione di modifica, se questo utilizza il servizio di un <A NAME="index10397"></A>servente secondario non aggiornato. In queste condizioni, l'utente che ha appena cambiato <A NAME="index10398"></A>parola d'ordine e tenta un altro accesso sulla stessa macchina, potrebbe trovarsi spaesato di fronte al rifiuto che gli si presenta.</P>

<H2>116.3 &nbsp; <A NAME="title1911"></A><A NAME="anchor2303"></A>
 NIS e DNS </H2>

<P>Il NIS permette di distribuire le informazioni contenute nei file <CODE>/etc/hosts</CODE> e <CODE>/etc/networks</CODE>. Questi sono i file di configurazione che permettono di risolvere i nomi dei <A NAME="index10399"></A>nodi della rete locale, quando non si vuole fare uso di un DNS.</P>

<P>Attraverso questa possibilit&agrave; &egrave; poi possibile configurare il file <CODE>/etc/host.conf</CODE> dei vari <A NAME="index10400"></A>clienti NIS, in modo che venga utilizzata questa informazione. Di solito si tratta di indicare una riga come quella seguente:</P>

<PRE>order hosts,nis</PRE>

<P>Tuttavia, nel momento stesso in cui si pensa di volere utilizzare il NIS, si decide che l'organizzazione della rete locale &egrave; un problema serio, pertanto, anche la risoluzione dei nomi della rete deve essere considerato un problema ugualmente serio. In questo senso, diventa un controsenso la pretesa di gestire la risoluzione dei nomi attraverso NIS, quando con poco impegno si pu&ograve; attivare un <A NAME="index10401"></A>servente DNS; al limite si possono unire le due cose:</P>

<PRE>order hosts,bind,nis</PRE>

<H2>116.4 &nbsp; <A NAME="title1912"></A><A NAME="anchor2304"></A>
 NIS, NIS+, NYS e come complicarsi la vita </H2>

<P>Purtroppo non esiste un sistema NIS standard; ne esistono tre: NIS, NIS+ e NYS. Il primo, &egrave; il sistema NIS tradizionale, piuttosto debole dal punto di vista della sicurezza; il secondo &egrave; un sistema pi&ugrave; complesso, con lo scopo di superare i limiti di sicurezza del NIS tradizionale; il terzo &egrave; il sistema che vuole incorporare le funzionalit&agrave; di NIS+ e aggiungere altri vantaggi.</P>

<P>Il sistema NIS tradizionale &egrave; quello pi&ugrave; comune; il NIS+ &egrave; disponibile solo su sistemi <A NAME="index10402"></A>Sun Microsystems; il NYS &egrave; in corso di sviluppo e in linea di massima pu&ograve; essere usato almeno come un NIS normale.</P>

<P>Per ogni tipo di <A NAME="index10403"></A>servente NIS ci deve essere un programma <A NAME="index10404"></A>cliente adatto, configurato conformemente alle particolarit&agrave; del servizio da cui attinge. Oltre a questo, a seconda del tipo di servizio utilizzato ci sono esigenze diverse rispetto alle librerie.</P>

<P>In pratica, a meno di volere approfondire l'argomento studiando dettagliatamente le dipendenze che ci sono tra i vari programmi di ogni tipo di NIS, conviene affidarsi alle scelte fatte dalla propria distribuzione GNU/Linux. Per quanto riguarda il <A NAME="index10405"></A>servente pu&ograve; trattarsi solo di NIS o NYS, in quanto il NIS+ appartiene esclusivamente a <A NAME="index10406"></A>Sun Microsystems; per il <A NAME="index10407"></A>cliente dovrebbe trattarsi di quello adatto a connettersi con il <A NAME="index10408"></A>servente NIS della distribuzione.<SUP><A HREF="#footnote2" NAME="footnote-ref2">(2)</A></SUP><SUP><A HREF="#footnote3" NAME="footnote-ref3">(3)</A></SUP></P>

<H2>116.5 &nbsp; <A NAME="title1913"></A><A NAME="anchor2305"></A>
 RPC </H2>

<P>Il NIS utilizza le chiamate RPC per comunicare. Questo significa che &egrave; necessaria la presenza del <A NAME="index10410"></A>Portmapper in funzione sia nei <A NAME="index10411"></A>nodi <A NAME="index10412"></A>servente che nei <A NAME="index10413"></A>nodi <A NAME="index10414"></A>cliente (si veda eventualmente il capitolo <A HREF="a2140.html#anchor2137">104</A>).</P>

<P>&Egrave; anche importante verificare che i servizi di sincronizzazione, <EM>time service</EM>, siano previsti all'interno del file <CODE>/etc/inetd.conf</CODE>, come mostrato nel pezzo seguente:</P>

<PRE>#
# Time service is used for clock syncronization.
#
time    stream  tcp     nowait  nobody  /usr/sbin/tcpd  in.timed
time    dgram   udp     wait    nobody  /usr/sbin/tcpd  in.timed</PRE>

<P>Se si devono apportare delle modifiche a questo file di configurazione, bisogna ricordare di riavviare il supervisore <A NAME="index10415"></A>Inet (vedere eventualmente il capitolo <A HREF="a2139.html#anchor2130">103</A>).</P>

<H2>116.6 &nbsp; <A NAME="title1914"></A><A NAME="anchor2306"></A>
 Allestimento di un <A NAME="index10416"></A>servente NIS/NYS </H2>

<P>Gli elementi indispensabili di un <A NAME="index10417"></A>servente NIS sono i programmi <SAMP>ypserv</SAMP> e <SAMP>makedbm</SAMP>. Il primo svolge il ruolo di demone in ascolto delle richieste NIS per il dominio di competenza, il secondo &egrave; necessario per convertire i file di configurazione normali in file DBM, cio&egrave; nelle mappe NIS.</P>

<P>Nel caso di un <A NAME="index10418"></A>servente principale &egrave; anche opportuna la presenza di altri due demoni: <SAMP>rpc.passwdd</SAMP> e <SAMP>rpc.ypxfrd</SAMP>. Il primo serve a permettere la modifica delle <A NAME="index10419"></A>parole d'ordine degli utenti attraverso il sistema NIS, il secondo serve a facilitare l'aggiornamento ai <A NAME="index10420"></A>serventi secondari.</P>

<P>La configurazione di <SAMP>ypserv</SAMP> e <SAMP>rpc.ypxfrd</SAMP> pu&ograve; dipendere dal modo in cui sono stati compilati i sorgenti rispettivi. In generale si utilizza il file <CODE>/etc/ypserv.conf</CODE> per definire il comportamento di entrambi i programmi; inoltre <SAMP>ypserv</SAMP> pu&ograve; far uso di <CODE>/var/yp/securenets</CODE> per conoscere gli indirizzi di rete da cui pu&ograve; accettare interrogazioni NIS, oppure pu&ograve; riutilizzare i tradizionali <CODE>/etc/hosts.allow</CODE> e <CODE>/etc/hosts.deny</CODE>. Per saperlo basta usare l'opzione <SAMP>-version</SAMP>, come nell'esempio seguente:</P>

<P class="command"><CODE>#&nbsp;</CODE><STRONG><CODE>ypserv -version</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>ypserv - NYS YP Server version 1.1.7 (with tcp wrapper)</PRE>

<P>L'esempio mostra il risultato di un <SAMP>ypserv</SAMP> NYS compilato con il supporto per l'utilizzo dei file <CODE>/etc/hosts.allow</CODE> e <CODE>/etc/hosts.deny</CODE>, gli stessi che utilizza il <A NAME="index10421"></A>TCP&nbsp;wrapper (<SAMP>tcpd</SAMP>) allo scopo di filtrare gli accessi ai programmi controllati dal supervisore <A NAME="index10422"></A>Inet.</P>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>Prima di poter avviare il <A NAME="index10423"></A>servente <SAMP>ypserv</SAMP>, oltre a provvedere per la sua configurazione, occorre necessariamente che il <A NAME="index10424"></A>Portmapper RPC sia in funzione e che il dominio NIS sia stato definito. In assenza di una sola di queste due condizioni, il programma <SAMP>ypserv</SAMP> non funziona, nel senso che non si riesce ad avviarlo.</P>

</TD></TR>
</TABLE>

<H3>116.6.1 &nbsp; <A NAME="title1915"></A><A NAME="anchor2307"></A>
 Dominio NIS </H3>

<P>Il dominio NIS viene definito attraverso <SAMP>domainname</SAMP>, nel modo seguente:</P>

<P class="syntax"><TT>domainname<VAR>dominio_nis</VAR>
</TT></P>

<P>Quando viene usato senza argomenti, si ottiene il nome del dominio NIS; in questo modo si pu&ograve; controllare se l'impostazione &egrave; corretta. Per esempio, l'impostazione del dominio NIS <SAMP>rost.nis-yp</SAMP> pu&ograve; essere fatta e controllata nel modo seguente:</P>

<P class="command"><CODE>#&nbsp;</CODE><STRONG><CODE>domainname rost.nis-yp</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P class="command"><CODE>#&nbsp;</CODE><STRONG><CODE>domainname</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>rost.nis-yp</PRE>

<P>Mentre l'impostazione del dominio &egrave; di competenza dell'utente <SAMP>root</SAMP>, la verifica pu&ograve; essere fatta anche da un utente comune.</P>

<H3>116.6.2 &nbsp; <A NAME="title1916"></A><A NAME="anchor2308"></A>
 # domainname <A NAME="index10425"></A> <A NAME="index10426"></A> <A NAME="index10427"></A> </H3>

<P class="syntax"><TT>domainname<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG><STRONG><BIG>[</BIG></STRONG><VAR>dominio_nis</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P class="syntax"><TT>nisdomainname<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG><STRONG><BIG>[</BIG></STRONG><VAR>dominio_nis</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P class="syntax"><TT>ypdomainname<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG><STRONG><BIG>[</BIG></STRONG><VAR>dominio_nis</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P><SAMP>domainname</SAMP> (con i suoi alias) permette di modificare o visualizzare il nome del dominio NIS.</P>

<DL>
<DT><STRONG>Alcune opzioni</STRONG></DT>
<DD>

<P class="syntax"><TT>-F<VAR>file</VAR><STRONG><BIG>|</BIG></STRONG>--file<VAR>file</VAR>
</TT></P>

<P>Permette di definire il nome di un file contenente il nome del dominio.</P>
<DT><STRONG>Esempi</STRONG></DT>
<DD>

<P>L'utilizzo tipico di <SAMP>domainname</SAMP> &egrave; riservato agli <A NAME="index10428"></A>script della <A NAME="index10429"></A>procedura di inizializzazione del sistema. Le istruzioni necessarie potrebbero essere organizzate nel modo seguente:</P>

<PRE># Set the NIS domain name
if [ -n "$NISDOMAIN" ]
then
    domainname $NISDOMAIN
else
    domainname ""
fi</PRE>

<P>Oppure in modo alternativo anche come segue, dove il nome del dominio &egrave; contenuto in un file. In tal caso, bisogna fare attenzione al fatto che il file in questione deve essere composto esclusivamente da una riga, altrimenti viene presa in considerazione solo l'ultima, ma se questa &egrave; vuota, il dominio non viene definito.</P>

<PRE># Set the NIS domain name
if [ -f "/etc/nisdomain" ]
then
    domainname -F /etc/nisdomain
else
    domainname ""
fi</PRE>
</DD>
</DL>

<H3>116.6.3 &nbsp; <A NAME="title1917"></A><A NAME="anchor2309"></A>
 Avvio di ypserv <A NAME="index10430"></A> </H3>

<P>In condizioni normali, <SAMP>ypserv</SAMP> non richiede l'uso di argomenti particolari, al massimo si tratta di controllare il file di configurazione <CODE>/etc/ypserv.conf</CODE> e l'eventuale <CODE>/var/yp/securenets</CODE> (prima si deve verificare con l'opzione <SAMP>-version</SAMP> se questo file &egrave; necessario, o se al suo posto si usano i file di configurazione del <A NAME="index10431"></A>TCP&nbsp;wrapper). In ogni caso, &egrave; importante che la directory <CODE>/var/yp/</CODE> sia stata creata (al suo interno si dovrebbe trovare un <A NAME="index10432"></A>file-make, ma questo verr&agrave; mostrato in seguito).</P>

<P class="command"><CODE>#&nbsp;</CODE><STRONG><CODE>ypserv</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P>Se tutto va bene, il programma si avvia <A NAME="index10433"></A>sullo sfondo e si disassocia dalla <A NAME="index10434"></A>shell, diventando un processo figlio di quello iniziale (<A NAME="index10435"></A>Init).</P>

<P class="command"><CODE>#&nbsp;</CODE><STRONG><CODE>pstree</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>init-+-...
     |-portmap
     |-...
     `-ypserv</PRE>

<P>Se il <A NAME="index10436"></A>Portmapper RPC non fosse attivo, oppure se non fosse stato definito il dominio NIS, l'avvio di <SAMP>ypserv</SAMP> non dovrebbe riuscire. Eventualmente, si pu&ograve; verificare il funzionamento del <A NAME="index10437"></A>Portmapper stesso, attraverso il comando seguente:</P>

<P class="command"><CODE>#&nbsp;</CODE><STRONG><CODE>rpcinfo -p localhost</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>   program vers proto   port
    100000    2   tcp    111  rpcbind
    100000    2   udp    111  rpcbind
...</PRE>

<P>Le righe che si vedono dall'esempio mostrato sono la dichiarazione esplicita del funzionamento del <A NAME="index10438"></A>Portmapper. Per verificare espressamente la connessione con <SAMP>ypserv</SAMP>, si pu&ograve; usare il comando seguente:</P>

<P class="command"><CODE>#&nbsp;</CODE><STRONG><CODE>rpcinfo -u localhost ypserv</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>program 100004 version 2 ready and waiting</PRE>

<H3>116.6.4 &nbsp; <A NAME="title1918"></A><A NAME="anchor2310"></A>
 # ypserv (NYS) <A NAME="index10439"></A> </H3>

<P class="syntax"><TT>ypserv<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P><SAMP>ypserv</SAMP> &egrave; il demone che si occupa di servire un dominio NIS con le informazioni definite dalle mappe relative. <SAMP>ypserv</SAMP> accetta alcune opzioni nella riga di comando, ma viene configurato fondamentalmente attraverso il file <CODE>/etc/ypserv.conf</CODE>. Per il suo funzionamento corretto &egrave; necessario che il sistema RPC sia funzionante, che sia stato definito il dominio NIS e che la directory <CODE>/var/yp/</CODE> sia stata predisposta.</P>

<DL>
<DT><STRONG>Alcune opzioni</STRONG></DT>
<DD>

<P class="syntax"><TT>-d<STRONG><BIG>[</BIG></STRONG><VAR>percorso_yp</VAR><STRONG><BIG>]</BIG></STRONG><STRONG><BIG>|</BIG></STRONG>-debug<STRONG><BIG>[</BIG></STRONG><VAR>percorso_yp</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Utilizzando questa opzione si fa in modo che <SAMP>ypserv</SAMP> funzioni in modalit&agrave; diagnostica. Per questo, invece di passare <A NAME="index10440"></A>sullo sfondo, continua a funzionare occupando il terminale dal quale &egrave; stato avviato, emettendo informazioni particolareggiate su ci&ograve; che avviene attraverso lo <A NAME="index10441"></A>standard error. Eventualmente si pu&ograve; indicare un percorso come argomento dell'opzione, intendendo fare in modo che <SAMP>ypserv</SAMP> utilizzi le mappe contenute a partire da quella directory, invece di quelle che si trovano a partire da <CODE>/var/yp/</CODE>.</P>

<P class="syntax"><TT>-b<STRONG><BIG>|</BIG></STRONG>-dns
</TT></P>

<P>Specifica che se un <A NAME="index10442"></A>nodo non viene identificato diversamente, si deve utilizzare il servizio DNS.</P>

<P class="syntax"><TT>-v<STRONG><BIG>|</BIG></STRONG>-version
</TT></P>

<P>Visualizza i dati riferiti alla particolare versione di <SAMP>ypserv</SAMP>. Questa indicazione &egrave; molto importante, soprattutto per sapere quali file vengono utilizzati per controllare gli indirizzi che possono accedere al servizio.</P>
<DT><STRONG>Esempi</STRONG></DT>
<DD>

<P><SAMP>ypserv</SAMP>, quando tutto &egrave; configurato correttamente, viene avviato dalla <A NAME="index10443"></A>procedura di inizializzazione del sistema, attraverso uno dei suoi <A NAME="index10444"></A>script. L'esempio che segue rappresenta un modo semplice per ottenere questo, dove la variabile di ambiente <SAMP>NISDOMAIN</SAMP> viene usata per contenere il dominio NIS; se manca questa variabile non ha senso avviare il <A NAME="index10445"></A>servente NIS.</P>

<PRE>if [ -n "$NISDOMAIN" ]
then
    if [ -f /usr/sbin/ypserv ]
    then
        /usr/sbin/ypserv
        echo ypserv
    fi
fi</PRE>

<P>Quello mostrato &egrave; solo uno dei tanti modi; in generale bisogna ricordare che si pu&ograve; avviare il servizio NIS solo dopo aver avviato il <A NAME="index10446"></A>Portmapper.</P>

<P>Nelle distribuzioni pi&ugrave; accurate, &egrave; normale trovare uno <A NAME="index10447"></A>script apposito che permette di avviare e di interrompere l'attivit&agrave; del <A NAME="index10448"></A>servente NIS, assieme a tutto quello di cui potrebbe avere bisogno. Questo genere di <A NAME="index10449"></A>script pu&ograve; trovarsi nelle directory <CODE>/etc/rc.d/init.d/</CODE>, <CODE>/etc/init.d/</CODE> e altre possibili.</P>
</DD>
</DL>

<H3>116.6.5 &nbsp; <A NAME="title1919"></A><A NAME="anchor2311"></A>
 /etc/ypserv.conf <A NAME="index10450"></A> <A NAME="index10451"></A> </H3>

<P>La configurazione di <CODE>/etc/ypserv.conf</CODE> riguarda il funzionamento di <SAMP>ypserv</SAMP> e <SAMP>rpc.ypxfrd</SAMP>. Ogni volta che si fanno dei cambiamenti a questa configurazione occorre riavviare questi demoni o inviare loro un segnale <SAMP>SIGHUP</SAMP>.</P>

<P>L'impostazione di questo file pu&ograve; essere anche molto complicata. In linea di massima ci si pu&ograve; fidare della configurazione predefinita, o dei suggerimenti posti nei suoi commenti.</P>

<P>Il file pu&ograve; contenere commenti, rappresentati inizialmente dal simbolo <SAMP>#</SAMP>, righe vuote (o bianche), direttive riferite a opzioni e direttive riferite a regole di accesso. Le direttive di opzione hanno la forma seguente, dove la parola chiave <SAMP>yes</SAMP> attiva l'opzione, mentre <SAMP>no</SAMP> la disattiva.</P>

<P class="syntax"><TT><VAR>opzione</VAR>:<STRONG><BIG>[</BIG></STRONG>yes<STRONG><BIG>|</BIG></STRONG>no<STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Le direttive di accesso hanno il formato seguente:</P>

<P class="syntax"><TT><VAR>host</VAR>:<VAR>mappa</VAR>:<VAR>livello_sicurezza</VAR>:<VAR>soppressione</VAR><STRONG><BIG>[</BIG></STRONG>:<VAR>campo</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<DL>
<DT><STRONG>Direttive di opzione</STRONG></DT>
<DD>

<P><SAMP>dns</SAMP></P>

<P>Attivando questa opzione, si fa in modo che il <A NAME="index10452"></A>servente NIS utilizzi il DNS quando gli vengono richieste informazioni sui <A NAME="index10453"></A>nodi che non pu&ograve; risolvere con le mappe <SAMP>hosts.*</SAMP>. Il valore predefinito &egrave; <SAMP>no</SAMP>, e questa opzione pu&ograve; essere attivata anche attraverso la riga di comando di <SAMP>ypserv</SAMP>, <SAMP>-dns</SAMP>, cosa che prende la precedenza su quanto stabilito in questo file di configurazione.</P>

<P><SAMP>sunos_kludge</SAMP></P>

<P>L'attivazione di questa opzione permette di rispondere alle chiamate utilizzate da <SAMP>ypbind</SAMP> di <A NAME="index10454"></A>SunOS 4. Il valore predefinito per questa opzione &egrave; <SAMP>yes</SAMP>, ma la compatibilit&agrave; con <A NAME="index10455"></A>SunOS non &egrave; completa.</P>

<P><SAMP>tryresolve</SAMP></P>

<P>Questa opzione riguarda la risoluzione dei nomi dei <A NAME="index10456"></A>nodi. Il suo valore predefinito &egrave; <SAMP>no</SAMP> e non serve in un sistema GNU/Linux.</P>

<P><SAMP>xfr_check_port</SAMP></P>

<P>Attivando questa opzione, il <A NAME="index10457"></A>servente principale deve utilizzare una porta inferiore al numero 1&nbsp;024. Il valore predefinito &egrave; <SAMP>yes</SAMP>.</P>
<DT><STRONG>Campi delle direttive di accesso</STRONG></DT>
<DD>

<P><VAR>host</VAR></P>

<P>Si tratta di un indirizzo IP che pu&ograve; rappresentare un solo <A NAME="index10458"></A>nodo o un gruppo. La rappresentazione pu&ograve; essere fatta attraverso un indirizzo IP incompleto, o la coppia indirizzo/maschera. Un indirizzo IP incompleto rappresenta tutti gli indirizzi che iniziano in quel modo, per cui, per esempio, &laquo;192.168.&raquo; equivale alla notazione 192.168.0.0/255.255.0.0, dove il secondo indirizzo &egrave; la maschera.</P>

<P><VAR>mappa</VAR></P>

<P>Il nome della mappa, oppure un asterisco per identificare tutte le mappe.</P>

<P><VAR>livello_sicurezza</VAR></P>

<P>Il livello, o il tipo di sicurezza, viene definito attraverso una parola chiave: <SAMP>none</SAMP>, <SAMP>port</SAMP>, <SAMP>deny</SAMP>, <SAMP>des</SAMP>. Il loro significato viene descritto di seguito.</P>

<UL>

<LI>

<P><SAMP>none</SAMP></P>

<P>Concede qualunque accesso.</P>
</LI>

<LI>

<P><SAMP>port</SAMP></P>

<P>Permette di accedere se la porta &egrave; inferiore al numero 1&nbsp;024, ma solo se &egrave; stata specificata la soppressione.</P>
</LI>

<LI>

<P><SAMP>deny</SAMP></P>

<P>Vieta l'accesso alla mappa in questione.</P>
</LI>

<LI>

<P><SAMP>des</SAMP></P>

<P>Richiede l'autenticazione DES. Pu&ograve; funzionare solo se le librerie utilizzate hanno il supporto per questa funzionalit&agrave;.</P>
</LI>
</UL>

<P><VAR>soppressione</VAR></P>

<P>Pu&ograve; contenere solo una tra le parole chiave <SAMP>yes</SAMP> e <SAMP>no</SAMP>. <SAMP>yes</SAMP> attiva la soppressione del campo specificato. La soppressione implica che al suo posto viene collocata una &laquo;x&raquo;, se il controllo della porta rivela che la richiesta proviene da un accesso non privilegiato.</P>

<P><VAR>campo</VAR></P>

<P>Serve a specificare quale campo deve essere soppresso. Quello predefinito &egrave; il secondo.</P>
<DT><STRONG>Esempi</STRONG></DT>
<DD>

<P>L'esempio seguente rappresenta una configurazione predefinita di una distribuzione GNU/Linux.</P>

<PRE># Some options for ypserv. This things are all not needed, if
# you have a Linux net.

sunos_kludge: no
tryresolve: no
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 everybody is root and can access ports &lt; 1024 !
*                            : shadow.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</PRE>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P>Si &egrave; gi&agrave; accennato al fatto che i file di configurazione potrebbero essere cercati nella directory <CODE>/usr/etc/</CODE> invece che nella solita <CODE>/etc/</CODE>. Se si avvertono difficolt&agrave;, &egrave; consigliabile di utilizzare un <A NAME="index10459"></A>collegamento simbolico all'interno di <CODE>/usr/etc/</CODE> che punti al file corrispondente nella directory <CODE>/etc/</CODE>.</P>

</TD></TR>
</TABLE>
</DD>
</DL>

<H3>116.6.6 &nbsp; <A NAME="title1920"></A><A NAME="anchor2312"></A>
 /var/yp/securenets <A NAME="index10460"></A> </H3>

<P>Il file <CODE>/var/yp/securenets</CODE> viene usato da <SAMP>ypserv</SAMP> per sapere quali sono gli indirizzi ammessi a eseguire interrogazioni nel sistema NIS. Bisogna ricordare che <SAMP>ypserv</SAMP> potrebbe essere stato compilato per non usare questo file, utilizzando al suo posto <CODE>/etc/hosts.allow</CODE> e <CODE>/etc/hosts.deny</CODE>. Questo lo si determina utilizzando l'opzione <SAMP>-version</SAMP>.</P>

<P>Nel caso in cui <SAMP>ypserv</SAMP> utilizzi questo file, se manca o &egrave; vuoto, vengono consentiti tutti gli accessi in modo indiscriminato. Ogni volta che si modifica il file &egrave; necessario riavviare <SAMP>ypserv</SAMP>, oppure gli si deve inviare un segnale <SAMP>SIGHUP</SAMP>.</P>

<P>A parte i commenti, rappresentati dalle righe che iniziano con il simbolo <SAMP>#</SAMP>, e le righe vuote, questo file &egrave; fatto principalmente per annotare coppie di indirizzi IP, dove il primo &egrave; la maschera e il secondo l'indirizzo della rete a cui si vuole concedere l'accesso. L'esempio seguente &egrave; simile a quello che si trova nella <A NAME="index10461"></A>pagina di manuale <EM>ypserv</EM>(8) e dovrebbe essere sufficiente a comprendere il meccanismo.</P>

<PRE># Consente le connessioni dallo stesso elaboratore locale (&egrave; necessario)
# Equivale a 255.255.255.255 127.0.0.1
# 
host 127.0.0.1
#
#
# Permette le connessioni da tutti gli elaboratori della rete locale
# 192.168.1.0
#
255.255.255.0   192.168.1.0</PRE>

<H3>116.6.7 &nbsp; <A NAME="title1921"></A><A NAME="anchor2313"></A>
 Configurazione e preparazione delle mappe </H3>

<P>Le mappe NIS, come gi&agrave; accennato, sono collocate nella directory <CODE>/var/yp/<VAR>dominio_nis</VAR>/</CODE>. I file delle mappe esistenti, per il solo fatto di esserci, definiscono implicitamente quali siano i dati amministrativi che vengono gestiti in quel dominio NIS particolare. La loro creazione e il loro aggiornamento, avvengono attraverso un <A NAME="index10462"></A>file-make che si trova nella directory <CODE>/var/yp/</CODE> e che generalmente viene utilizzato attraverso uno <A NAME="index10463"></A>script. Il problema, semmai, sta nella necessit&agrave; di modificare tale <A NAME="index10464"></A>file-make per definire quali mappe debbano essere costruite.</P>

<P>In linea di principio <STRONG>non</STRONG> &egrave; conveniente lasciare le cose come sono. Il NIS &egrave; un sistema troppo complesso perch&eacute; un principiante possa permettersi di attivare subito la gestione completa di tutte le informazioni amministrative. Nell'esempio che segue viene mostrata una parte del <A NAME="index10465"></A>file-make fornito con una particolare distribuzione GNU/Linux (non importa quale), modificato in modo da gestire esclusivamente le informazioni sugli utenti e i gruppi, senza <A NAME="index10466"></A>password shadow. &Egrave; bene ribadire che questo <A NAME="index10467"></A>file-make &egrave; solo un esempio, come guida per la modifica di quello che si trova con la propria distribuzione.</P>

<PRE># This Makefile should only be run on the NIS master server of a domain.

#...

# If this machine is an NIS master, comment out this next line so
# that changes to the NIS maps can be propagated to the slave servers.
# (By default we assume that we are only serving a small domain with
# only one server.)
#
#NOPUSH = "True"

#...

# If you don't want some of these maps built, feel free to comment
# them out from this list.
# Note that we don't build the ethers or bootparams maps by default
# since /etc/ethers and /etc/bootparams are not likely to be present
# on all systems.
#

all:  passwd group ypservers

##all:  passwd hosts group netid networks protocols rpc services netgrp \
##       mail shadow ypservers publickey ethers # amd.home auto.master
###        auto.home bootparams

ethers:    ethers.byname ethers.byaddr
hosts:     hosts.byname hosts.byaddr
networks:  networks.byaddr networks.byname
protocols: protocols.bynumber protocols.byname
rpc:       rpc.byname rpc.bynumber
services:  services.byname
passwd:    passwd.byname passwd.byuid
group:     group.byname group.bygid
shadow:    shadow.byname
netid:     netid.byname
netgrp:    netgroup netgroup.byhost netgroup.byuser
publickey: publickey.byname
mail:      mail.aliases

#...</PRE>

<P>Nella prima parte viene definito, attraverso una variabile, se il <A NAME="index10468"></A>servente deve occuparsi di spedire gli aggiornamenti (<EM>push</EM>) ai <A NAME="index10469"></A>serventi secondari. In questo caso, commentando l'assegnamento della variabile <SAMP>NOPUSH</SAMP> si ottiene di mantenere attivo questo aggiornamento.<SUP><A HREF="#footnote4" NAME="footnote-ref4">(4)</A></SUP></P>

<P>Pi&ugrave; avanti, l'obiettivo <SAMP>all</SAMP> permette di definire quali mappe costruire. Dall'esempio si pu&ograve; vedere ci&ograve; che veniva proposto, commentato, e quello che serve per generare esclusivamente le mappe abbinate ai file <CODE>/etc/passwd</CODE> e <CODE>/etc/group</CODE>. Il nome <SAMP>ypservers</SAMP> si riferisce al file <CODE>/var/yp/ypservers</CODE>, che viene utilizzato per contenere l'elenco dei <A NAME="index10471"></A>serventi (principale e secondari) competenti per il dominio (verr&agrave; chiarito in seguito).</P>

<P>Una volta predisposto il <A NAME="index10472"></A>file-make, si pu&ograve; usare il programma <SAMP>make</SAMP>, senza argomenti, oppure si pu&ograve; utilizzare un comando specifico (&egrave; la scelta pi&ugrave; elegante, mentre <SAMP>make</SAMP> &egrave; la scelta pi&ugrave; semplice quando si raggiunge una certa dimestichezza con il sistema).</P>

<P class="command"><CODE>#&nbsp;</CODE><STRONG><CODE>/usr/lib/yp/ypinit -m</CODE></STRONG></P>

<P>Il vero vantaggio nell'utilizzo di questo programma (che poi &egrave; in realt&agrave; uno <A NAME="index10473"></A>script), sta nel fatto che provvede a costruire al volo il file <CODE>/var/yp/servers</CODE>, con l'elenco dei <A NAME="index10474"></A>serventi competenti per il dominio che si sta predisponendo.</P>

<PRE>At this point, we have to construct a list of the hosts which will run NIS
servers.  dinkel.brot.dg is in the list of NIS server hosts.
Please continue to add the names for the other hosts, one per line.
When you are done with the list, type a &lt;control D&gt;.
        next host to add:  dinkel.brot.dg
        next host to add:   </PRE>

<P>Questa operazione va condotta dall'elaboratore che deve svolgere il ruolo di <A NAME="index10475"></A>servente principale, di conseguenza, il suo indirizzo deve apparire per primo. Supponendo di avere un secondo elaboratore da utilizzare come <A NAME="index10476"></A>servente secondario, si pu&ograve; aggiungere il suo nome e quindi terminare con la combinazione [<KBD>Ctrl+d</KBD>].</P>

<P class="command"><CODE>next host to add:&nbsp;</CODE><STRONG><CODE>roggen.brot.dg</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P class="command"><CODE>next host to add: </CODE>[<KBD>Ctrl+d</KBD>]</P>

<PRE>The current list of NIS servers looks like this:

dinkel.brot.dg
roggen.brot.dg

Is this correct?  [y/n: y]      </PRE>

<P class="command">[<KBD>Invio</KBD>]</P>

<PRE>We need some  minutes to build the databases...
Building /var/yp/rost.nis-yp/ypservers...
Running /var/yp/Makefile...
NIS Map update started on Sun May 31 23:00:14 CEST 1998
make[1]: Entering directory `/var/yp/rost.nis-yp'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
make[1]: Leaving directory `/var/yp/rost.nis-yp'
NIS Map update completed. </PRE>

<P>Questo &egrave; il tipo di risultato che si pu&ograve; osservare quando tutto procede regolarmente. Se non si utilizza lo <A NAME="index10477"></A>script <SAMP>ypinit</SAMP>, si salta la predisposizione del file <CODE>/var/yp/rost.nis-yp/ypservers</CODE>, che per&ograve; potrebbe essere gi&agrave; stato ottenuto da un'esecuzione precedente di <SAMP>ypinit</SAMP>. In pratica, lo <A NAME="index10478"></A>script <SAMP>ypinit</SAMP> va utilizzato convenientemente la prima volta che si allestisce il <A NAME="index10479"></A>servente, mentre le altre volte &egrave; sufficiente utilizzare solo <SAMP>make</SAMP> dalla directory <CODE>/var/yp/</CODE>.</P>

<H3>116.6.8 &nbsp; <A NAME="title1922"></A><A NAME="anchor2314"></A>
 # rpc.yppasswdd <A NAME="index10480"></A> </H3>

<P class="syntax"><TT>rpc.yppasswdd<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Il demone <SAMP>rpc.yppasswdd</SAMP> deve essere utilizzato solo nel <A NAME="index10481"></A>servente principale e la sua presenza permette agli utenti di cambiare la <A NAME="index10482"></A>parola d'ordine di accesso attraverso il programma <SAMP>yppasswd</SAMP>.</P>

<P>Le opzioni disponibili dipendono molto dalla versione di questo programma e dal modo con cui &egrave; stato compilato. &Egrave; da questo programma che dipende anche la possibilit&agrave; o meno di utilizzare <SAMP>ypchsh</SAMP> e <SAMP>ypchfn</SAMP>. In generale, utilizzandolo senza opzioni particolari, &egrave; possibile solo la modifica della <A NAME="index10483"></A>parola d'ordine.</P>

<H2>116.7 &nbsp; <A NAME="title1923"></A><A NAME="anchor2315"></A>
 Predisposizione del <A NAME="index10484"></A>servente secondario </H2>

<P>I <A NAME="index10485"></A>serventi secondari, ammesso che se ne vogliano avere, devono poter comunicare con il <A NAME="index10486"></A>servente principale, ma naturalmente ci&ograve; richiede implicitamente che questi, oltre che <A NAME="index10487"></A>serventi secondari, siano anche dei <A NAME="index10488"></A>clienti. Pi&ugrave; avanti verr&agrave; spiegato come predisporre un <A NAME="index10489"></A>cliente NIS; per il momento &egrave; bene affrontare ugualmente il problema, per mantenere mentalmente il collegamento con quanto gi&agrave; trattato sul <A NAME="index10490"></A>servente principale.</P>

<P>Un <A NAME="index10491"></A>servente secondario richiede le stesse cose del <A NAME="index10492"></A>servente principale, a eccezione del demone <SAMP>rpc.yppasswdd</SAMP> che nel <A NAME="index10493"></A>servente secondario non ha ragione di esistere. Questo significa che:</P>

<UL>

<LI>

<P>si deve impostare il dominio NIS;</P>
</LI>

<LI>

<P>si deve configurare <SAMP>ypserv</SAMP> attraverso <CODE>/etc/ypserv.conf</CODE> e <CODE>/var/yp/securenets</CODE>, oppure gli altri file del <A NAME="index10494"></A>TCP&nbsp;wrapper.</P>
</LI>
</UL>

<P>Si &egrave; gi&agrave; accennato al fatto che il <A NAME="index10495"></A>servente secondario deve avere il <A NAME="index10496"></A>cliente NIS in funzione, ma la differenza pi&ugrave; interessante sta nell'assenza del <A NAME="index10497"></A>file-make nella directory <CODE>/var/yp/</CODE>. Naturalmente, il <A NAME="index10498"></A>file-make pu&ograve; anche esserci, ma non deve essere preso in considerazione.</P>

<H3>116.7.1 &nbsp; <A NAME="title1924"></A><A NAME="anchor2316"></A>
 Riproduzione delle mappe nel <A NAME="index10499"></A>servente secondario </H3>

<P>Anche il <A NAME="index10500"></A>servente secondario, per poter compiere il suo lavoro, deve disporre delle mappe NIS. Queste vengono create, copiandole dal <A NAME="index10501"></A>servente principale, attraverso il comando seguente:</P>

<P class="syntax"><TT>/usr/lib/yp/ypinit-s<VAR>servente_NIS_principale</VAR>
</TT></P>

<P>In pratica, si avvia <SAMP>ypinit</SAMP> con l'opzione <SAMP>-s</SAMP>, indicando il nome dell'elaboratore che ospita il <A NAME="index10502"></A>servente principale. Per esempio, se il <A NAME="index10503"></A>servente principale &egrave; <CODE>dinkel.brot.dg</CODE>, il comando corretto &egrave; il seguente:</P>

<P class="command"><CODE>#&nbsp;</CODE><STRONG><CODE>/usr/lib/yp/ypinit -s dinkel.brot.dg</CODE></STRONG></P>

<P>Perch&eacute; l'operazione funzioni correttamente, occorre che il <A NAME="index10504"></A>cliente NIS sottostante sia configurato e funzionante. In pratica, prima di utilizzare <SAMP>ypinit</SAMP>, si pu&ograve; verificare che sia tutto in ordine con il comando seguente:</P>

<P class="command"><CODE>#&nbsp;</CODE><STRONG><CODE>ypwhich -m</CODE></STRONG></P>

<P>Questo deve restituire il nome del <A NAME="index10505"></A>servente principale.</P>

<H3>116.7.2 &nbsp; <A NAME="title1925"></A><A NAME="anchor2317"></A>
 Sincronizzazione </H3>

<P>La presenza di <A NAME="index10506"></A>serventi secondari introduce nel sistema NIS dei problemi di sincronizzazione di questi con il <A NAME="index10507"></A>servente principale. Oltre a tutto, lo stesso procedimento di sincronizzazione accresce i problemi di sicurezza, dal momento che periodicamente viaggiano informazioni delicate nella rete.</P>

<P>Ci sono tre modi per sincronizzare i <A NAME="index10508"></A>serventi secondari, ma non tutti funzionano sempre, a causa degli accorgimenti utilizzati per ridurre i problemi di sicurezza.</P>

<OL>

<LI>

<P>Quando il <A NAME="index10509"></A>servente principale viene aggiornato, dovrebbe essere in grado di inviare ai <A NAME="index10510"></A>serventi secondari le modifiche alle mappe (<EM>push</EM>). Questa operazione non funziona se i <A NAME="index10511"></A>serventi secondari non sono in ascolto in quel momento, inoltre non funziona anche in altre circostanze, sempre per motivi di sicurezza.</P>
</LI>

<LI>

<P>I <A NAME="index10512"></A>serventi secondari possono comunicare periodicamente con il <A NAME="index10513"></A>servente principale per verificare la presenza di aggiornamenti delle mappe. Questa operazione richiede nel <A NAME="index10514"></A>servente principale la presenza in funzione del demone <SAMP>rpc.ypxfrd</SAMP>.</P>
</LI>

<LI>

<P>In ultima analisi, i <A NAME="index10515"></A>serventi secondari si aggiornano con il comando <SAMP>ypinit -s <VAR>servente_principale</VAR></SAMP>.</P>
</LI>
</OL>

<P>Per quanto riguarda il secondo punto, il NIS offre generalmente tre <A NAME="index10516"></A>script predisposti opportunamente per eseguire i compiti di aggiornamento. Si tratta di: <SAMP>ypxfr_1perhour</SAMP>, <SAMP>ypxfr_1perday</SAMP> e <SAMP>ypxfr_2perday</SAMP>. Questi si trovano nella directory <CODE>/usr/lib/yp/</CODE> e sono pensati per essere inclusi in un file <A NAME="index10517"></A>crontab, come nell'esempio seguente che rappresenta precisamente il file <CODE>/etc/crontab</CODE>.</P>

<PRE>20 *    * * * root /usr/lib/yp/ypxfr_1perhour
40 6    * * * root /usr/lib/yp/ypxfr_1perday
55 6,18 * * * root /usr/lib/yp/ypxfr_2perday</PRE>

<P>I diversi <A NAME="index10518"></A>script si occupano di trasferire mappe differenti. In particolare, quello eseguito ogni ora &egrave; predisposto per trasferire le informazioni sugli utenti (la cosa pi&ugrave; urgente).</P>

<P>Dal momento che non si pu&ograve; fare affidamento sul sistema di aggiornamento pilotato dal <A NAME="index10519"></A>servente principale (quello del primo punto), se per qualche motivo l'aggiornamento a mezzo di <SAMP>ypxfr</SAMP> non funziona, occorre ripiegare necessariamente sull'uso periodico di <SAMP>ypinit&nbsp;-s</SAMP>, eventualmente collocando anch'esso in un file <A NAME="index10520"></A>crontab.</P>

<H3>116.7.3 &nbsp; <A NAME="title1926"></A><A NAME="anchor2318"></A>
 # rpc.ypxfrd <A NAME="index10521"></A> <A NAME="index10522"></A> </H3>

<P class="syntax"><TT>rpc.ypxfrd<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Il demone <SAMP>rpc.ypxfrd</SAMP> viene utilizzato solo nel <A NAME="index10523"></A>servente principale per facilitare l'aggiornamento delle mappe nei <A NAME="index10524"></A>serventi secondari. La sua presenza non &egrave; indispensabile, ma &egrave; utile per accelerare il processo di aggiornamento.</P>

<P>Generalmente pu&ograve; essere utilizzato senza argomenti e dovrebbe essere avviato dalla <A NAME="index10525"></A>procedura di inizializzazione del sistema.</P>

<H2>116.8 &nbsp; <A NAME="title1927"></A><A NAME="anchor2319"></A>
 <A NAME="index10526"></A>Cliente NIS e NYS </H2>

<P>Gli elaboratori che devono condividere le informazioni amministrate con il NIS, devono utilizzare il <A NAME="index10527"></A>cliente <SAMP>ypbind</SAMP>, configurato opportunamente. In tal modo, su tali elaboratori, invece di utilizzare le informazioni amministrative locali, verranno usate quelle concentrate dal NIS.</P>

<P>Quando si utilizza precisamente NYS, i servizi svolti da <SAMP>ypbind</SAMP> potrebbero essere forniti direttamente dalle librerie del sistema. Tuttavia, anche in questa circostanza, alcuni programmi come <SAMP>ypwhich</SAMP> e <SAMP>ypcat</SAMP> continuano a richiedere la presenza di <SAMP>ypbind</SAMP>.</P>

<P>La configurazione di <SAMP>ypbind</SAMP> e anche quella di NYS (con le sue librerie), avviene attraverso i file <CODE>/etc/yp.conf</CODE> e <CODE>/etc/nsswitch.conf</CODE>. Il primo serve a definire come raggiungere i <A NAME="index10528"></A>serventi; il secondo definisce l'ordine di utilizzo dei servizi (<EM>Name Service Switch</EM>).</P>

<P>Come nel caso dei <A NAME="index10529"></A>serventi, anche i <A NAME="index10530"></A>clienti richiedono la definizione del dominio NIS, attraverso <SAMP>domainname</SAMP>. Se il dominio non viene predisposto <SAMP>ypbind</SAMP> non pu&ograve; funzionare.</P>

<P>Anche il <A NAME="index10531"></A>cliente richiede la presenza della directory <CODE>/var/yp/</CODE>. Al suo interno viene creata la directory <CODE>binding/</CODE>.</P>

<P>Anche il <A NAME="index10532"></A>cliente richiede l'attivazione del <A NAME="index10533"></A>Portmapper RPC.</P>

<H3>116.8.1 &nbsp; <A NAME="title1928"></A><A NAME="anchor2320"></A>
 Gli utenti </H3>

<P>A seconda delle caratteristiche particolari del <A NAME="index10534"></A>cliente, sono possibili delle configurazioni speciali per ci&ograve; che riguarda l'accesso da parte degli utenti. Quando la loro gestione &egrave; compito del NIS, si pu&ograve; configurare il <A NAME="index10535"></A>cliente in modo da definire una graduatoria nella ricerca dei dati che identificano l'utente al momento dell'accesso. Di solito si cerca prima l'utente nel file <CODE>/etc/passwd</CODE> locale, quindi si prova con il NIS.</P>

<P>A parte questo particolare abbastanza semplice, si pu&ograve; porre il problema di voler concedere l'accesso su un certo elaboratore solo ad alcuni utenti definiti attraverso il NIS, oppure, pi&ugrave; semplicemente, si pu&ograve; volere escludere l'accesso da parte di qualcuno. Per ottenere questo occorre intervenire sul file <CODE>/etc/passwd</CODE> utilizzando <A NAME="index10536"></A>record con notazioni particolari; cosa che qui non viene descritta.</P>

<P>In generale, per fare in modo che gli utenti NIS del dominio a cui si fa riferimento possano accedere da un certo <A NAME="index10537"></A>cliente, occorre aggiungere nel file <CODE>/etc/passwd</CODE> il <A NAME="index10538"></A>record seguente:</P>

<PRE>+::::::</PRE>

<P>Questo viene interpretato come il punto in cui si vogliono inserire virtualmente gli utenti NIS. &Egrave; probabile che, per fare in modo che vengano utilizzati prima i dati degli utenti gi&agrave; registrati in quel <A NAME="index10539"></A>cliente, questo <A NAME="index10540"></A>record debba essere collocato alla fine del file.</P>

<P>Quando si usa NYS, non dovrebbe essere necessario aggiungere questa indicazione; tuttavia, se c'&egrave; non pu&ograve; creare danno.</P>

<H3>116.8.2 &nbsp; <A NAME="title1929"></A><A NAME="anchor2321"></A>
 # ypbind <A NAME="index10541"></A> </H3>

<P class="syntax"><TT>ypbind<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P><SAMP>ypbind</SAMP> &egrave; un demone per l'attivazione dell'accesso alle informazioni fornite da un <A NAME="index10542"></A>servente NIS; &egrave; in pratica il <A NAME="index10543"></A>cliente NIS. Utilizza la directory <CODE>/var/yp/binding/</CODE> per collocarci all'interno un file contenente le informazioni sul dominio NIS per il quale &egrave; stato avviato.</P>

<P><SAMP>ypbind</SAMP> utilizza la configurazione del file <CODE>/etc/yp.conf</CODE> per trovare i <A NAME="index10544"></A>serventi e quella del file <CODE>/etc/nsswitch.conf</CODE> per stabilire l'ordine di utilizzo delle informazioni amministrative.</P>

<DL>
<DT><STRONG>Alcune opzioni</STRONG></DT>
<DD>

<P class="syntax"><TT>-debug
</TT></P>

<P>Fa in modo che <SAMP>ypbind</SAMP> continui a funzionare <A NAME="index10545"></A>in primo piano, in modo da emettere una serie di informazioni diagnostiche attraverso lo <A NAME="index10546"></A>standard error.</P>
</DD>
</DL>

<H3>116.8.3 &nbsp; <A NAME="title1930"></A><A NAME="anchor2322"></A>
 /etc/yp.conf <A NAME="index10547"></A> <A NAME="index10548"></A> </H3>

<P>Il file <CODE>/etc/yp.conf</CODE> serve a definire come accedere ai <A NAME="index10549"></A>serventi. Viene utilizzato sia da <SAMP>ypbind</SAMP> che dalle librerie NYS.</P>

<TABLE BORDER="3" WIDTH="100%">
<TR><TD>

<P><SAMP>ypbind</SAMP> potrebbe essere in grado di utilizzare solo l'ultima riga di questo file. Di conseguenza, &egrave; bene limitarsi a una sola direttiva.</P>

</TD></TR>
</TABLE>

<P>Il file pu&ograve; contenere tre tipi di direttive, descritte dalle sintassi seguenti.</P>

<P class="syntax"><TT>domain<VAR>dominio_nis</VAR>server<VAR>host</VAR>
</TT></P>

<P class="syntax"><TT>domain<VAR>dominio_nis</VAR>broadcast
</TT></P>

<P class="syntax"><TT>ypserv<VAR>host</VAR>
</TT></P>

<P>La prima definisce che per il dominio NIS indicato si deve interpellare il <A NAME="index10550"></A>servente specificato; la seconda definisce che per il dominio si devono usare delle chiamate circolari a tutta la rete (locale); l'ultima definisce semplicemente un <A NAME="index10551"></A>servente, indipendentemente dal dominio.</P>

<P>Quando si utilizza il sistema della chiamata circolare (<A NAME="index10552"></A>broadcast), si rischia di ricevere la risposta da un possibile <A NAME="index10553"></A>servente fasullo, collocato appositamente per sostituirsi a quelli veri allo scopo di carpire informazioni dai <A NAME="index10554"></A>clienti. Se non si temono attacchi di questo tipo, la chiamata circolare &egrave; il modo migliore per fare in modo che il <A NAME="index10555"></A>cliente sia in grado di scegliersi il <A NAME="index10556"></A>servente (quello che risponde prima).</P>

<P>Il <A NAME="index10557"></A>servente, quando deve essere identificato, pu&ograve; essere indicato per nome o per numero IP. Nel primo caso, &egrave; necessario che il sistema sia in grado di risolvere il nome in modo indipendente dal NIS (evidentemente). In generale, &egrave; conveniente utilizzare l'indirizzo IP per questo scopo.</P>

<P>L'esempio seguente mostra l'unica riga di un file <CODE>/etc/yp.conf</CODE> in cui si stabilisce che per il dominio <SAMP>rost.nis-yp</SAMP> si deve usare la chiamata circolare.</P>

<PRE>domain rost.nis-yp broadcast</PRE>

<H3>116.8.4 &nbsp; <A NAME="title1931"></A><A NAME="anchor2323"></A>
 /etc/nsswitch.conf <A NAME="index10558"></A> <A NAME="index10559"></A> </H3>

<P>Il file <CODE>/etc/nsswitch.conf</CODE> viene usato dal <A NAME="index10560"></A>cliente NIS per determinare l'ordine in cui devono essere richiesti i servizi. La sua configurazione dovrebbe riguardare tutti i tipi di dati amministrativi gestibili con il NIS, anche se di fatto ne sono stati abilitati solo alcuni. In questo modo, la determinazione di cosa gestire con il NIS viene fatta solo nel <A NAME="index10561"></A>servente principale.</P>

<P>Quello che segue &egrave; la configurazione proposta in una particolare distribuzione GNU/Linux. Si pu&ograve; osservare che le informazioni sugli utenti (<SAMP>passwd</SAMP>, <SAMP>shadow</SAMP>, <SAMP>group</SAMP>) sono cercate prima nei file locali, quindi nel servizio NIS.</P>

<PRE>#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
#       nisplus or nis+         Use NIS+ (NIS version 3)
#       nis or yp               Use NIS (NIS version 2), also called YP
#       dns                     Use DNS (Domain Name Service)
#       files                   Use the local files
#       [NOTFOUND=return]       Stop searching if not found so far
#

passwd:     files nisplus nis
shadow:     files nisplus nis
group:      files nisplus nis

hosts:      files nisplus nis dns

services:   nisplus [NOTFOUND=return] files
networks:   nisplus [NOTFOUND=return] files
protocols:  nisplus [NOTFOUND=return] files
rpc:        nisplus [NOTFOUND=return] files
ethers:     nisplus [NOTFOUND=return] files
netmasks:   nisplus [NOTFOUND=return] files     
bootparams: nisplus [NOTFOUND=return] files

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    files nisplus</PRE>

<H3>116.8.5 &nbsp; <A NAME="title1932"></A><A NAME="anchor2324"></A>
 $ ypwhich <A NAME="index10562"></A> </H3>

<P class="syntax"><TT>ypwhich<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P><SAMP>ypwhich</SAMP> permette di conoscere quale sia il <A NAME="index10563"></A>servente NIS utilizzato dal <A NAME="index10564"></A>cliente, quando viene avviato senza opzioni, oppure quale sia precisamente il <A NAME="index10565"></A>servente principale per una certa mappa. Questo programma dipende da <SAMP>ypbind</SAMP>, che cos&igrave; deve essere presente anche se si utilizza il NYS.</P>

<DL>
<DT><STRONG>Alcune opzioni</STRONG></DT>
<DD>

<P class="syntax"><TT>-d<VAR>dominio</VAR>
</TT></P>

<P>Utilizza un dominio differente da quello predefinito. Per usare questa opzione occorre comunque che tale dominio diverso sia stato collegato.</P>

<P class="syntax"><TT>-m<STRONG><BIG>[</BIG></STRONG><VAR>mappa</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Permette di conoscere quale sia il <A NAME="index10566"></A>servente principale per la particolare mappa specificata, o per tutte quelle che vengono raggiunte.</P>
<DT><STRONG>Esempi</STRONG></DT>
<DD>

<P class="command"><CODE>$&nbsp;</CODE><STRONG><CODE>ypwhich</CODE></STRONG></P>

<P>Emette il nome dell'elaboratore che funge da <A NAME="index10567"></A>servente NIS per quel particolare <A NAME="index10568"></A>cliente.</P>

<P class="command"><CODE>$&nbsp;</CODE><STRONG><CODE>ypwhich -m</CODE></STRONG></P>

<P>Emette l'elenco delle mappe gestire dal NIS con i rispettivi <A NAME="index10569"></A>serventi principali competenti.</P>
</DD>
</DL>

<H3>116.8.6 &nbsp; <A NAME="title1933"></A><A NAME="anchor2325"></A>
 $ ypcat <A NAME="index10570"></A> </H3>

<P class="syntax"><TT>ypcat<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG><VAR>mappa</VAR>
</TT></P>

<P><SAMP>ypcat</SAMP> emette il contenuto di una mappa indicata come argomento della riga di comando. Questo programma dipende da <SAMP>ypbind</SAMP>, che cos&igrave; deve essere presente anche se si utilizza il NYS.</P>

<DL>
<DT><STRONG>Alcune opzioni</STRONG></DT>
<DD>

<P class="syntax"><TT>-d<VAR>dominio</VAR>
</TT></P>

<P>Utilizza un dominio differente da quello predefinito. Per usare questa opzione occorre comunque che tale dominio diverso sia stato collegato.</P>
<DT><STRONG>Esempi</STRONG></DT>
<DD>

<P class="command"><CODE>$&nbsp;</CODE><STRONG><CODE>ypcat group.byname</CODE></STRONG></P>

<P>Emette il contenuto della mappa corrispondente all'elenco dei gruppi per nome.</P>
</DD>
</DL>

<H3>116.8.7 &nbsp; <A NAME="title1934"></A><A NAME="anchor2326"></A>
 $ ypmatch <A NAME="index10571"></A> </H3>

<P class="syntax"><TT>ypmatch<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG><VAR>chiave</VAR>...<VAR>mappa</VAR>
</TT></P>

<P><SAMP>ypmatch</SAMP> emette il valori corrispondenti a una o pi&ugrave; chiavi di una mappa. Questo programma dipende da <SAMP>ypbind</SAMP>, che cos&igrave; deve essere presente anche se si utilizza il NYS.</P>

<DL>
<DT><STRONG>Alcune opzioni</STRONG></DT>
<DD>

<P class="syntax"><TT>-d<VAR>dominio</VAR>
</TT></P>

<P>Utilizza un dominio differente da quello predefinito. Per usare questa opzione occorre comunque che tale dominio diverso sia stato collegato.</P>
<DT><STRONG>Esempi</STRONG></DT>
<DD>

<P class="command"><CODE>$&nbsp;</CODE><STRONG><CODE>ypmatch tizio caio passwd.byname</CODE></STRONG></P>

<P>Emette i <A NAME="index10572"></A>record corrispondenti agli utenti <SAMP>tizio</SAMP> e <SAMP>caio</SAMP>.</P>

<P class="command"><CODE>$&nbsp;</CODE><STRONG><CODE>ypmatch 500 passwd.byuid</CODE></STRONG></P>

<P>Emette il <A NAME="index10573"></A>record corrispondente all'utente identificato dal numero UID 500.</P>
</DD>
</DL>

<H3>116.8.8 &nbsp; <A NAME="title1935"></A><A NAME="anchor2327"></A>
 $ yppasswd, ypchsh, ypchfn <A NAME="index10574"></A> <A NAME="index10575"></A> <A NAME="index10576"></A> </H3>

<P class="syntax"><TT>yppasswd<STRONG><BIG>[</BIG></STRONG><VAR>utente</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P class="syntax"><TT>ypchsh<STRONG><BIG>[</BIG></STRONG><VAR>utente</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P class="syntax"><TT>ypchfn<STRONG><BIG>[</BIG></STRONG><VAR>utente</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P><SAMP>yppasswd</SAMP>, <SAMP>ypchsh</SAMP> e <SAMP>ypchfn</SAMP> sono tre alias dello stesso programma. A seconda del nome usato per avviarlo, si intende cambiare la <A NAME="index10577"></A>parola d'ordine, la <A NAME="index10578"></A>shell o le informazioni personali.</P>

<P>Questi comandi si sostituiscono ai soliti <SAMP>passwd</SAMP>, <SAMP>chsh</SAMP> e <SAMP>chfn</SAMP>, che hanno effetto solo localmente, quando si vuole intervenire sulle utenze gestite dal NIS. A questo proposito, &egrave; bene considerare la possibilt&agrave; di fare &laquo;sparire&raquo; i comandi normali, in modo da non creare confusione agli utenti, predisponendo dei <A NAME="index10579"></A>collegamenti simbolici opportuni per fare in modo che <SAMP>passwd</SAMP>, <SAMP>chsh</SAMP> e <SAMP>chfn</SAMP> avviino rispettivamente i corrispondenti <SAMP>yppasswd</SAMP>, <SAMP>ypchsh</SAMP> e <SAMP>ypchfn</SAMP>.</P>

<P>Questi comandi, quando vengono invocati, si mettono in contatto con il <A NAME="index10580"></A>servente principale, nel quale deve essere in funzione il demone <SAMP>rpc.passwdd</SAMP>. &Egrave; da questo demone che dipende la possibilit&agrave; di cambiare questi valori, ma potrebbe capitare che sia abilitata solo la sostituzione delle <A NAME="index10581"></A>parole d'ordine.</P>

<P>Solo l'utente <SAMP>root</SAMP> pu&ograve; indicare il nome di un altro utente attraverso la riga di comando.</P>

<H2>116.9 &nbsp; <A NAME="title1936"></A><A NAME="anchor2328"></A>
 Directory personali </H2>

<P>Quando si gestiscono gli utenti (e i gruppi) attraverso il NIS, si intende permettere a tutti questi utenti di utilizzare indifferentemente tutte le macchine su cui si fa funzionare il <A NAME="index10582"></A>cliente NIS. Per raggiungere questo obiettivo, occorre fare in modo che le rispettive <A NAME="index10583"></A>directory personali (<EM>home</EM>) siano accessibili da qualunque postazione. Evidentemente &egrave; necessario usare uno spazio condiviso in rete, attraverso il protocollo NFS.</P>

<P>Il modo pi&ugrave; semplice potrebbe essere quello di predisporre una partizione apposita in un <A NAME="index10584"></A>servente NFS, montando tale <A NAME="index10585"></A>file&nbsp;system nella directory <CODE>/home/</CODE> di ogni <A NAME="index10586"></A>cliente NIS. Come si pu&ograve; intuire non si tratta di una soluzione ottimale, ma comunque &egrave; qualcosa di pratico, almeno inizialmente.</P>

<P>Il <A NAME="index10587"></A>file&nbsp;system condiviso dovr&agrave; essere accessibile in lettura-scrittura.</P>

<P>La gestione del protocollo NFS &egrave; descritta nel capitolo <A HREF="a2141.html#anchor2142">105</A>.</P>

<H2>116.10 &nbsp; <A NAME="title1937"></A><A NAME="anchor2329"></A>
 Riferimenti </H2>

<UL>

<LI>

<P>Thorsten Kukuk, <EM>The Linux NIS(YP)/NYS/NIS+ HOWTO</EM></P>

<P>&lt;<EM><A HREF="http://www.linux.org/docs/ldp/howto/HOWTO-INDEX/howtos.html">http://www.linux.org/docs/ldp/howto/HOWTO-INDEX/howtos.html</A></EM>&gt;</P>
</LI>
</UL>
Appunti di informatica libera 2001.08.18  --- <EM>Copyright &copy; 2000-2001 Daniele Giacomini -- &nbsp;daniele&nbsp;@&nbsp;swlibero.org</EM><HR>

<P><A HREF="#footnote-ref1" NAME="footnote1">1)</A> <STRONG>NIS</STRONG> &nbsp; GNU GPL</P>

<P><A HREF="#footnote-ref2" NAME="footnote2">2)</A> Anche se la propria distribuzione GNU/Linux non dovesse includerlo, esiste comunque un <A NAME="index10409"></A>cliente adatto a utilizzare il servizio NIS+.</P>

<P><A HREF="#footnote-ref3" NAME="footnote3">3)</A> Il vero problema di tutto questo sta nel fatto che sono poche le distribuzioni GNU/Linux che pongono attenzione al NIS, cos&igrave; capita spesso che la configurazione definita in fase di compilazione dei sorgenti non sia perfetta. Tra le tante cose, potrebbe capitare che i file di configurazione debbano essere collocati in <CODE>/usr/etc/</CODE>, invece che in <CODE>/etc/</CODE> (questo solo a titolo di esempio). Di certo, mano a mano che l'interesse sul NIS degli utenti aumenter&agrave;, maggiore sar&agrave; la cura che vi verr&agrave; messa.</P>

<P><A HREF="#footnote-ref4" NAME="footnote4">4)</A> Se non serve, o non funziona, si ottiene al massimo una segnalazione di errore nel momento in cui si utilizza il <A NAME="index10470"></A>file-make, senza altri effetti collaterali.</P>
</DIV>
<HR>
<P>Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome  <A HREF="nis.html">nis.html</A></P>
<P>
<A HREF="a2153.html">[successivo]</A>
<A HREF="a2151.html">[precedente]</A>
<A HREF="a2.html">[inizio]</A>
<A HREF="a2506.html">[fine]</A>
<A HREF="a21.html">[indice generale]</A>
<A HREF="a26.html">[violazione GPL]</A>
<A HREF="a2504.html">[licenze]</A>
<A HREF="a2505.html">[indice analitico]</A>
</P>
</BODY>
</HTML>