This file is indexed.

/usr/share/doc/HOWTO/fr-html/NIS-HOWTO.html is in doc-linux-fr-html 2013.01-3ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   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
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.72">
<title>Le Linux NIS(YP)/NYS/NIS+ HOWTO</title>
</head>
<body>
<h1>Le Linux NIS(YP)/NYS/NIS+ HOWTO</h1>
<h2>Thorsten Kukuk</h2>
Version 0.12, 12 Juin 1998
<hr>
<em>Ce document décrit la façon de configurer Linux en client de
NIS(YP) ou de NIS+, et la façon d'installer un serveur NIS.</em>
<hr>
<h2><a name="s1">1. Version française</a></h2>
<p>Ce document constitue la version française du NIS-HOWTO,
adaptation réalisée par Frédéric Veynachter
(frederic.veynachter@hol.fr), le 26 juillet 1998, fortement
inspirée de la traduction précédemment réalisée par Éric Dumas
(dumas@Linux.EU.Org), le 19 Novembre 1997.</p>
<p>Vous pouvez consulter ce document sur les sites suivants :</p>
<ul>
<li><a href=
"http://www.freenix.fr/linux/HOWTO/">http://www.freenix.fr/linux/HOWTO</a></li>
<li><a href=
"ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/">ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO</a></li>
</ul>
ainsi que leurs nombreux miroirs.
<p>Pour plus de renseignements concernant la traduction en langue
française des documents du LDP (<em>Linux Documentation
Project</em>), consultez le document "Liste-des-HOWTO" que l'on
trouve aux mêmex endroits.</p>
<p>Les différents sites conseillés dans ce document possèdent
sûrement des miroirs plus proches de chez vous, comme par exemple
ftp.lip6.fr, ftp.loria.fr ... utilisez-les !</p>
<h2><a name="s2">2. Introduction</a></h2>
<p>Les machines sous Linux sont de plus en plus souvent installées
et connectées dans des réseaux informatiques.Pour simplifier
l'administration système, la plupart des réseaux (surtout ceux qui
sont fondés sur du matériel Sun) fonctionnent avec le <em>Network
Information Service</em>. Les machines Linux peuvent tirer de
nombreux avantages des services NIS existant, ou fournir
elles-mêmes ces services. Elles peuvent également se comporter
comme des clients NIS+, mais il s'agit encore d'une version
béta.</p>
<p>Ce document tente de répondre aux questions concernant la mise
en place et la configuration de NIS(YP) et de NIS+ sur votre
machine Linux. N'oubliez pas de lire la section concernant <a href=
"#portmapper">le Portmapper RPC</a>.</p>
<p>Le NIS-Howto est rédigé et maintenu par:</p>
<blockquote>Thorsten Kukuk,
<code>kukuk@vt.uni-paderborn.de</code></blockquote>
<p>La version initiale de ce document a été réalisée par:</p>
<blockquote>
<pre><code>
Andrea Dell'Amico       &lt;adellam@ZIA.ms.it&gt;
Mitchum DSouza          &lt;Mitch.DSouza@NetComm.IE&gt;
Erwin Embsen            &lt;erwin@nioz.nl&gt;
Peter Eriksson          &lt;peter@ifm.liu.se&gt;
</code></pre></blockquote>
<p>que nous tenons à remercier.</p>
<h2><a name="ss2.1">2.1 Nouvelles versions de ce document</a></h2>
<p>Vous pourrez toujours trouver la dernière version de ce document
sur le web via l'URL <a href=
"http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html">http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html</a>.</p>
<p>Les nouvelles versions de ce document seront également présentes
sur différents sites ftp et web consacrés à Linux, y compris sur la
page principale du LDP (Linux Documentation Project).</p>
<p>Des liens vers les traductions de ce document peuvent être
trouvés à l'adresse <a href=
"http://www-vt.uni-paderborn.de/~kukuk/linux/nis-howto.html">http://www-vt.uni-paderborn.de/~kukuk/linux/nis-howto.html</a>.</p>
<h2><a name="ss2.2">2.2 Avertissement</a></h2>
<p>Même si ce document rassemble le maximum de données selon notre
connaissance, il peut contenir, et contient sans doute, certaines
erreurs. Nous vous demandons de lire attentivement tous les
fichiers README qui sont livrés avec les outils décrits dans ce
document, pour avoir plus de détails et une information plus
précise. Nous essayerons, dans la mesure du possible, d'éviter que
des erreurs se glissent ans ce document.</p>
<h2><a name="ss2.3">2.3 Retour d'information et
corrections</a></h2>
<p>Si vous avez des questions ou des commentaires à propos de ce
document, n'hésitez pas à envoyer un courrier électronique à
<a href=
"mailto:kukuk@vt.uni-paderborn.de">kukuk@vt.uni-paderborn.de</a>.
J'accepte volontiers toutes les suggestions ou critiques. Si vous
trouvez une anomalie ou une erreur dans ce document, merci de me le
faire savoir, pour que je puisse la corriger dans la prochaine
version.</p>
<p>Merci de ne pas m'envoyer de questions concernant des problèmes
spécifiques à une distribution de Linux. Je ne les connais pas
toutes. J'essayerai néanmoins d'intégrer toute solution qui me sera
envoyée.</p>
<h2><a name="ss2.4">2.4 Remerciements</a></h2>
<p>Nous voudrions remercier toutes les personnes qui ont contribué
(directement ou indirectement) à ce document. Par ordre
alphabétique :</p>
<blockquote>
<pre><code>
Byron A Jeff            &lt;byron@cc.gatech.edu&gt;
Miquel van Smoorenburg  &lt;miquels@cistron.nl&gt;
</code></pre></blockquote>
<p>Theo de Raadt &lt;deraadt@theos.com&gt; est à l'origine du code
yp-clients. Swen Thuemmler &lt;swen@uni-paderborn.de&gt; a porté ce
code pour Linux et il a également porté le code yp-routines pour la
libc (toujours fondé sur le travail de Theo). Thorsten Kukuk a
totalement ré-écrit toutes les routines NIS(YP) et NIS+ pour la GNU
libc 2.x.</p>
<h2><a name="s3">3. Glossaire et informations générales</a></h2>
<h2><a name="ss3.1">3.1 Glossaire des termes employés</a></h2>
<p>Dans ce document, bon nombre d'acronymes sont employés. Voici la
liste des plus utilisés, avec une brève explication.</p>
<dl>
<dt><b>DBM</b></dt>
<dd>
<p>DataBase Management (Gestion de la base de données):
bibliothèque de fonctions pour maintenir les clefs et le contenu de
la base de données.</p>
</dd>
<dt><b>DLL</b></dt>
<dd>
<p>Dynamically Linked Library (Bibliothèque liée dynamiquement):
bibliothèque de fonctions chargées dynamiquement à l'exécution.</p>
</dd>
<dt><b>domainname</b></dt>
<dd>
<p>Nom du domaine : nom "clef" utilisé par les clients NIS pour
qu'ils puissent trouver un serveur NIS convenable qui gère la clef
du domaine. Notez que cela n'a rien à voir avec le "domaine" DNS
(nom de la machine) des machines.</p>
</dd>
<dt><b>FTP</b></dt>
<dd>
<p>File Transfer Protocol (Protocole de transfert de fichiers) :
protocole utilisé pour transférer des fichiers entre deux
ordinateurs.</p>
</dd>
<dt><b>libnsl</b></dt>
<dd>
<p>Name services library : bibliothèque d'appels systèmes (tels que
<code>getpwnam, getservbyname, ...</code>) sur les systèmes Unix
SVR4. La GNU libc utilise cette bibliothèque pour les fonctions NIS
(YP) et NIS+.</p>
</dd>
<dt><b>libsocket</b></dt>
<dd>
<p>Bibliothèque de fonctions de manipulation de sockets
<code>socket, bind, listen, ...</code> sur les systèmes SVR4.</p>
</dd>
<dt><b>NIS</b></dt>
<dd>
<p>Network Information Service (Service d'information du réseau):
service qui permet à certaines informations d'être connues par
toutes les machines disponibles sur le réseau. Ce service est géré
dans la bibliothèque standard de la libc Linux. Il est considéré
par la suite comme étant le "NIS traditionnel".</p>
</dd>
<dt><b>NIS+</b></dt>
<dd>
<p>Network Information Service (Plus...) : en gros, version de NIS
améliorée. NIS+ a été conçu par Sun Microsystems Inc. pour
remplacer NIS, avec un niveau de sécurité supérieur et une
meilleure gestion pour les grosses installations.</p>
</dd>
<dt><b>NYS</b></dt>
<dd>
<p>Il s'agit du nom d'un projet de développement et de
standardisation pour NIS+, YP et Switch. Il est dirigé par Peter
Eriksson (&lt;peter@ifm.liu.se&gt;). Il contient entre autres
choses une réimplémentation complète du code de NIS (c'est-à-dire
YP) qui utilise les fonctionnalités <em>Name Services Switch</em>
de la bibliothèque NYS.</p>
</dd>
<dt><b>NSS</b></dt>
<dd>
<p>Name Service Switch (littéralement, commutation des noms de
service): le fichier /etc/nsswitch.conf détermine l'ordre de
recherche d'informations en fonction des services demandés.</p>
</dd>
<dt><b>RPC</b></dt>
<dd>
<p>Remote Procedure Call (Appel de procédure distante): les
routines RPC permettent aux programmes C d'appeler d'autres
machines à travers le réseau. Lorsque des personnes parlent de RPC,
elles parlent souvent en fait de la version Sun RPC.</p>
</dd>
<dt><b>YP</b></dt>
<dd>
<p>Yellow Pages(tm) : marque déposée par British Telecom. (les
pages jaunes... comme les nôtres !).</p>
</dd>
<dt><b>TCP-IP</b></dt>
<dd>
<p>Transmission Control Protocol/Internet Protocol : protocole de
communication le plus fréquemment utilisé sur les machines
Unix.</p>
</dd>
</dl>
<h2><a name="ss3.2">3.2 Quelques informations générales</a></h2>
<p>Les quatre lignes ci-dessous sont une citation du manuel
d'administration réseau de Sun(TM) System.</p>
<blockquote>
<pre><code>
    "NIS was formerly known as Sun Yellow Pages (YP) but
     the name Yellow Pages(tm) is a registered trademark
     in the United Kingdom of British Telecom plc and may
     not be used without permission."

    "NIS etait formellement connu sous le nom de 
     Yellow Pages (YP) (Pages Jaunes) mais le nom 
     Yellow Pages(tm) est une marque enregistree au 
     Royaume Uni par British Telecom et ne peut etre 
     utilisee sans autorisation."
</code></pre></blockquote>
<p>NIS est l'abréviation pour <em>Network Information Service</em>
(Service d'Information Réseau). Son but est de fournir des
informations, qui doivent être connues sur l'ensemble du réseau, à
toutes les machines connectées. Les informations susceptibles
d'être distribuées par NIS sont:</p>
<ul>
<li>noms de login, mots de passe, répertoires d'ouverture
(/etc/passwd)</li>
<li>renseignements sur les groupes d'utilisateurs (/etc/group)</li>
</ul>
<p>Par exemple, si votre mot de passe et les informations s'y
rattachant sont enregistrés dans la base de données NIS, vous
pourrez vous loguer sur toutes les machines du réseau sur
lesquelles un client NIS est lancé.</p>
<p>Sun est une marque déposée de Sun Microsystems Inc, brevetée par
SunSoft, Inc.</p>
<h2><a name="s4">4. NIS ou NIS+ ?</a></h2>
<p>Le choix entre NIS et NIS+ est facile à faire : utilisez NIS
tant que vous n'avez pas besoin d'utiliser NIS+ ou si vous avez des
besoins de sécurité importants. NIS+ est bien plus problématique à
administrer (c'est plutôt facile à manipuler du côté du client,
mais en ce qui concerne le côté serveur, c'est une horreur). Un
autre problème est que le support de NIS+ pour Linux est encore en
cours de développement : vous devrez avoir la toute dernière
version de glibc ou attendre la sortie de glibc 2.1. Il existe un
portage du NIS+ glibc pour libc5, qui consiste à installer une libc
de remplacement.</p>
<h2><a name="ss4.1">4.1 libc 4/5 avec "NIS traditionnel" ou NYS
?</a></h2>
<p>Le choix entre "NIS traditionnel" ou le code NIS dans la
bibliothèque NYS est un choix entre paresse et maturité d'un côté,
flexibilité et amour de l'aventure de l'autre.</p>
<p>Le code "NIS traditionnel" se trouve dans la bibliothèque C
standard, existe depuis fort longtemps, et souffre parfois de son
age et de son léger manque de souplesse.</p>
<p>Le code NIS de la bibliothèque NYS vous oblige à recompiler la
bibliothèque libc pour y inclure le code NYS (à moins que vous ne
trouviez une version de libc précompilée chez quelqu'un qui l'a
déjà fait).</p>
<p>Une autre différence est que le code "NIS traditionnel" gère en
partie les groupes de réseaux NIS (<em>Netgroups</em>), alors que
le code NYS ne le fait pas. D'un autre côté, le code NYS vous
permet d'utiliser les mots de passe Shadow d'une manière
transparente. Le code "NIS traditionnel" ne permet pas d'utiliser
les mots de passe Shadow sur NIS.</p>
<p>Vous pouvez cependant oublier tout ça si vous utilisez la
nouvelle bibliothèque GNU C 2.x (alias libc6). Elle comporte un
vrai support de NSS (<em>Name Switch Service</em>), ce qui la rend
vraiment souple, et elle est capable de gérer les "maps" NIS/NIS+
suivantes : aliases, ethers, group, hosts, netgroups, networks,
protocols, publickey, passwd, rpc, services et shadow. La
bibliothèque GNU C ne pose aucun problème avec les mots de passe
Shadow sur NIS.</p>
<h2><a name="s5">5. Comment ça marche ?</a></h2>
<h2><a name="ss5.1">5.1 Comment fonctionne NIS(YP) ?</a></h2>
<p>A l'intérieur d'un réseau, il doit y avoir au moins une machine
faisant office de serveur NIS. Vous pouvez avoir plusieurs serveurs
NIS, chacun gérant plusieurs "domaines" NIS, ou bien vous pouvez
avoir des serveurs NIS coopératifs. Dans ce cas, l'un d'entre eux
est dit serveur NIS <em>maître</em>, les autres étant serveurs NIS
esclaves. Vous pouvez également mélanger les deux possibilités.</p>
<p>Les serveurs esclaves n'ont qu'une copie de la base de données
et la reçoivent du serveur NIS maître lorsque des changement sont
effectués dans la base de données. En fonction du nombre de machine
et de la fiabilité de votre réseau, vous pouvez décider d'installer
un ou plusieurs serveurs esclaves. Lorsqu'un serveur NIS tombe en
panne ou bien s'il est trop long pour répondre aux requêtes, un
client NIS connecté à ce serveur va alors essayer d'en trouver un
en état de marche.</p>
<p>Les bases de données NIS sont au format DBM, un dérivé des bases
de données ASCII. Par exemple, les fichiers
<code>/etc/passwd</code> et <code>/etc/group</code> peuvent être
directement convertis dans le format DBM en utilisant un programme
de conversion <em>ASCII-to-DBM</em> (<code>makedbm</code> est
inclus dans les programmes du serveur). Le serveur NIS maître
devrait avoir les deux types : la base ASCII et la base DBM.</p>
<p>Les serveurs esclaves seront avertis de tout changement dans les
tables NIS (grâce au programme <code>yppush</code>), et
effectueront automatiquement les changements nécessaires pour
synchroniser leurs bases de données. Les clients NIS n'ont pas
besoin d'effectuer cette opération puisqu'ils communiquent tout le
temps avec le serveur NIS pour lire les informations rangées dans
les bases de données DBM.</p>
<p>L'auteur des clients YP pour Linux nous a informé que la
nouvelle version de <code>ypbind</code> (située dans l'archive
<code>ypbind-3.3.tar.gz</code>) permet d'indiquer le serveur NIS à
contacter dans un fichier de configuration, ce qui évite
d'effectuer un <em>broadcast</em> (ce qui n'est pas sécurisé car
n'importe qui peut installer un serveur NIS et peut donc répondre
aux requêtes...).</p>
<h2><a name="ss5.2">5.2 Comment fonctionne NIS+ ?</a></h2>
<p>NIS+ est une nouvelle version du service d'information réseau de
Sun. La différence la plus notable entre NIS et NIS+ est que NIS+
est capable de gérer des données chiffrées ainsi que
l'authentification <em>via</em> les RPC sécurisés.</p>
<p>Le modèle de nommage de NIS+ est basé sur une structure
arborescente. Chaque noeud de l'arbre correspond à un objet NIS+, à
partir duquel nous avons six types : directory, entry, group, link,
table et private (répertoire, entrée, groupe, lien, table et
privé).</p>
<p>Le répertoire NIS+ qui constitue la racine de l'espace de
nommage NIS+ est appelé le répertoire racine. Il existe deux
répertoires spéciaux NIS+ : org_dir et groups_dir. Le premier
regroupe toutes les tables d'administration, telles que passwd,
hosts, et mail_aliases. Le second répertoire contient les objets
groupe NIS+ qui sont utilisés pour contrôler les accès. L'ensemble
des répertoires org_dir, groups_dir et leurs parents sont
considérés comme étant un domaine NIS+.</p>
<h2><a name="portmapper"></a> <a name="s6">6. Le RPC
Portmapper</a></h2>
<p>Pour lancer n'importe lequel des programmes mentionnés
ci-dessous, vous aurez besoin de lancer le programme
<code>/usr/sbin/rpc.portmap</code>. Certaines distributions de
<b>Linux</b> ont déjà dans le code du script
<code>/etc/rc.d/rc.inet2</code> ce qui est nécessaire pour lancer
ce démon. Tout ce que vous avez à faire, c'est de décommenter ce
qui est nécessaire puis à rebooter votre machine pour l'activer.
Lisez la documentation de votre distribution pour plus de
détails.</p>
<p>Le RPC portmapper (portmap(8)) est un serveur qui convertit les
numéros des programmes RPC en numéros de ports pour le protocole
TCP/IP (ou UDP/IP). Il doit être lancé dans un certain ordre pour
réaliser les appels RPC (ce que fait le programme client NIS/NIS+)
vers les serveurs (comme par exemple un serveur NIS/NIS+) sur cette
machine. Lorsque le serveur RPC est lancé, il va indiquer au démon
<code>portmap</code> quel numéro de port il scrute, et quels sont
les numéros de programmes RPC avec lesquels il est prêt à
travailler. Lorsque le client souhaite réaliser un appel RPC à
certain numéro de programme, il contacte dans un premier temps
<code>portmap</code> sur le serveur de la machine pour déterminer
le numéro de port où il doit alors envoyer les paquets RPC.</p>
<p>En principe, les serveurs RPC standards sont lancés par
<code>inetd</code> (manuel inetd(8)), donc <code>portmap</code>
doit être lancé avant qu'<code>inetd</code> ne le soit.</p>
<p>Pour les RPC sécurisés, le portmapper a besoin des services
d'horloge. Assurez-vous qu'ils sont activés dans le fichier
<code>/etc/inetd.conf</code> sur toutes les machines :</p>
<blockquote>
<pre><code>
#
# Time service is used for clock syncronization.
#
time    stream  tcp     nowait  root    internal
time    dgram   udp     wait    root    internal
</code></pre></blockquote>
<p>IMPORTANT : n'oubliez pas de relancer inetd après toute
modification de ce fichier !</p>
<h2><a name="s7">7. De quoi avez-vous besoin pour configurer NIS
?</a></h2>
<h2><a name="ss7.1">7.1 Déterminez si vous êtes un serveur, un
esclave ou un client</a></h2>
<p>Pour répondre à cette question, nous pouvons considérer deux cas
:</p>
<ol>
<li>votre machine va être insérée dans un réseau avec des serveurs
NIS déjà existants&nbsp;;</li>
<li>vous n'avez pas encore de serveur NIS dans votre réseau.</li>
</ol>
<p>Dans le premier cas, vous n'aurez besoin que des programmes
clients (<code>ypbind, ypwhich, ypcat, yppoll, ypmatch</code>). Le
programme le plus important est <code>ypbind</code>. Ce démon doit
toujours être lancé, c'est-à-dire qu'il doit toujours apparaître
dans la liste des processus. Comme c'est un démon, il doit être
lancé au démarrage de votre machine dans le fichier de démarrage
(<code>/etc/rc.local, /etc/init.d/nis,
/etc/rc.d/init.d/ypbind</code>). Dès que <code>ypbind</code>
fonctionne, votre système devient un client NIS.</p>
<p>Dans le second cas, vous n'avez pas de serveur NIS, donc vous
aurez également besoin d'un programme serveur NIS (généralement
<code>ypserv</code>). La section 10 ( <em>10 Configurer un serveur
NIS</em> ) décrit comment configurer un serveur NIS sur votre
machine Linux en utilisant la version <code>ypserv</code>
implémentée par Peter Eriksson et Thorsten Kukuk. On peut remarquer
qu'à partir de la version 0.14 de cette implémentation, le concept
de maître-esclave dont nous avons parlé dans la section 5.1 est
géré.</p>
<p>Il existe également un autre serveur NIS en libre distribution,
appelé <code>yps</code>, écrit par Tobias Reber en Allemagne, et
qui gére le concept de maître-esclave mais qui a d'autres
limitations et qui n'est plus maintenu.</p>
<h2><a name="ss7.2">7.2 Les programmes</a></h2>
<p>La bibliothèque <code>/usr/lib/libc.a</code> (version 4.4.2 et
supérieure) ou la bibliothèque dynamique partagée
<code>/lib/libc.so.x</code> contient tous les appels systèmes
correspondants pour compiler sans problème les programmes clients
et serveurs NIS. Pour la glibc 2.x, vous aurez également besoin de
<code>/lib/libnsl.so.1</code>.</p>
<p>Certaines personnes ont signalé que NIS ne fonctionne qu'avec
<code>/usr/lib/libc.a</code> version 4.5.21 et supérieure, donc,
pour plus de sûreté, évitez d'utiliser des bibliothèques plus
anciennes. Les clients NIS peuvent être récupérés sur les sites
suivants :</p>
<blockquote>
<pre><code>
  Site                   Repertoire                      Nom du fichier

  ftp.kernel.org        /pub/linux/utils/net/NIS         yp-tools-2.0.tar.gz
  ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-mt-1.2.tar.gz
  ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-3.3.tar.gz
  sunsite.unc.edu       /pub/Linux/system/Network/admin  yp-clients-2.2.tar.gz
  ftp.uni-paderborn.de  /linux/local/yp                  yp-clients-2.2.tar.gz
  ftp.uni-paderborn.de  /linux/local/yp                  ypbind-3.3.tar.gz
</code></pre></blockquote>
<p>Une fois que vous aurez récupéré ces programmes, suivez les
instructions qui sont livrées avec. <code>yp-clients 2.2</code>
doit être utilisé avec les bibliothèques <code>libc4</code> et
<code>libc5</code> jusqu'à la version 5.4.20. Les <code>libc
5.4.21</code> et <code>glibc 2.x</code> nécessitent <code>yp-tools
1.4.1</code>. La nouvelle version <code>yp-tools 2.0</code>
fonctionnera avec toutes les libc Linux. Vous ne devriez pas
utiliser les <code>libc 5.4.21 - 5.4.35</code> car elles présentent
de nombreux défauts. Utilisez la <code>libc 5.4.36</code> ou une
version supérieure, sinon, la plupart des programmes de YP ne
fonctionneront pas. <code>ypbind 3.3</code> fonctionnera également
avec toutes les bibliothèques. Vous ne devriez jamais utiliser la
version <code>ypbind</code> qui est fournie dans <code>yp-clients
2.2</code>.</p>
<h2><a name="ss7.3">7.3 Le démon ypbind</a></h2>
<p>Nous supposons que vous avez compilé correctement les programmes
et que vous êtes prêt à les installer. L'endroit où installer le
démon <code>ypbind</code> est le répertoire <code>/usr/sbin</code>.
Certains peuvent vous dire que vous n'avez pas besoin de
<code>ypbind</code> sur un système qui utilise NYS. C'est faux :
<code>ypwhich</code> et <code>ypcat</code> en ont besoin.</p>
<p>Vous devez réaliser cette opération en tant que
super-utilisateur (i.e. "root"), bien sûr. Les autres binaires
(<code>ypwhich, ypcat, yppoll, ypmatch</code>) doivent être placés
dans un répertoire accessible à tous les utilisateurs, normalement
c'est le répertoire <code>/usr/bin</code> qui est utilisé.</p>
<p>Le programme ypbind a besoin d'un fichier de configuration
<code>/etc/yp.conf</code>. Vous pouvez y indiquer, en dur, le nom
du serveur NIS. Pour plus d'informations, consultez la page de
manuel de <code>ypbind(8)</code>. Vous aurez également besoin de ce
ficher pour NYS. Un court exemple :</p>
<blockquote>
<pre><code>
  ypserver voyager
  ypserver ds9
</code></pre></blockquote>
<p>Si le système est capable de résoudre les noms de machine sans
NIS, vous pouvez utiliser le nom de la machine. Dans le cas
contraire, utilisez l'adresse IP.</p>
<p>Il est souhaitable de tester ypbind avant de l'inclure dans les
fichiers de <code>/etc/rc.d/</code>. Pour tester
<code>ypbind</code> faites ceci :</p>
<ul>
<li>Vérifiez que votre nom de domaine est défini. Si ce n'est pas
le cas, faites
<blockquote>
<pre><code>
            /bin/domainname-yp nis.domain
        
</code></pre></blockquote><code>nis.domain</code> doit être une chaîne, qui n'a
normalement RIEN A VOIR avec le nom de votre machine ! La raison
est que cela rend plus difficile le travail des pirates pour
trouver les mots de passe de la base de données du serveurs NIS. Si
vous ne connaissez pas le nom du domaine de votre réseau, contactez
votre administrateur système.</li>
<li>Lancez <code>/usr/sbin/rpc.portmap</code> s'il ne tourne pas
déjà.</li>
<li>Créez le répertoire <code>/var/yp</code> s'il n'existe
pas.</li>
<li>Lancez <code>/usr/sbin/ypbind</code></li>
<li>Utilisez la commande <code>rpcinfo -p localhost</code> pour
vérifier qu'<code>ypbind</code> est capable d'enregistrer ses
services dans portmapper. La commande <code>rpcinfo</code> devrait
produire un message de ce style :
<blockquote>
<pre><code>
       program vers proto   port
        100000    2   tcp    111  portmapper
        100000    2   udp    111  portmapper
        100007    2   udp    637  ypbind
        100007    2   tcp    639  ypbind
        300019    1   udp    660
      
</code></pre></blockquote>
</li>
<li>Vous pouvez également lancer <code>rpcinfo -u localhost
ypbind</code>. Cette commande devrait alors produire :
<blockquote>
<pre><code>
        program 100007 version 2 ready and waiting
      
</code></pre></blockquote>
</li>
</ul>
<p>Vous devriez alors être capable d'utiliser les programmes
clients tels que <code>ypcat</code>, etc. Par exemple, <code>ypcat
passwd</code> vous donne la liste des mots de passe (chiffrés !) de
la base de données NIS.</p>
<p>IMPORTANT : si vous avez évité la procédure de test, vérifiez
que vous avez positionné le nom de votre domaine, et créé le
répertoire :</p>
<blockquote>
<pre><code>
    /var/yp
</code></pre></blockquote>
<p>Ce répertoire DOIT exister pour qu'<code>ypbind</code> soit
correctement lancé.</p>
<p>Pour vérifier que le nom de domaine est correctement configurer,
utilisez le programme <code>/bin/ypdomainname</code>, fourni avec
yp-tools 2.0. Il utilise la fonction
<em>yp_get_default_domain</em>, qui est plus restrictive. Elle
n'autorise pas, par exemple, le nom de domaine "(none)", qui est
celui par défaut avec Linux et qui crée de nombreux problèmes.</p>
<p>Si le test a fonctionné, vous pouvez alors modifier les fichiers
<code>/etc/rc.d</code> sur votre système pour
qu'<code>ypbind</code> soit lancé lors de l'amorçage de la machine
et pour que votre machine se comporte comme un client NIS.
Assurez-vous que le nom de domaine soit configuré lors de
l'amorçage.</p>
<p>Normalement, tout est prêt. Relancez votre machine et observez
les messages pour voir si ypbind est lancé.</p>
<h2><a name="ss7.4">7.4 Configurer un client NIS en utilisant le
NIS traditionnel</a></h2>
<p>Pour la recherche de noms de machines, vous devez ajouter "nis"
dans la ligne "host" du fichier <code>/etc/host.conf</code>. Lisez
la page de manuel "resolv+.8" pour plus de détails.</p>
<p>Ajoutez ensuite la ligne suivante dans le fichier
<code>/etc/passwd</code> de vos machines clientes :</p>
<blockquote>
<pre><code>
+::::::
</code></pre></blockquote>
<p>Vous pouvez également utiliser les caractères + et - pour
inclure/exclure ou modifier certains utilisateurs. Si vous
souhaitez exclure l'utilisateur guest, ajoutez <code>-guest</code>
à votre fichier <code>/etc/passwd</code>. Si vous souhaitez
utiliser un interpréteur de commandes différent (par exemple ksh)
pour l'utilisateur "linux", ajoutez la ligne
<code>+linux::::::/bin/ksh</code>. Les champs que vous ne souhaitez
pas modifier doivent rester vides. Vous pouvez également utiliser
les Netgroups pour gérer les utilisateurs.</p>
<p>Par exemple, pour n'utiliser que les login miquels, dth et ed,
ainsi que tous les membres du netgroup sysadmin, tout en ayant
quand même accès aux comptes des autres utilisateurs :</p>
<blockquote>
<pre><code>
      +miquels:::::::
      +ed:::::::
      +dth:::::::
      +@sysadmins:::::::
      -ftp
      +:*::::::/etc/NoShell
</code></pre></blockquote>
<p>Remarquez qu'avec Linux, vous pouvez également surcharger le
champ mot de passe, comme nous l'avons fait dans cet exemple. Nous
avons également supprimé le login "ftp" : cet utilisateur n'est
plus connu sur la machine et le ftp anonyme ne fonctionnera
pas.</p>
<p>Le netgroup peut être défini de la sorte :</p>
<blockquote>
<pre><code>
sysadmins (-,software,) (-,kukuk,)
</code></pre></blockquote>
<p>IMPORTANT : la fonctionnalité de netgroup n'est implémentée qu'à
partir de la libc version 4.5.26. Mais si vous possédez une libc
plus ancienne que la 4.5.26, tout utilisateur dans la base de
donnée des mots de passe peut accéder à la machine linux si vous
lancez ypbind.</p>
<h2><a name="ss7.5">7.5 Configurer un client NIS en utilisant
NYS</a></h2>
<p>Il vous suffit d'avoir le fichier de configuration NIS
(<code>/etc/yp.conf</code>) qui pointe sur le (ou les) serveur(s)
adéquat(s), ainsi qu'un fichier <code>/etc/nsswitch.conf</code>
correctement configuré.</p>
<p>Vous devriez également installer ypbind. Il n'est pas nécessaire
pour la libc, mais les outils NIS(YP) en ont besoin.</p>
<p>Si vous souhaitez utiliser les fonctionnalités
d'inclusion/exclusion d'utilisateurs (+/-guest/+@admins), vous
devez utiliser "passwd: compat" et "group: compat". Notez qu'il
n'existe pas de "shadow: compat" ! Vous devez utiliser "shadow:
files nis" dans ce dernier cas.</p>
<p>Les sources de NYS sont fournies avec les sources de libc5.
Lorsque vous lancez la configuration pour la première fois,
répondez "NO" à la question "Values correct" (NDT: en français,
"Est-ce que les valeurs sont correctes ?"), puis répondez "YES" à
la question "Build a NYS libc from nys" (NDT: en français,
"Construire une libc NYS à partir de nys ?").</p>
<h2><a name="ss7.6">7.6 Configurer un client NIS en utilisant la
glibc 2.x</a></h2>
<p>La glibc utilise la version "NIS traditionnelle", donc vous
devrez lancer ypbind. Le fichier <code>/etc/nsswitch.conf</code>
doit également être correctement configuré. Si vous utilisez le
mode compat pour les tables passwd, shadow ou group, vous devez
ajouter le caractère "+" à la fin de ces fichiers, et vous pourrez
alors utiliser les fonctionnalités d'inclusion/d'exclusion
d'utilisateurs. La configuration est exactement la même que sous
Solaris 2.x.</p>
<h2><a name="ss7.7">7.7 Le fichier nsswitch.conf</a></h2>
<p>Le fichier de configuration <code>/etc/nsswitch.conf</code>
détermine l'ordre dans lequel sont effectuées les recherches de
certaines informations, en fonction des données et des services, de
la même manière que le fichier <code>/etc/host.conf</code>
détermine la façon dont les recherches de noms de machines se font.
Par exemple, la ligne</p>
<blockquote>
<pre><code>
    hosts: files nis dns
</code></pre></blockquote>
<p>indique que la recherche d'un nom de machine sera d'abord
effectuée dans le fichier local <code>/etc/hosts</code>, puis dans
la table NIS et enfin en utilisant le DNS
(<code>/etc/resolv.conf</code> et <code>named</code>). Si aucune
machine ne correspond, alors une erreur est renvoyée. Ce fichier
doit être accessible en lecture pour tous les utilisateurs !</p>
<p>Voici un bon exemple de fichier /etc/nsswitch.conf pour NIS:</p>
<blockquote>
<pre><code>
#
# /etc/nsswitch.conf
#
# Un exemple de configuration de NSS (Name Service Switch). Ce fichier doit 
# etre trie en mettant en tete les services les plus utilises.
#
# L'entree '[NOTFOUND=return]' signifie que la recherche d'une entree
# doit s'arreter si la recherche dans l'entree precedente n'a rien donne
# Notez que si la recherche echoue pour tout autre raison 
# (par exemple, le serveur NIS ne repond pas), alors la recherche continue
# avec l'entree suivante.
#
# Les entrees connues sont :
#
#       nisplus                 NIS+ (NIS version 3)
#       nis                     NIS (NIS version 2), connu comme YP
#       dns                     DNS (Domain Name Service)
#       files                   Fichiers locaux
#       db                      Bases de donnees /var/db 
#       [NOTFOUND=return]       Arret de la recherche si l'on n'a rien trouve
#

passwd:     compat
group:      compat
shadow:     compat

passwd_compat: nis
group_compat: nis
shadow_compat: nis

hosts:      nis files dns

services:   nis [NOTFOUND=return] files
networks:   nis [NOTFOUND=return] files
protocols:  nis [NOTFOUND=return] files
rpc:        nis [NOTFOUND=return] files
ethers:     nis [NOTFOUND=return] files
netmasks:   nis [NOTFOUND=return] files
netgroup:   nis
bootparams: nis [NOTFOUND=return] files
publickey:  nis [NOTFOUND=return] files
automount:  files
aliases:    nis [NOTFOUND=return] files
</code></pre></blockquote>
<p>Les entrées passwd_compat, group_compat et shadow_compat ne sont
gérées qu'avec la glibc 2.x. S'il n'y a pas d'entrée shadow dans
<code>/etc/nsswitch.conf</code>, la glibc utilisera l'entrée passwd
pour effectuer ses recherches. Il existe certaines entrées
supplémentaires avec la glibc comme <code>hesoid</code>. Pour plus
d'informations, consultez la documentation de la glibc.</p>
<h2><a name="s8">8. Mots de passe Shadow avec NIS et PAM</a></h2>
<p>L'utilisation des mots de passe Shadow avec NIS est toujours une
mauvaise idée. Vous perdez toute la sécurité apportée par le
système Shadow. Une bonne façon d'éviter les mots de passe Shadow
avec NIS est de ne mettre dans le fichier <code>/etc/shadow</code>
que les utilisateurs du système local. Enlevez de la base de
données Shadow toutes les entrées correspondant aux utilisateurs
NIS, et remettez les mots de passe dans <code>/etc/passwd</code>.
Vous pourrez ainsi utiliser le système Shadow pour le
super-utilisateur (i.e. "root"), et les mots de passe classiques
pour les utilisateurs NIS. Cette solution a l'avantage de pouvoir
fonctionner avec tous les clients NIS.</p>
<p>Si cette option n'est pas possible pour vous, il faudra utiliser
la bibliothèque GNU C 2.x. C'est la seule bibliothèque libc pour
Linux qui gère l'utilisation des mots de passe Shadow avec NIS.
Sous Linux, la libc5 ne le permet pas. La libc5 compilée avec le
support de NYS contient une partie de code permettant le mélange
Shadow - NIS, mais ce code présente de sérieuses erreurs dans
certains cas et ne fonctionne pas correctement avec toutes les
entrées Shadow.</p>
<p>Le problème suivant est PAM. La bibliothèque GNU C gère
l'utilisation des mots de passe Shadow avec NIS, mais PAM ne le
fait pas, essentiellement <code>pam_pwdb/libpwdb</code>. C'est un
gros problème pour les utilisateurs de RedHat 5.x. Si vous avez
glibc et PAM, vous devez changer les entrées dans
<code>/etc/pam.d/*</code>. Changez toutes les entrées de pam_pwdb
par l'intermédiaire des modules pam_auth_unix_*. Cette méthode
devrait fonctionner.</p>
<h2><a name="s9">9. Que faut-il pour configurer NIS+ ?</a></h2>
<h2><a name="ss9.1">9.1 Les programmes</a></h2>
<p>Le code de NIS+ pour Linux a été développé pour la bibliothèque
GNU C 2. Il existe également une version pour la libc5 de Linux,
puisque toutes les applications commerciales sont compilées en
édition de lien avec cette bibliothèque, et que vous ne pouvez pas
les recompiler en utilisant la glibc. Il y a des problèmes avec la
libc5 et NIS+: Vous ne pourrez pas réaliser d'édition de lien
statique de vos programmes, et les programmes compilés avec cette
bibliothèque ne fonctionneront pas avec les autres versions de la
libc5.</p>
<p>Vous devez récupérer et recompiler la dernière version de la
glibc2, et une distribution basée sur cette bibliothèque comme la
Redhat Mustang ou l'instable Debian. Mais attention : il s'agit
toujours d'une version bêta. Lisez la documentation concernant la
glibc et celle fournie par la distribution. La glibc2.0.x ne gère
pas pleinement NIS+, et ne l'intégrera jamais. La première version
avec la gestion NIS+ sera la 2.1.</p>
<p>Les programmes clients NIS+ peuvent être récupérés sur les sites
:</p>
<blockquote>
<pre><code>
  Site                   Repertoire                 Nom du fichier

  ftp.kernel.org         /pub/software/libs/glibc   libc-*, glibc-crypt-*,
                                                    glibc-linuxthreads-*
  ftp.kernel.org         /pub/linux/utils/net/NIS+  nis-tools-1.4.2.tar.gz
  ftp.kernel.org         /pub/linux/utils/net/NIS+  pam_keylogin-1.2.tar.gz
</code></pre></blockquote>
<p>Les distributions basées sur la glibc peuvent être récupérées
sur les sites :</p>
<blockquote>
<pre><code>
  Site                   Repertoire

  ftp.redhat.com         /pub/redhat/redhat-5.1
  ftp.debian.org         /pub/debian/dists/hamm
</code></pre></blockquote>
<p>Pour compiler la glibc, suivez les instructions livrées avec les
sources. Vous pouvez trouver à l'adresse suivante la version
patchée de la libc5, basée sur NYS et sur les sources de la glibc,
qui peut être utilisée pour remplacer la libc5.</p>
<blockquote>
<pre><code>
  Site                   Repertoire                 Nom du fichier

  ftp.kernel.org         /pub/linux/utils/net/NIS+  libc-5.4.44-nsl-0.4.10.tar.gz
</code></pre></blockquote>
<p>Vous pouvez également consulter le site <a href=
"http://www-vt.uni-paderborn.de/~kukuk/linux/nisplus.html">http://www-vt.uni-paderborn.de/~kukuk/linux/nisplus.html</a>
pour plus d'informations ainsi que pour avoir les dernières
sources.</p>
<h2><a name="ss9.2">9.2 Configurer un client NIS+</a></h2>
<p>IMPORTANT : pour configurer un client NIS+, lisez la
documentation NIS+ Solaris pour voir ce qu'il convient de faire du
côté serveur. Ce document ne décrit que le côté client !</p>
<p>Après avoir installé la nouvelle libc ainsi que nis-tools, créez
les références pour le nouveau client sur le serveur NIS+. Assurez
vous que <code>portmap</code> est lancé. Ensuite, vérifiez que
votre PC Linux est à la même heure que le serveur NIS+. Pour
réaliser des RPC sécurisés, vous disposez d'une courte période de 3
minutes, durant lesquelles les références sont valides. Lancer
<code>xntpd</code> sur toutes les machines peut être une bonne
idée. Après tout ça, exécutez les commandes suivantes :</p>
<blockquote>
<pre><code>
domainname nisplus.domain.
nisinit -c -H &lt;serveur NIS+&gt;
</code></pre></blockquote>
<p>pour initialiser le système de lancement. Lisez la page de
manuel de nisinit pour connaître les différentes options
existantes. Assurez-vous que le nom de domaine est toujours bien
positionné lors d'un réamorçage. Si vous ne connaissez pas votre
nom de domaine NIS+ sur votre réseau, demandez-le à votre
administrateur système.</p>
<p>Pensez également à modifier votre ficher
<code>/etc/nsswitch.conf</code>. Assurez-vous que le seul service
situé avec publickey est <code>nisplus</code> ("publickey:
nisplus"), et rien d'autre !</p>
<p>Ensuite, lancez <code>keyserv</code> et assurez-vous qu'il sera
toujours lancé lors de l'amorçage de la machine. Lancez</p>
<blockquote>
<pre><code>
keylogin -r
</code></pre></blockquote>
pour conserver la clef privée sur votre système (j'espère que vous
avez ajouté la clef publique de la nouvelle machine sur le serveur
NIS+ !).
<p>"niscat passwd.org_dir" doit désormais vous donner toutes les
entrées contenues dans la base de données passwd.</p>
<h2><a name="ss9.3">9.3 NIS+, keylogin, login et PAM</a></h2>
<p>Lorsque l'utilisateur se connecte, il a besoin de fixer sa clef
secrète sur le serveur de clef. Cela est effectué en appelant
<code>keylogin</code>. Le login à partir du paquetage shadow fera
cela à la place de l'utilisateur. Pour un login de type PAM, vous
devez installer <code>pam_keylogin-1.1.tar.gz</code> et modifier le
fichier <code>/etc/pam.d/login</code> pour utiliser
<code>pam_unix_auth</code>, et non <code>pwdb</code> qui ne gère
pas NIS+. Voici un exemple :</p>
<blockquote>
<pre><code>
#%PAM-1.0
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_keylogin.so
auth       required     /lib/security/pam_unix_auth.so
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_unix_acct.so
password   required     /lib/security/pam_unix_passwd.so
session    required     /lib/security/pam_unix_session.so
</code></pre></blockquote>
<h2><a name="ss9.4">9.4 Le fichier nsswitch.conf</a></h2>
<p>Le fichier de configuration <code>/etc/nsswitch.conf</code>
détermine l'ordre dans lequel sont effectuées les recherches de
certaines informations, en fonction des données et des services, de
la même manière que le fichier <code>/etc/host.conf</code>
détermine la façon dont les recherches de noms de machines se font.
Par exemple, la ligne</p>
<blockquote>
<pre><code>
    hosts: files nisplus dns
</code></pre></blockquote>
<p>indique que la fonction de recherche doit dans un premier temps
chercher dans le fichier local <code>/etc/hosts</code>, suivi par
une recherche NIS+ et enfin <em>via</em> le service de recherche de
noms (<code>/etc/resolv.conf</code> et <code>named</code>). À ce
moment là, si aucune machine n'est trouvée, alors une erreur est
renvoyée.</p>
<p>Voici un exemple de bon fichier
<code>/etc/nsswitch.conf</code></p>
<blockquote>
<pre><code>
# Un exemple de configuration de NSS. Ce fichier doit etre trie en 
# mettant en tete les services les plus utilises.
#
# L'entree '[NOTFOUND=return]' signifie que la recherche d'une entree
# doit s'arreter si la recherche dans l'entree precedente n'a rien donne
# Notez que si la recherche echoue pour tout autre raison 
# (par exemple, le serveur NIS ne repond pas), alors la recherche continue
# avec l'entree suivante.
#
# Les entrees connues sont :
#
#       nisplus                 NIS+ (NIS version 3)
#       nis                     NIS (NIS version 2), connu comme YP
#       dns                     DNS (Domain Name Service)
#       files                   Fichiers locaux
#       db                      Bases de donnees /var/db 
#       [NOTFOUND=return]       Arret de la recherche si l'on a rien trouve
#
passwd:     compat
# pour libc5: passwd: files nisplus
group:      compat
# pour libc5: group: files nisplus
shadow:     compat
# pour libc5: shadow: files nisplus

passwd_compat: nisplus
group_compat:  nisplus
shadow_compat: nisplus

hosts:      nisplus files 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
netgroup:   nisplus
bootparams: nisplus [NOTFOUND=return] files
publickey:  nisplus
automount:  files
aliases:    nisplus [NOTFOUND=return] files
</code></pre></blockquote>
<h2><a name="s10">10. Configurer un serveur NIS</a></h2>
<h2><a name="ss10.1">10.1 Le programme serveur ypserv</a></h2>
<p>Ce document ne décrit que la manière de configurer le serveur
NIS "ypserv".</p>
<p>Les programmes serveur NIS peuvent être trouvés sur :</p>
<blockquote>
<pre><code>
  Site                   Repertoire                    Nom de fichier

  ftp.kernel.org         /pub/linux/utils/net/NIS      ypserv-1.3.2.tar.gz
  wauug.erols.com        /pub/net/nis                  ypserv-1.3.2.tar.gz
</code></pre></blockquote>
<p>Vous pouvez également regarder le document <a href=
"http://www-vt.uni-paderborn.de/~kukuk/linux/nis.html">http://www-vt.uni-paderborn.de/~kukuk/linux/nis.html</a>
pour obtenir de plus amples informations ainsi que les sources.</p>
<p>La configuration du serveur est la même que cela soit le NIS
traditionnel ou NYS.</p>
<p>Compilez les sources pour générer les programmes "ypserv" et
"makedbm". Si votre serveur est considéré comme maître, déterminez
quels fichiers vous souhaitez rendre disponibles via NIS et ajoutez
ou supprimez les entrées appropriées dans
<code>/var/yp/Makefile</code>.</p>
<p>Il y a une seule grande différence entre <code>ypserv 1.1</code>
et <code>ypserv 1.2</code>. Depuis la version 1.2,
<code>ypserv</code> utilise une mémoire cache pour les
manipulations de fichiers. Cela signifie que vous devez toujours
appeler <code>makedbm</code> avec l'option <code>-c</code> si créez
de nouvelles maps. Assurez-vous que vous utilisez le nouveau
<code>/var/yp/Makefile</code> fourni avec <code>ypserv 1.2</code>
ou une version supérieure, ou ajoutez l'option <code>-c</code> à
<code>makedbm</code> dans le Makefile. Si vous ne le faites pas,
<code>ypserv</code> continuera à utiliser les anciennes maps, et
non les nouvelles.</p>
<p>Éditez ensuite <code>/var/yp/securenets</code> et
<code>/etc/ypserv.conf</code>. Pour plus d'information, lisez les
pages de manuel <code>ypserv(8)</code> et
<code>ypserv.conf(5)</code>.</p>
<p>Assurez-vous que le portmapper (<code>portmap(8)</code>)
fonctionne et lancez le serveur <code>ypserv</code>. La
commande</p>
<blockquote>
<pre><code>
    % rpcinfo -u localhost ypserv
</code></pre></blockquote>
<p>doit vous répondre un message du genre</p>
<blockquote>
<pre><code>
    program 100004 version 2 ready and waiting
</code></pre></blockquote>
<p>Maintenant, générez la base de donnée NIS (YP). Sur le serveur
maître, lancez :</p>
<blockquote>
<pre><code>
    % /usr/lib/yp/ypinit -m
</code></pre></blockquote>
<p>sur un esclave, assurez-vous que ypwhich -m fonctionne. C'est à
dire que votre esclave doit être configuré en tant que client NIS,
puis lancez:</p>
<blockquote>
<pre><code>
    % /usr/lib/yp/ypinit -s masterhost
</code></pre></blockquote>
pour que la machine soit un esclave NIS.
<p>Ça y est, votre serveur fonctionne.</p>
<p>Si vous avez de plus gros problèmes, vous pouvez lancer
<code>ypserv</code> et <code>ypbind</code> en mode debug sur des
xterms différents. La sortie écran du mode débug devrait vous
montrer ce qui ne va pas.</p>
<p>Il est possible que vous souhaitiez ajouter les lignes suivantes
sur le serveur esclave dans la <code>crontab</code> root :</p>
<blockquote>
<pre><code>
      20 *    * * *    /usr/lib/yp/ypxfr_1perhour
      40 6    * * *    /usr/lib/yp/ypxfr_1perday
      55 6,18 * * *    /usr/lib/yp/ypxfr_2perday
</code></pre></blockquote>
<p>De cette manière, vous êtes sûr que les maps NIS sont
synchronisées et sont à jour, même s'il peut arriver qu'une mise à
jour soit ratée parce que l'esclave était arrêté lors de la mise à
jour du maître.</p>
<p>Vous pouvez ajouter un esclave n'importe quand, ensuite. Tout
d'abord, assurez-vous que le nouveau <code>ypserv</code> a les
droits pour contacter le serveur maître. Ensuite, lancez</p>
<blockquote>
<pre><code>
    % /usr/lib/yp/ypinit -s masterhost
</code></pre></blockquote>
sur l'esclave, et ajoutez le nom du serveur au fichier
<code>/var/yp/ypservers</code>. Après cela, lancez la commande
"make" dans le répertoire <code>/var/yp</code> pour mettre les maps
à jour.
<p>Si vous souhaitez restreindre l'accès au serveur NIS, vous devez
configurer le serveur NIS comme s'il était également un client en
lançant <code>ypbind</code> et en ajoutant les entrées "+" dans le
fichier <code>/etc/passwd</code>. La bibliothèque de fonctions va
alors ignorer les entrées normales après la première entrée NIS et
va récupérer le reste des informations en utilisant NIS. C'est de
cette manière que sont maintenues les règles d'accès NIS. Par
exemple :</p>
<blockquote>
<pre><code>
     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
     [ Tous les utilisateurs normaux APRES cette ligne !]
     tester:*:299:10:Just a test account:/tmp:
     miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh
</code></pre></blockquote>
<p>L'utilisateur <em>tester</em> existera toujours mais il aura
l'interpréteur de commandes <code>/etc/NoShell</code>.
L'utilisateur <em>miquels</em> aura un accès normal.</p>
<p>Sinon, vous pouvez également éditer le fichier
<code>/var/yp/Makefile</code> et configurer NIS pour qu'il utilise
un autre fichier passwd. Sur de gros systèmes, les fichiers passwd
et group sont généralement conservés dans le répertoire
<code>/var/yp/ypfiles/</code>. Si vous utilisez les outils
standards pour administrer le fichier mot de passe ("passwd",
"chfn", "adduser"), cela ne fonctionnera plus et devrez alors créer
vos propres outils.</p>
<p>Toutefois, <code>yppasswd</code>, <code>ypchsh</code> et
<code>ypchfn</code> fonctionneront bien sur.</p>
<h2><a name="ss10.2">10.2 Le programme serveur yps</a></h2>
<p>Pour mettre en place le serveur NIS <code>yps</code>, consultez
les paragraphes précédents. Sa configuration est assez similaire
sans être exactement la même, donc faites attention si vous essayez
d'appliquer les instructions de <code>ypserv</code> à
<code>yps</code>! Cependant, <code>yps</code> n'est plus maintenu
par son auteur, et contient un certain nombre de failles de
sécurité. Vous devriez éviter de vous en servir.</p>
<p>Ce serveur NIS peut être trouvé sur :</p>
<blockquote>
<pre><code>
    Site                Repertoire               Nom du Fichier

  ftp.lysator.liu.se  /pub/NYS/servers            yps-0.21.tar.gz
</code></pre></blockquote>
<h2><a name="ss10.3">10.3 Le programme rpc.yppasswdd</a></h2>
<p>À chaque fois qu'un utilisateur change son mot de passe, le mot
de passe de la base de données NIS, ainsi que celui des autres
bases de données NIS, doit être mis à jour. Le programme
<code>rpc.yppasswd</code> est un serveur qui gére les modifications
de mot de passe et qui s'assure que les informations NIS seront
correctement mises à jour. <code>rpc.yppasswdd</code> est désormais
intégré dans <code>ypserv</code>. Vous n'avez plus besoin des
vieilles versions séparées <code>yppasswd-0.9.tar.gz</code> ou
<code>yppasswd-0.10.tar.gz</code>, et vous ne devriez plus les
utiliser. La version de <code>rpc.yppasswdd</code> qui est comprise
dans <code>ypserv 1.3.2</code> gère totalement les Shadow.
<code>yppasswd</code> fait maintenant parti de
yp-tools-1.2.tar.gz.</p>
<p>Le lancement de <code>rpc.yppasswdd</code> n'est nécessaire que
sur le serveur maître. Par défaut, les utilisateurs ne sont pas
autorisés à changer leur Nom complet (NDT: Prénom + Nom), ni leur
shell. Vous pouvez cependant les y autoriser en utilisant l'option
<code>-e</code> de <code>chfn</code> ou l'option <code>-e</code> de
<code>-e</code> de <code>chsh</code>.</p>
<h2><a name="s11">11. Vérifier l'installation de NIS ou de
NYS</a></h2>
<p>Si tout fonctionne correctement (comme cela devrait être), vous
devriez être capable de vérifier votre installation avec quelques
commandes simples. Supposons que le fichier de mots de passe soit
géré par NIS, la commande</p>
<blockquote>
<pre><code>
    % ypcat passwd
</code></pre></blockquote>
<p>devrait alors vous donner le contenu du fichier des mots de
passe. La commande</p>
<blockquote>
<pre><code>
    % ypmatch id_utilisateur passwd
</code></pre></blockquote>
<p>(où <em>id_utilisateur</em> est le nom de login d'un
utilisateur) devrait vous donner l'entrée de l'utilisateur dans le
fichier des mots de passe NIS. Les commandes <code>ypcat</code> et
<code>ypmatch</code> doivent être incluses dans la distribution du
NIS (ou NYS) traditionnel.</p>
<p>Si un utilisateur ne peut pas se connecter, lancez le programme
suivant sur la machine cliente :</p>
<blockquote>
<pre><code>
#include &lt;stdio.h&gt;
#include &lt;pwd.h&gt;
#include &lt;sys/types.h&gt;

int
main(int argc, char *argv[])
{
  struct passwd *pwd;

  if(argc != 2)
    {
      fprintf(stderr,"Usage: getwpnam username\n");
      exit(1);
    }

  pwd=getpwnam(argv[1]);

  if(pwd != NULL)
    {
      printf("name.....: [%s]\n",pwd-&gt;pw_name);
      printf("password.: [%s]\n",pwd-&gt;pw_passwd);
      printf("user id..: [%d]\n", pwd-&gt;pw_uid);
      printf("group id.: [%d]\n",pwd-&gt;pw_gid);
      printf("gecos....: [%s]\n",pwd-&gt;pw_gecos);
      printf("directory: [%s]\n",pwd-&gt;pw_dir);
      printf("shell....: [%s]\n",pwd-&gt;pw_shell);
    }
  else
    fprintf(stderr,"User \"%s\" not found!\n",argv[1]);

  exit(0);
}
</code></pre></blockquote>
<p>Faites tourner ce programme avec le nom de l'utilisateur en
paramètre. Il va afficher toutes les informations renvoyées par la
fonction <code>getpwnam</code> concernant l'utilisateur. Cela peut
vous permettre de savoir si l'entrée est correcte. Un problème
assez fréquemment rencontré est une redéfinition du champ de mot de
passe par un "*".</p>
<h2><a name="s12">12. Problèmes et erreurs de fonctionnement de
NIS</a></h2>
<p>Voici certains problèmes rencontrés par différents utilisateurs
:</p>
<ol>
<li>Les bibliothèques 4.5.19 sont défectueuses. NIS ne fonctionnera
pas avec.</li>
<li>Si vous faites une mise à jour de 4.5.19 à 4.5.24 alors la
commande <code>su</code> plante. Vous devez récupérer la commande
<code>su</code> à partir de la distribution de la
<em>slackware</em> 1.2.0 ou supérieure. Éventuellement, vous pouvez
également y récupérer les bibliothèques mises à jour.</li>
<li>Vous pouvez avoir quelques problèmes avec NIS et DNS sur la
même machine si vous utilisez une vieille distribution en
<em>a.out</em>. Le serveur DNS ne supporte pas toujours NIS.</li>
<li>Lorsqu'un serveur NIS tombe et est relancé, <code>ypbind</code>
démarre avec des messages du genre :
<pre>
         yp_match: clnt_call:
                     RPC: Unable to receive; errno = Connection refused
        
</pre>
et les logins sont refusés pour les utilisateurs référencés dans la
base de donnée NIS. Loguez vous en tant que root si vous le pouvez,
tuez <code>ypbind</code> puis relancez-le.</li>
<li>Après avoir mis à jour la <code>libc</code> version supérieure
à 5.4.20, les outils YP ne fonctionneront plus. Vous devez utiliser
les <code>yp-tools version 1.2</code> ou supérieure pour la
<code>libc &gt;= 5.4.21</code> et <code>glibc 2.x</code>, et la
version <code>yp-clients 2.2</code> pour les versions précédentes.
<code>yp-tools 2.0</code> devrait fonctionner avec toutes les
bibliothèques.</li>
<li>Dans les <code>libc 5.4.21 - 5.4.35</code>,
<code>yp_maplist</code> est défectueux. Vous devrez prendre une
version 5.4.36 ou supérieure, sinon, certains programmes pour YP
comme <code>ypwhich</code> généreront une erreur
<em>seg.fault</em>.</li>
<li>La <code>libc5</code> avec le NIS traditionnel ne gère pas
l'utilisation des mots de passe Shadow avec NIS. Vous devez donc
utiliser la <code>libc5</code> avec NYS ou la <code>glibc
2.x</code>.</li>
<li><code>ypcat shadow</code> ne montre pas la map Shadow. C'est là
quelque chose de correct, puisque le nom de la map Shadow est
"shadow.byname", et non "shadow".</li>
</ol>
<h2><a name="s13">13. FAQ : Les questions les plus fréquemment
posées</a></h2>
<p>Bon nombre de questions doivent être résolues désormais. Si vous
avez des questions sans réponse, vous pouvez poster un message dans
les forums de discussion :</p>
<blockquote>
<pre><code>
    comp.os.linux.help
</code></pre></blockquote>
<p>ou</p>
<blockquote>
<pre><code>
    comp.os.linux.networking
</code></pre></blockquote>
<p>ou contacter l'un des auteurs de ce HOWTO.</p>
</body>
</html>