This file is indexed.

/usr/share/doc/HOWTO/fr-html/NFS-HOWTO.html is in doc-linux-fr-html 2013.01-2.

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
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Linux NFS HOWTO</title>
</head>
<body>
<h1>Linux NFS HOWTO</h1>
<h2>Nicolai Langfeldt <code>janl@linpro.no</code></h2>
v1.0, 1er octobre 1999
<hr>
<em>(30 novembre 1999. Adaptation fran&ccedil;aise par Christophe
Deleuze, <code>Christophe.Deleuze@lip6.fr</code>). HOWTO
d&eacute;crivant l'installation de serveurs et clients NFS.</em>
<hr>
<h2><a name="s1">1. Pr&eacute;ambule</a></h2>
<h2><a name="ss1.1">1.1 Blabla l&eacute;gal</a></h2>
<p>(C)opyright 1997-1999 Nicolai Langfeldt et Ron Peters. Si vous
modifiez ce document signalez le dans le copyright, sa distribution
est libre &agrave; condition de conserver ce paragraphe. La section
FAQ est bas&eacute;e sur la FAQ NFS compil&eacute;e par Alan Cox.
La section <em>Checklist</em> est bas&eacute;e sur une
<em>checklist</em> des probl&egrave;mes de mount compil&eacute;e
par IBM Corporation. La section ``NFS serveur sur disquette'' a
&eacute;t&eacute; &eacute;crite par Ron Peters.</p>
<p>(C)opyright 1997-1999 Christophe Deleuze pour la version
fran&ccedil;aise. Si vous lisez ce document sous le pont de l'Alma,
veillez &agrave; respecter les limitations de vitesse.</p>
<h2><a name="ss1.2">1.2 D&eacute;n&eacute;gation</a></h2>
<p>Ni Nicolai Langfeldt, ni Ron Peters ni leurs employeurs, ni qui
que ce soit, n'assume de responsabilit&eacute; pour les
cons&eacute;quences que les instructions de ce document peuvent
avoir. Si vous choisissez de suivre ces instructions, bonne chance
!</p>
<h2><a name="ss1.3">1.3 Retour</a></h2>
<p>Ce document ne sera jamais termin&eacute;, merci de m'envoyer
par mail vos probl&egrave;mes et r&eacute;ussites, cela pourra
am&eacute;liorer ce HOWTO. Envoyez argent, commentaires et
questions &agrave; <a href=
"mailto:janl@math.uio.no">janl@math.uio.no</a>, ou <a href=
"mailto:rpeters@hevanet.com">rpeters@hevanet.com</a> pour ce qui
concerne les serveurs NFS sur disquette. Si vous m'envoyez un mail,
par piti&eacute;, <em>v&eacute;rifiez</em> que l'adresse de retour
soit correcte et fonctionne. Vous ne vous imaginez pas combien de
mes r&eacute;ponses sont revenues &agrave; cause d'une adresse
incorrecte.</p>
<h2><a name="ss1.4">1.4 Autre blabla</a></h2>
<p>Si vous voulez traduire ce HOWTO merci de me le signaler, que je
puisse savoir en quels langages j'ai &eacute;t&eacute;
publi&eacute; :-). [Ndt : c'est fait...]</p>
<p>Remerciements &agrave; Olaf Kirch pour m'avoir convaincu
d'&eacute;crire ceci, puis fourni de bonnes suggestions.</p>
<p>Les commentaires sur la traduction sont &agrave; envoyer
&agrave; Christophe Deleuze, Christophe.Deleuze@lip6.fr.</p>
<h2><a name="intro"></a> <a name="s2">2. LISEZMOI.d_abord</a></h2>
<p>NFS, le syst&egrave;me de fichiers par r&eacute;seau, a trois
caract&eacute;ristiques importantes :</p>
<ul>
<li>il permet le partage de fichiers sur un r&eacute;seau ;</li>
<li>il marche suffisamment bien ;</li>
<li>il cr&eacute;e tout un tas de probl&egrave;mes de
s&eacute;curit&eacute; bien connus des crackers qui peuvent
facilement les exploiter pour obtenir l'acc&egrave;s (lecture,
&eacute;criture et effacement) &agrave; tous vos fichiers.</li>
</ul>
<p>Je parlerai de ces deux aspects dans ce HOWTO. Lisez bien la
section s&eacute;curit&eacute; et vous supprimerez quelques risques
stupides. Ne dites pas que je ne vous ai pas pr&eacute;venus. Les
passages sur la s&eacute;curit&eacute; sont parfois assez
techniques et demandent quelques connaissances en r&eacute;seau IP.
Si vous ne connaissez pas les termes utilis&eacute;s vous pouvez
soit consulter le HOWTO r&eacute;seau, improviser ou vous procurer
un livre sur l'administration de r&eacute;seau TCP/IP pour vous
familiariser avec TCP/IP. C'est une bonne id&eacute;e de toutes
fa&ccedil;ons si vous administrez des machines UNIX/Linux. Un
tr&egrave;s bon livre sur le sujet est <em>TCP/IP Network
Administration</em> par Craig Hunt, publi&eacute; par O'Reilly
&amp; Associates, Inc. Et quand vous l'aurez lu et compris, vous
vaudrez plus cher sur le march&eacute; du travail, vous ne pouvez
qu'y gagner :-)</p>
<p>Il y a deux sections pour vous aider &agrave; r&eacute;gler vos
probl&egrave;mes NFS, la <em>Mount Checklist</em> et les
<em>FAQs</em>. Jetez-y un oeil si quelque chose ne marche pas comme
pr&eacute;vu.</p>
<p>Si vous voulez/avez besoin de le r&eacute;cup&eacute;rer et
compiler vous m&ecirc;me, le site de r&eacute;f&eacute;rence pour
le nfsd Linux 2.0 est <a href=
"ftp.mathematik.th-darmstadt.de:/pub/linux/okir">ftp.mathematik.th-darmstadt.de:/pub/linux/okir</a>.</p>
<p>&Agrave; propos de NFS sous Linux 2.2 voir <a href=
"#linuxtwotwo">la section sur Linux 2.2</a>.</p>
<h2><a name="nfs-server"></a> <a name="s3">3. Installer un serveur
NFS</a></h2>
<h2><a name="ss3.1">3.1 Conditions pr&eacute;alables</a></h2>
<p>Avant de continuer &agrave; lire ce HOWTO, vous aurez besoin de
pouvoir faire des telnet dans les deux sens entre les machines que
vous utiliserez comme serveur et client. Si cela ne fonctionne pas,
voyez le HOWTO r&eacute;seau (NET-3) et configurez correctement le
r&eacute;seau.</p>
<h2><a name="ss3.2">3.2 Premiers pas</a></h2>
<p>Avant de faire quoi que ce soit d'autre, il nous faut un serveur
NFS install&eacute;. Si vous faites partie d'un d&eacute;partement
r&eacute;seau d'une universit&eacute; ou autre, il y a probablement
un grand nombre de serveurs NFS qui tournent d&eacute;j&agrave;. Si
votre but est d'utiliser un serveur d&eacute;j&agrave;
install&eacute; alors vous pouvez sauter &agrave; <a href=
"#nfs-client">la section sur l'installation d'un client
NFS</a>.</p>
<p>Si vous devez installer un serveur sur une machine non Linux
vous devrez lire les pages de manuel du syst&egrave;me pour trouver
comment configurer le serveur NFS et l'exportation des
syst&egrave;mes de fichiers par NFS. Ce HOWTO contient une section
d&eacute;crivant les manipulations n&eacute;cessaires sur divers
syst&egrave;mes. Ceci fait, vous pourrez passer &agrave; la section
suivante. Ou continuer &agrave; lire cette section vu que certaines
des choses que je vais dire sont pertinentes quel que soit le type
de machine que vous utilisez comme serveur.</p>
<p>Si vous utilisez Linux 2.2, voyez <a href="#linuxtwotwo">la
section sur Linux 2.2</a> avant de passer &agrave; la suite.</p>
<p>Nous allons maintenant configurer tout un tas de programmes.</p>
<h2><a name="ss3.3">3.3 Le portmapper</a></h2>
<p>Le portmapper de Linux est appel&eacute; soit
<code>portmap</code> soit <code>rpc.portmap</code>. La page de
manuel sur mon syst&egrave;me dit que c'est un convertisseur de
port DARPA vers num&eacute;ro de programme RPC. C'est l&agrave; que
se trouve la premi&egrave;re faille de s&eacute;curit&eacute;. La
gestion de ce probl&egrave;me est d&eacute;crite &agrave; la
section <a href="#nfs-security">sur la s&eacute;curit&eacute;</a>,
que, encore une fois, je vous invite tr&egrave;s fortement &agrave;
lire.</p>
<p>Lancez le portmapper. Il devrait &ecirc;tre dans le
r&eacute;pertoire <code>/usr/sbin</code> (sur quelques machines il
est appel&eacute; rpcbind). Vous pouvez le lancer &agrave; la main
pour cette fois mais il devra &ecirc;tre lanc&eacute; &agrave;
chaque d&eacute;marrage de la machine, il faudra donc cr&eacute;er
ou &eacute;diter les scripts rc. Les scripts rc sont d&eacute;crits
dans la page de manuel init, ils sont g&eacute;n&eacute;ralement
dans <code>/etc/rc.d</code>, <code>/etc/init.d</code> ou
<code>/etc/rc.d/init.d</code>. S'il y a un script qui a un nom du
genre <code>inet</code>, c'est probablement le script &agrave;
&eacute;diter. Mais ce qu'il faut &eacute;crire ou faire sort du
cadre de ce HOWTO. Lancez portmap, et v&eacute;rifiez qu'il tourne
avec <code>ps -aux</code>, puis <code>rpcinfo -p</code>. Il y est ?
Benissimo.</p>
<p>Encore une chose. L'acc&egrave;s distant &agrave; votre
portmapper est contr&ocirc;l&eacute; par le contenu de vos fichiers
<code>/etc/hosts.allow</code> et <code>/etc/hosts.deny</code>. Si
<code>rcpinfo -p</code> &eacute;choue alors que le portmapper
tourne, v&eacute;rifiez ces fichiers. Voyez la section <a href=
"#nfs-security">sur la s&eacute;curit&eacute;</a> pour les
d&eacute;tails concernant ces fichiers.</p>
<h2><a name="ss3.4">3.4 Mountd et nfsd</a></h2>
<p>Les prochains programmes &agrave; lancer sont mountd et nfsd.
Mais d'abord il faut &eacute;diter un autre fichier,
<code>/etc/exports</code>. Disons que je veux que le syst&egrave;me
de fichiers <code>/mn/eris/local</code> qui est sur la machine
<code>eris</code> soit disponible sur la machine
<code>apollon</code>. Je l'indique dans <code>/etc/exports</code>
sur eris :</p>
<hr>
<pre>
/mn/eris/local  apollon(rw)
</pre>
<hr>
<p>La ligne ci-dessus donne &agrave; <code>apollon</code> un
acc&egrave;s en lecture/&eacute;criture sur
<code>/mn/eris/local</code>. Au lieu de <code>rw</code> on pourrait
mettre <code>ro</code> pour <em>read only</em> (lecture seule,
c'est la valeur par d&eacute;faut). D'autres options existent, et
je parlerai de quelques unes li&eacute;es &agrave; la
s&eacute;curit&eacute; plus loin. Elles sont toutes d&eacute;crites
dans la page de manuel <code>exports</code> qu'il faut lire au
moins une fois dans sa vie. Il y a de meilleures fa&ccedil;ons de
faire que de lister tous les hosts dans le fichier exports. Peuvent
&ecirc;tre autoris&eacute;s &agrave; monter un syst&egrave;me de
fichiers NFS, des groupes r&eacute;seaux (<em>net groups</em>) si
vous utilisez NIS (ou NYS, auparavant connu sous le nom YP), des
noms de domaines avec jokers et des sous r&eacute;seaux IP. Mais il
faudra v&eacute;rifier qui peut obtenir un acc&egrave;s au serveur
avec ce type d'autorisations group&eacute;es.</p>
<p>Note : ce fichier exports n'utilise pas la m&ecirc;me syntaxe
que d'autres Unix. Ce HOWTO contient une section sur la
fa&ccedil;on dont les autres Unix <code>export</code>ent leurs
fichiers.</p>
<p>Maintenant nous sommes pr&ecirc;ts &agrave; lancer mountd (ou
peut-&ecirc;tre s'appelle-t-il <code>rpc.mountd</code>), puis nfsd
(qui s'appelle peut-&ecirc;tre <code>rpc.nfsd</code>). Ils liront
tous deux le fichier exports.</p>
<p>Si vous modifiez <code>/etc/exports</code>, vous devrez vous
assurer que nfsd et mountd savent que le fichier a chang&eacute;.
La fa&ccedil;on traditionnelle est de lancer <code>exportfs</code>.
Beaucoup de distributions Linux n'ont pas le programme exportfs. Si
c'est le cas sur votre machine, vous pouvez installer ce script
:</p>
<hr>
<pre>
#!/bin/sh
killall -HUP /usr/sbin/rpc.mountd
killall -HUP /usr/sbin/rpc.nfsd
echo Volumes NFS r&eacute;export&eacute;s
</pre>
<hr>
<p>Sauvez le dans <code>/usr/sbin/exportfs</code> par exemple, et
n'oubliez pas de lui appliquer <code>chmod a+rx</code>.
D&eacute;sormais, chaque fois que vous changez votre fichier
exports, lancez ensuite exportfs en root.</p>
<p>Maintenant, v&eacute;rifiez que mountd et nfsd fonctionnent
correctement. D'abord avec <code>rpcinfo -p</code>. Il devrait
donner quelque chose du genre :</p>
<hr>
<pre>
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp    745  mountd
    100005    1   tcp    747  mountd
    100003    2   udp   2049  nfs
    100003    2   tcp   2049  nfs
</pre>
<hr>
<p>On voit que le portmapper a annonc&eacute; ses services, de
m&ecirc;me que mountd et nfsd.</p>
<p>Si vous obtenez : <code>rpcinfo: can't contact portmapper: RPC:
Remote system error - Connection refused</code>,
<code>RPC_PROG_NOT_REGISTERED</code> ou quelque chose du style
c'est que le portmapper ne tourne pas. OU, vous avez quelques chose
dans <code>/etc/hosts.{allow,deny}</code> qui interdit au
portmapper de r&eacute;pondre, voyez <a href="#nfs-security">la
section s&eacute;curit&eacute;</a> &agrave; ce propos. Si vous
obtenez <code>No remote programs registered</code> alors soit le
portmapper ne veut pas vous parler, soit quelque chose ne marche
pas. Tuez nfsd, mountd et le portmapper et essayez de
recommencer.</p>
<p>Apr&egrave;s avoir v&eacute;rifi&eacute; que le portmapper rend
compte des services vous pouvez v&eacute;rifier aussi avec
<code>ps</code>. Le portmapper continuera &agrave; afficher les
services m&ecirc;me si les programmes qui les offrent ont
crash&eacute;. Il vaut donc mieux v&eacute;rifier par ps si quelque
chose ne marche pas.</p>
<p>Bien sur, vous devrez modifier vos fichiers syst&egrave;mes rc
pour lancer mountd et nfsd au d&eacute;marrage de la m&ecirc;me
fa&ccedil;on que le portmapper. Il y a de tr&egrave;s fortes
chances que les scripts existent d&eacute;j&agrave; sur votre
machine, vous aurez juste &agrave; d&eacute;commenter les bonnes
lignes ou les activer pour les bons <em>runlevels</em> (pardon
niveaux d'ex&eacute;cution) d'init.</p>
<p>Quelques pages de manuel avec lesquelles vous devriez &ecirc;tre
familier : portmap, mountd, nfsd et exports.</p>
<p>Bon, si vous avez tout fait exactement comme j'ai dit vous
&ecirc;tes pr&ecirc;ts &agrave; encha&icirc;ner sur le client
NFS.</p>
<h2><a name="nfs-client"></a> <a name="s4">4. Installer un client
NFS</a></h2>
<p>Tout d'abord il faudra compiler un noyau avec le syst&egrave;me
de fichiers NFS, soit compil&eacute; dans le noyau, soit disponible
sous forme de module. Si vous n'avez encore jamais compil&eacute;
un noyau vous aurez peut &ecirc;tre besoin de consulter le HOWTO du
noyau. Si vous utilisez une distribution tr&egrave;s cool (comme
Chapeau Rouge) et que vous n'avez jamais trifouill&eacute; le noyau
(pas toucher toucher) il y a des chances que NFS soit
automagiquement disponible.</p>
<p>Vous pouvez maintenant, &agrave; l'invite (prompt) du root,
entrer la commande <code>mount</code> appropri&eacute;e et le
syst&egrave;me de fichiers appara&icirc;tra. Continuons avec
l'exemple de la section pr&eacute;c&eacute;dente, nous voulons
monter <code>/mn/eris/local</code> depuis eris. La commande est
:</p>
<hr>
<pre>
mount -o rsize=1024, wsize=1024 eris:/mn/eris/local /mnt
</pre>
<hr>
<p>Nous reviendrons plus tard sur les options rsize et wsize. Le
syst&egrave;me de fichiers est maintenant disponible sous /mnt et
vous pouvez faire un cd sur lui, puis un ls et regarder les
fichiers individuellement. Vous remarquerez que ce n'est pas aussi
rapide qu'avec un syst&egrave;me de fichiers local, mais beaucoup
plus pratique que ftp. Si, au lieu de monter le syst&egrave;me de
fichiers, mount renvoie un message d'erreur comme <code>mount:
eris:/mn/eris/local failed, reason given by server: Permission
denied</code> alors le fichier exports est incorrect, ou vous avez
oubli&eacute; de lancer exportfs apr&egrave;s avoir modifi&eacute;
le fichier exports. S'il dit <code>mount: clntudp_ipdate: RPC:
Program not registered</code> cela signifie que nfsd ou mountd ne
tourne pas sur le serveur, ou que vous avez le probl&egrave;me avec
les fichiers <code>hosts.{allow,deny}</code> mentionn&eacute; plus
haut.</p>
<p>Pour vous d&eacute;barrasser du syst&egrave;me de fichiers, vous
pouvez faire :</p>
<hr>
<pre>
umount /mnt
</pre>
<hr>
<p>Pour que le syst&egrave;me monte automatiquement un
syst&egrave;me de fichiers NFS au d&eacute;marrage, &eacute;ditez
<code>/etc/fstab</code> de la fa&ccedil;on habituelle. Par exemple
avec une ligne comme celle-ci :</p>
<hr>
<pre>
# device       mountpoint    fs-type    options           dumps  sfckorder
...
eris:/mn/eris/local   /mnt   nfs     rsize=1024,wsize=1024   0   0
...
</pre>
<hr>
<p>C'est presque tout ce qu'il y a &agrave; savoir. Vous pouvez
jeter un coup d'oeil &agrave; la page de manuel <code>nfs</code>.
Continuons plize.</p>
<h2><a name="ss4.1">4.1 Options de montage</a></h2>
<p>Il y a trois comportements principaux des clients NFS en cas de
chute du serveur qui sont sp&eacute;cifi&eacute;s par les options
de montage :</p>
<dl>
<dt><b>soft</b></dt>
<dd>
<p>Le client NFS renverra une erreur au processus concern&eacute;
si apr&egrave;s quelques essais le serveur NFS persiste &agrave; ne
pas r&eacute;pondre. Si vous voulez utiliser cette option, vous
devez v&eacute;rifier que votre logiciel la g&egrave;re
correctement. Je ne recommande pas ce r&eacute;glage, c'est un bon
moyen de perdre des donn&eacute;es et corrompre des fichiers. En
particulier, n'utilisez pas &ccedil;a pour les disques o&ugrave;
sont stock&eacute;s vos mails (si vous tenez &agrave; vos
mails).</p>
</dd>
<dt><b>hard</b></dt>
<dd>
<p>Le client NFS r&eacute;essaiera infiniment jusqu'&agrave; ce
qu'il soit tu&eacute;. Les op&eacute;rations reprendront
normalement si le serveur NFS se r&eacute;tablit ou
red&eacute;marre. Le client ne pourra pas &ecirc;tre interrompu ou
tu&eacute;.</p>
</dd>
<dt><b>hard,intr</b></dt>
<dd>
<p>Comme hard, mais Ctrl-C tuera le processus bloqu&eacute;. Dans
quelques cas, notament un disque /usr/spool/mail mont&eacute; par
NFS cela ne changera rien car le shell ignore le Ctrl-C quand il
teste si vous avez du mail. Je recommande cette option pour
<b>tous</b> les syst&egrave;mes de fichiers NFS, y compris le
<em>spool</em> du mail.</p>
</dd>
</dl>
<p>Reprenons l'exemple pr&eacute;c&eacute;dent, votre entr&eacute;e
fstab est maintenant :</p>
<hr>
<pre>
# device       mountpoint   fs-type    options            dumps  sfckorder
...
eris:/mn/eris/local   /mnt  nfs   rsize=1024,wsize=1024,hard,intr 0   0
...
</pre>
<hr>
<h2><a name="optimizing"></a> <a name="ss4.2">4.2 Optimisation de
NFS</a></h2>
<p>Normalement, si les options rsize et wsize ne sont pas
pr&eacute;cis&eacute;es, NFS &eacute;crira et lira par blocs de
4096 ou 8192 octets. Mais certaines combinaisons de noyau Linux et
cartes r&eacute;seau ne peuvent pas fonctionner avec ces valeurs,
de plus, m&ecirc;me si cela marche, cela peut ne pas &ecirc;tre
optimal du tout. Il nous faudra donc exp&eacute;rimenter et trouver
les valeurs de rsize et wsize qui fonctionnent et donnent les
transferts les plus rapides. Vous pouvez tester la vitesse obtenue
avec diff&eacute;rentes valeurs des options avec des commandes
simples. La commande mount ci-dessus ayant &eacute;t&eacute;
ex&eacute;cut&eacute;e, si vous avez l'acc&egrave;s en
&eacute;criture sur le disque vous pouvez tester les performances
en &eacute;criture s&eacute;quentielle :</p>
<hr>
<pre>
time dd if=/dev/zero of=/mnt/testfile bs=16k count=4096
</pre>
<hr>
<p>Ceci cr&eacute;e un fichier de 64 Mo ne contenant que des 0.
Faites le quelques (5-10?) fois et prenez la moyenne des temps.
C'est le temps `elapsed' ou `wall clock' qui est le plus
int&eacute;ressant. Ensuite vous pouvez tester les performances en
lecture en relisant le fichier :</p>
<hr>
<pre>
time dd if=/mnt/testfile of=/dev/null bs=16k
</pre>
<hr>
<p>faites le quelques fois et prenez la moyenne. Puis
d&eacute;montez (<code>umount</code>) et remontez
(<code>mount</code>) avec des valeurs plus grandes pour rsize et
wsize. Il vaut mieux prendre des multiples de 1024, et probablement
pas plus grand que 16384 octets, car les gros blocs ralentissent
les acc&egrave;s al&eacute;atoires. Imm&eacute;diatement
apr&egrave;s avoir re<code>mount</code>&eacute; avec une taille
sup&egrave;rieure, placez vous (<code>cd</code>) dans le
syst&egrave;me de fichiers et faites des trucs comme ls, explorez
un peu pour v&eacute;rifier que tout est bien normal. Si la valeur
de rsize/wsize est trop grande, les sympt&ocirc;mes sont
<em>vraiment</em> bizarres et pas &eacute;vidents. Un
sympt&ocirc;me typique est une liste de fichiers donn&eacute;e par
<code>ls</code> incompl&egrave;te sans aucun message d'erreur. Ou
la lecture de fichier qui &eacute;choue myst&eacute;rieusement et
sans message d'erreur. Apr&egrave;s vous &ecirc;tre assur&eacute;s
que les wsize/rsize choisis fonctionnent, vous pouvez faire les
tests de rapidit&eacute;. Diff&eacute;rentes plateformes de serveur
auront peut-&ecirc;tre des tailles optimales diff&eacute;rentes.
SunOS et Solaris sont r&eacute;put&eacute;s pour &ecirc;tre
beaucoup plus rapides avec une taille de 4096 octets.</p>
<p>Les noyaux Linux r&eacute;cents (depuis 1.3) font parfois des
lectures anticip&eacute;es (<em>read ahead</em>) pour des rsizes
sup&eacute;rieurs ou &eacute;gaux &agrave; la taille de page de la
machine. Sur les processeurs Untel la taille de la page est de 4096
octets. La lecture anticip&eacute;e augmentera
<em>sensiblement</em> les performances en lecture. Sur une machine
Untel on devrait donc choisir un rsize de 4096 si c'est
possible.</p>
<p>Un truc pour augmenter les performances d'&eacute;criture de NFS
est d'invalider les &eacute;critures synchrones sur le serveur. Les
sp&eacute;cifications de NFS disent que les requ&ecirc;tes
d'&eacute;criture de NFS ne doivent pas &ecirc;tre
consid&eacute;r&eacute;es comme termin&eacute;es avant que les
donn&eacute;es ne soient sur un m&eacute;dium non versatile
(normalement le disque). Ceci r&eacute;duit les performances
&agrave; l'&eacute;criture, les &eacute;critures asynchrones sont
plus rapides. Le nfsd Linux ne fait pas d'&eacute;critures
synchrones car l'impl&eacute;mentation du syst&egrave;me de
fichiers ne s'y pr&ecirc;te pas, mais sur les serveurs non Linux
vous pouvez augmenter les performances de cette fa&ccedil;on dans
votre fichier exports :</p>
<hr>
<pre>
/dir    -async, access=linuxbox
</pre>
<hr>
<p>ou quelque chose du genre. R&eacute;f&eacute;rez vous &agrave;
la page de manuel exports de la machine concern&eacute;e. Notez que
ceci augmente les risques de perte de donn&eacute;es.</p>
<h2><a name="slow-lines"></a> <a name="s5">5. NFS sur les lignes
&agrave; faible d&eacute;bit</a></h2>
<p>Les lignes lentes (&agrave; faible d&eacute;bit) comprennent les
modems, RNIS et aussi sans doute les autres connexions longue
distance.</p>
<p>Cette section est bas&eacute;e sur la connaissance des
protocoles utilis&eacute;s mais pas sur des
exp&eacute;rimentations. Faites moi savoir si vous essayez ceci
;-)</p>
<p>La premi&egrave;re chose &agrave; retenir est que NFS est un
protocole lent. Il a un grand <em>overhead</em> (sur-co&ucirc;t en
bande passante). Utiliser NFS, c'est presque comme utiliser kermit
pour transf&eacute;rer des fichiers. Il est <em>lent</em>. Presque
tout est plus rapide que NFS. FTP est plus rapide. HTTP est plus
rapide. rcp est plus rapide. ssh est plus rapide.</p>
<p>Vous voulez toujours l'essayer ? Ok.</p>
<p>Par d&eacute;faut NFS est param&eacute;tr&eacute; pour des
lignes rapides et &agrave; faible latence. Si vous utilisez les
param&egrave;tres par d&eacute;faut sur des lignes &agrave; grande
latence cela peut provoquer des erreurs, des annulations, des
r&eacute;tr&eacute;cissements de fichiers, et des comportements
bizarres.</p>
<p>La premi&egrave;re chose &agrave; faire est de ne <em>pas</em>
utiliser l'option de montage <code>soft</code>. Les temporisations
retourneront des erreurs au logiciel, qui, dans l'immense
majorit&eacute; des cas, ne saura pas quoi en faire. C'est une
bonne fa&ccedil;on d'avoir des probl&egrave;mes bizarres. Utilisez
plut&ocirc;t l'option de montage <code>hard</code>. Quand
<code>hard</code> est actif les temporisations d&eacute;clenchent
des essais infinis au lieu d'annuler ce que le logiciel
&eacute;tait en train de faire (quoi que ce soit). C'est ce que
vous voulez. Vraiment.</p>
<p>La deuxi&egrave;me chose &agrave; faire est d'ajuster les
options de montage <code>timeo</code> et <code>retrans</code>.
Elles sont d&eacute;crites dans la page de manuel nfs(5), en voici
un extrait (version fran&ccedil;aise) :</p>
<hr>
<pre>
       timeo=n        La valeur,  en  dixiemes  de  secondes,  du
                      delai   avant  de  declencher  la  premiere
                      retransmission d'une RPC.   La  valeur  par
                      defaut  est 7/10 de seconde. Apres une pre&shy;
                      miere expiration, le delai  est  double  et
                      l'on recommence les retransmissions jusqu'a
                      ce que le delai atteigne la valeur maximale
                      de 60 secondes, ou que le nombre maximal de
                      retransmission soit depasse.  Il se produit
                      alors  une  erreur  d'expiration majeure de
                      delai.  Si le systeme est monte  "en  dur",
                      les  retransmissions  reprendront a nouveau
                      indefiniment.

                      On peut ameliorer les performances en  aug&shy;
                      mentant  le delai sur un  reseau charge, si
                      le serveur est un  peu  lent,  ou  si  l'on
                      traverse plusieurs routeurs ou passerelles.

       retrans=n      Le  nombre  d'expirations  mineures  et  de
                      retransmissions  qui  doivent  se  produire
                      avant de declencher une expiration majeure.
                      La  valeur  par  defaut  est  3 expirations
                      mineures.  Quand  une  erreur  d'expiration
                      majeure  se  produit,  soit l'operation est
                      abandonnee, soit  un  message  "server  not
                      responding" est affiche sur la console.
</pre>
<hr>
<p>En d'autres mots : si une r&eacute;ponse n'est pas re&ccedil;ue
avant la temporisation de 0,7 seconde (700 ms), le client NFS
r&eacute;p&eacute;tera la requ&ecirc;te et doublera la
temporisation &agrave; 1,4 seconde. Si la r&eacute;ponse n'arrive
pas dans les 1,4 seconde, la requ&ecirc;te est
r&eacute;p&eacute;t&eacute;e &agrave; nouveau et la temporisation
est doubl&eacute;e &agrave; 2,8 secondes.</p>
<p>La vitesse de la ligne peut &ecirc;tre mesur&eacute;e avec un
ping ayant vos valeurs de rsize/wsize comme taille de paquet.</p>
<hr>
<pre>
$ ping -s 8192 lugulbanda
PING lugulbanda.uio.no (129.240.222.99): 8192 data bytes
8200 bytes from 129.240.222.99: icmp_seq=0 ttl=64 time=15.2 ms
8200 bytes from 129.240.222.99: icmp_seq=1 ttl=64 time=15.9 ms
8200 bytes from 129.240.222.99: icmp_seq=2 ttl=64 time=14.9 ms
8200 bytes from 129.240.222.99: icmp_seq=3 ttl=64 time=14.9 ms
8200 bytes from 129.240.222.99: icmp_seq=4 ttl=64 time=15.0 ms

--- lugulbanda.uio.no ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 14.9/15.1/15.9 ms
</pre>
<hr>
<p>Le temps indiqu&eacute; est celui que le paquet du ping a pris
pour aller et revenir de lugulbanda. 15 ms, c'est assez rapide. Sur
une ligne &agrave; 28 800 bps vous pouvez vous attendre &agrave;
une valeur de l'ordre de 4000-5000 ms, et si la ligne est
charg&eacute;e ce temps sera encore plus &eacute;lev&eacute;,
facilement le double. En g&eacute;n&eacute;ral, la latence augmente
avec la taille des paquets et la charge de la ligne. Si vous
comptez utiliser FTP et NFS en m&ecirc;me temps il faudra mesurer
les temps du ping pendant un transfert FTP et augmenter
<code>timeo</code> en accord avec la latence de votre ligne.</p>
<h2><a name="nfs-security"></a> <a name="s6">6. NFS et la
s&eacute;curit&eacute;</a></h2>
<p>Je ne suis en aucun cas un expert en s&eacute;curit&eacute;
informatique. Mais j'ai tra&icirc;n&eacute; dans le secteur et j'ai
un <em>petit</em> conseil pour ceux qui se pr&eacute;occupent de la
s&eacute;curit&eacute;. Mais attention. Ce n'est pas absolument pas
une liste compl&egrave;te des probl&egrave;mes li&eacute;s &agrave;
NFS et si vous pensez &ecirc;tre en s&eacute;curit&eacute; une fois
que vous avez lu et mis en pratique tout ceci alors j'ai un pilier
de pont (presque neuf) &agrave; vous vendre.</p>
<p>Cette section n'a probablement pas d'int&eacute;r&ecirc;t si
vous &ecirc;tes sur un r&eacute;seau <em>ferm&eacute;</em>
o&ugrave; vous avez confiance en tous les utilisateurs, et que
personne en qui vous n'avez pas confiance ne peut obtenir un
acc&egrave;s sur les machines du r&eacute;seau. I.e., il ne devrait
y avoir aucun moyen de se connecter &agrave; votre r&eacute;seau
depuis l'ext&eacute;rieur et il ne devrait &ecirc;tre reli&eacute;
&agrave; aucun autre r&eacute;seau o&ugrave; vous n'avez pas
confiance en tous les utilisateurs et en sa s&eacute;curit&eacute;.
Vous pensez que je suis parano ? Pas du tout. C'est un conseil de
s&eacute;curit&eacute; <em>de base</em>. Et rappelez-vous que c'est
juste le commencement. Un site <em>s&ucirc;r</em> n&eacute;cessite
un administrateur consciencieux et bien inform&eacute; qui sait
o&ugrave; trouver l'information sur les probl&egrave;mes de
s&eacute;curit&eacute; existants ou potentiels.</p>
<p>Un probl&egrave;me de base de NFS est que le client, si on ne
lui demande pas le contraire, fera confiance au serveur NFS et vice
versa. &Ccedil;a peut &ecirc;tre mauvais. Cela signifie que si le
compte root du serveur est cass&eacute; (<em>broken into</em>) il
peut &ecirc;tre tr&egrave;s facile de casser le compte root du
client. Et vice versa. Il y a quelques moyens de g&eacute;rer ce
probl&egrave;me sur lesquels nous reviendrons.</p>
<p>Les documents consultatifs (<em>advisories</em>) du CERT sur NFS
sont une bonne source d'information, la plupart des
probl&egrave;mes (et des solutions) &eacute;voqu&eacute;es
ci-dessous sont trait&eacute;s dans ces documents. Voyez <a href=
"ftp://ftp.cert.orf/01-README">ftp.cert.org:/01-README</a> pour une
liste &agrave; jour. En voici quelques-uns li&eacute;s &agrave; NFS
(il n'y a pas &agrave; ma connaissance de version fran&ccedil;aise)
:</p>
<hr>
<pre>
CA-91:21.SunOS.NFS.Jumbo.and.fsirand                            12/06/91
     Vulnerabilities concerning Sun Microsystems, Inc. (Sun) Network
     File System (NFS) and the fsirand program.  These vulnerabilities
     affect SunOS versions 4.1.1, 4.1, and 4.0.3 on all architectures.
     Patches are available for SunOS 4.1.1.  An initial patch for SunOS
     4.1 NFS is also available. Sun will be providing complete patches
     for SunOS 4.1 and SunOS 4.0.3 at a later date.

CA-94:15.NFS.Vulnerabilities                                    12/19/94
     This advisory describes security measures to guard against several
     vulnerabilities in the Network File System (NFS). The advisory was
     prompted by an increase in root compromises by intruders using tools
     to exploit the vulnerabilities.

CA-96.08.pcnfsd                                                 04/18/96
     This advisory describes a vulnerability in the pcnfsd program (also
     known as rpc.pcnfsd). A patch is included.
</pre>
<hr>
<h2><a name="ss6.1">6.1 S&eacute;curit&eacute; du client</a></h2>
<p>Du c&ocirc;t&eacute; client il y a quelques options de mount qui
permettent de ne pas faire trop confiance au serveur. L'option
<code>nosuid</code> interdit le d&eacute;marrage de programmes suid
depuis le syst&egrave;me de fichiers NFS. C'est une option &agrave;
utiliser syst&eacute;matiquement, car elle emp&ecirc;che le root du
serveur de cr&eacute;er un fichier suid sur le syst&egrave;me de
fichiers NFS, puis de se loger dans le client en utilisateur et de
lancer le programme suid pour devenir root sur le client. Il est
aussi possible d'interdire l'ex&eacute;cution des fichiers du
syst&egrave;me de fichiers NFS avec l'option <code>noexec</code>.
Mais ceci est beaucoup moins utile que <code>nosuid</code> car le
syst&egrave;me de fichiers contiendra tr&egrave;s probablement au
moins <em>quelques</em> scripts ou programmes &agrave;
ex&eacute;cuter. Ces options se rentrent dans la colonne d'options,
avec <code>wsize</code> et <code>rsize</code>,
s&eacute;par&eacute;es par des virgules.</p>
<h2><a name="ss6.2">6.2 S&eacute;curit&eacute; du serveur :
nfsd</a></h2>
<p>Du c&ocirc;t&eacute; serveur on peut ne pas faire confiance au
root du client, avec l'option <code>root_squash</code> (rembarrage
du root :-) dans le fichier exports :</p>
<hr>
<pre>
/mn/eris/local apollon(rw, root_squash)
</pre>
<hr>
<p>Dans ce cas, si un utilisateur du client avec l'UID 0 essaye
d'acc&eacute;der (en lecture, &eacute;criture ou effacement) au
syst&egrave;me de fichiers, le serveur remplace l'UID par celui de
l'utilisateur `nobody' du serveur. Ceci signifie que l'utilisateur
root du client ne peut acc&eacute;der/modifier les fichiers du
serveur que seul le root du serveur peut acc&eacute;der/modifier.
C'est bien, et vous aurez probablement &agrave; utiliser cette
option sur tous les syst&egrave;mes de fichiers que vous exportez.
J'en entends un qui me dit : ``Mais l'utilisateur root du client
peut toujours utiliser 'su' pour devenir n'importe qui et
acc&eacute;der &agrave; ses fichiers !'' Et l&agrave; je
r&eacute;ponds : ``Oui, c'est comme &ccedil;a, c'est Unix''. Ceci a
une cons&eacute;quence importante : tous les fichiers et binaires
importants devraient appartenir &agrave; <code>root</code>, et pas
<code>bin</code> ou un compte autre que root, car le seul compte
auquel le root du client ne peut pas acc&eacute;der est le compte
root du serveur. Plusieurs autres options permettant de ne pas
faire confiance &agrave; qui ne vous plait pas sont
&eacute;num&eacute;r&eacute;es dans la page de manuel nfsd. Il y a
aussi des options pour rembarrer (<em>to squash</em>) des
intervalles d'UID ou GID.</p>
<p>Il est important aussi de s'assurer que nfsd v&eacute;rifie que
toutes les requ&ecirc;tes viennent d'un port
privil&eacute;gi&eacute;. S'il accepte les requ&ecirc;tes de
n'importe quel port du client, un utilisateur quelconque peut
ex&eacute;cuter un programme qu'il est facile de se procurer sur
l'Internet. Il parle le protocole NFS et pourra pr&eacute;tendre
&ecirc;tre n'importe qui et &ecirc;tre cru. &Ccedil;a fait peur
hein ? Le nfsd Linux effectue cette v&eacute;rification par
d&eacute;faut, sur d'autres syst&egrave;mes d'exploitation il faut
la valider. &Ccedil;a devrait &ecirc;tre d&eacute;crit dans les
pages du manuel de ce syst&egrave;me.</p>
<p>Autre chose. N'exportez jamais un syst&egrave;me de fichiers
vers `localhost' ou 127.0.0.1. Croyez-moi.</p>
<h2><a name="ss6.3">6.3 S&eacute;curit&eacute; du serveur : le
portmapper</a></h2>
<p>Le portmapper de base, en combinaison avec nfsd pr&eacute;sente
un probl&egrave;me de conception qui rend possible de
r&eacute;cup&eacute;rer les fichiers d'un serveur NFS sans avoir
aucun privil&egrave;ge. Heureusement le portmapper utilis&eacute;
par la plupart des distributions Linux est relativement s&ucirc;r
vis &agrave; vis de cette attaque, et peut &ecirc;tre
s&eacute;curis&eacute; en configurant les listes d'acc&egrave;s au
moyen de deux fichiers.</p>
<p>Toutes les distributions de Linux ne sont pas &eacute;gales.
Certaines apparemment &agrave; jour n'incluent <em>pas</em> un
portmapper sur, m&ecirc;me aujourd'hui, alors que le
probl&egrave;me est connu depuis plusieurs ann&eacute;es. Au moins
une distribution contient m&ecirc;me la page de manuel pour un
portmapper s&ucirc;r alors que le portmapper effectivement
install&eacute; n'est <em>pas</em> s&ucirc;r. Pour
d&eacute;terminer simplement si votre portmapper est le bon ou pas,
lancez strings(1) et voyez s'il lit les fichiers appropri&eacute;s
<code>/etc/hosts.deny</code> et <code>/etc/hosts.allow</code>. Si
votre portmapper est <code>/usr/sbin/portmap</code> ex&eacute;cutez
la commande <code>strings /usr/sbin/portmap | grep hosts</code>.
Sur ma machine cela donne :</p>
<hr>
<pre>
/etc/hosts.allow
/etc/hosts.deny
@(#) hosts_ctl.c 1.4 94/12/28 17:42:27
@(#) hosts_access.c 1.20 96/02/11 17:01:27
</pre>
<hr>
<p>Tout d'abord, &eacute;ditons <code>/etc/hosts.deny</code>. Il
devrait contenir la ligne :</p>
<hr>
<pre>
portmap: ALL
</pre>
<hr>
<p>qui refusera l'acc&egrave;s &agrave; <em>quiconque</em>.
Maintenant qu'il est ferm&eacute;, lancez <code>rpcinfo -p</code>
pour v&eacute;rifier qu'il lit et se conforme au contenu du
fichier. rpcinfo ne devrait rien renvoyer, ou peut &ecirc;tre un
message d'erreur. Il ne devrait <em>pas</em> y avoir besoin de
relancer le portmapper.</p>
<p>Fermer le portmapper &agrave; tous le monde est peut &ecirc;tre
un peu excessif, nous r&eacute;-ouvrons donc quelque peu
l'acc&egrave;s en &eacute;ditant le fichier
<code>/etc/hosts.allow</code>. Mais il faut d'abord savoir ce qu'on
va y mettre. &Agrave; la base, il devrait contenir les noms de
toutes les machines qui doivent avoir acc&egrave;s &agrave; votre
portmapper. Sur le syst&egrave;me Linux moyen il y a tr&egrave;s
peu de machines qui ont une bonne raison de demander cet
acc&egrave;s. Le portmapper administre nfsd, mountd, ypbind/ypserv,
pcnfsd et les services ``en r'' comme ruptime et rusers. Parmis
ceux-ci, seuls nfsd, mountd, ypbind/ypserv et peut-&ecirc;tre
pcnfsd ont de l'importance. Toutes les machines qui ont besoin
d'acc&eacute;der &agrave; ces services sur votre machine devraient
y &ecirc;tre autoris&eacute;es. Disons que votre machine est
129.240.223.254 et que tout ce qui vit sur le sous r&eacute;seau
129.240.223.0 doit pouvoir y acc&eacute;der (si ceci n'est pas
clair pour vous, voyez le HOWTO r&eacute;seau). On &eacute;crit
:</p>
<hr>
<pre>
portmap: 129.240.223.0/255.255.255.0
</pre>
<hr>
<p>dans <code>hosts.allow</code>. C'est l'adresse de r&eacute;seau
que vous donnez aussi &agrave; la commande <code>route</code> et le
masque de r&eacute;seau que vous donnez &agrave;
<code>ifconfig</code>. Pour le p&eacute;rif&eacute;rique
<code>eth0</code> sur cette machine <code>ifconfig</code> devrait
donner :</p>
<hr>
<pre>
...
eth0      Link encap:10Mbps Ethernet  HWaddr 00:60:8C:96:D5:56
          inet addr:129.240.223.254  Bcast:129.240.223.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:360315 errors:0 dropped:0 overruns:0
          TX packets:179274 errors:0 dropped:0 overruns:0
          Interrupt:10 Base address:0x320 
...
</pre>
<hr>
<p>et <code>netstat -rn</code> devrait donner :</p>
<hr>
<pre>
Kernel routing table
Destination     Gateway         Genmask         Flags Metric Ref Use    Iface
...
129.240.223.0   0.0.0.0         255.255.255.0   U     0      0   174412 eth0
...
</pre>
<hr>
<p>(Adresse r&eacute;seau dans la premi&egrave;re colonne)</p>
<p>Les fichiers <code>hosts.deny</code> et <code>hosts.allow</code>
sont d&eacute;crits dans les pages de manuel de m&ecirc;mes
noms.</p>
<p><b>IMPORTANT</b> : ne <em>rien</em> mettre d'autre que des
adresses IP (num&eacute;riques) dans les lignes portmap de ces
fichiers. Les <em>host name lookup</em> (recherche d'adresse IP
(num&eacute;rique) &agrave; partir de l'adresse
alphanum&eacute;rique ex. ftp.lip6.fr donne 132.227.77.2) peuvent
indirectement d&eacute;clencher une activit&eacute; portmap qui
d&eacute;clenchera un <em>host name lookup</em> qui
d&eacute;clenchera...</p>
<p>Ceci fait, votre serveur devrait &ecirc;tre un peu plus solide.
Le dernier probl&egrave;me (mais oui !) est que quelqu'un casse le
compte root (ou boute MS-DOS) sur une machine de confiance et
utilise ce privil&egrave;ge pour envoyer des requ&ecirc;tes depuis
un port s&ucirc;r en se faisant passer pour n'importe quel
utilisateur.</p>
<h2><a name="ss6.4">6.4 NFS et les coupent-feu (firewalls)</a></h2>
<p>C'est une tr&egrave;s bonne id&eacute;e de bloquer les ports NFS
et portmap dans votre routeur ou firewall. nfsd utilise le port
2049, que ce soit avec tcp ou udp. Le portmapper est au port 749
(tcp et udp) et mountd aux port 745 et 747 (tcp et udp).
V&eacute;rifiez les ports avec la commande <code>rpcinfo
-p</code>.</p>
<p>Si au contraire vous voulez que NFS traverse un firewall, il
existe des options sur les nfsd et mountd r&eacute;cents pour leur
sp&eacute;cifier le port &agrave; utiliser. Vous pouvez donc
choisir un port qui ne soit pas bloqu&eacute; par le firewall.</p>
<h2><a name="ss6.5">6.5 R&eacute;sum&eacute;</a></h2>
<p>Si vous configurez correctement votre installation
portmapper/NFS avec hosts.allow/deny, root_squash, nosuid et les
ports privil&eacute;gi&eacute;s, vous &eacute;vitez beaucoup des
bogues connues de NFS et pouvez presque vous sentir en
s&eacute;curit&eacute; au moins pour <em>&ccedil;a</em>. Mais de
toutes fa&ccedil;ons : quand un intrus obtient l'acc&egrave;s
&agrave; votre r&eacute;seau, il/elle peut faire appara&icirc;tre
des commandes bizarres dans votre .forward ou lire votre mail quand
<code>/home</code> ou <code>/var/spool/mail</code> sont
export&eacute;s. Pour la m&ecirc;me raison, vous ne devriez jamais
acc&eacute;der &agrave; votre cl&eacute; priv&eacute;e PGP par NFS.
Ou au moins vous devez savoir quel est le risque. Et maintenant
vous savez un peu.</p>
<p>NFS et le portmapper constituent un syst&egrave;me complexe et
il n'est donc pas totalement exclu que de nouvelles bogues soient
d&eacute;couvertes, soit dans la conception soit dans
l'impl&eacute;mentation que nous utilisons. Il pourrait m&ecirc;me
y avoir des d&eacute;fauts de s&eacute;curit&eacute; connus, que
quelqu'un utilise. Mais c'est la vie. Pour vous tenir au courant,
vous devriez au moins lire les forums comp.os.linux.announce et
comp.security.announce comme minimum absolu (en fran&ccedil;ais,
consultez fr.comp.os.linux.annonces).</p>
<h2><a name="s7">7. ``Checklist'' mount</a></h2>
<p>Cette section est bas&eacute;e sur la <i>mount checklist</i>
(liste des probl&egrave;mes li&eacute;s &agrave;
<code>mount</code>) de IBM Corp. Je les remercie de m'autoriser
&agrave; l'utiliser dans ce HOWTO. Si vous avez un probl&egrave;me
en montant un syst&egrave;me de fichiers NFS, consultez cette liste
avant de poster votre probl&egrave;me sur les niouzes. Chaque point
d&eacute;crit un type de probl&egrave;me et sa solution.</p>
<ol>
<li>Mount r&eacute;p&egrave;te <code>RPC: Program not
registered</code>
<p>Le portmapper tourne ?</p>
<p><b>Solution :</b> lancez-le.</p>
<p>mountd tourne ?</p>
<p><b>Solution :</b> lancez-le.</p>
<p>nfsd tourne ?</p>
<p><b>Solution :</b> lancez-le.</p>
<p><code>/etc/hosts.deny</code> emp&ecirc;che le portmapper de
r&eacute;pondre ?</p>
<p><b>Solution :</b> vous pouvez enlever la r&egrave;gle en
question dans <code>hosts.deny</code> ou en ajouter une dans
<code>hosts.allow</code> de fa&ccedil;on que le portmapper soit
autoris&eacute; &agrave; vous parler.</p>
</li>
<li>Syst&egrave;me de fichier non export&eacute;, ou non
export&eacute; au client en question.
<p><b>Solution :</b> exportez le [Ndt : merci IBM !]</p>
</li>
<li>La r&eacute;solution de noms ne s'accorde pas avec la liste des
exports.
<p>e.g.: la liste des exports dit d'exporter vers
<code>johnmad</code> mais le nom de <code>johnmad</code> est
r&eacute;solu en <code>johnmad.austin.ibm.com</code>. La permission
de monter est refus&eacute;e.</p>
<p><b>Solution :</b> exportez vers les deux formes du nom.</p>
<p>Cela peut aussi arriver si le serveur a deux interfaces avec des
noms diff&eacute;rents et que les exports n'en sp&eacute;cifient
qu'un.</p>
<p><b>Solution :</b> exportez les deux interfaces.</p>
<p>Cela peut aussi se produire si le serveur ne peut pas faire un
lookuphostbyname ou lookuphostbyaddr (ce sont des fonctions de
biblioth&egrave;que) sur le client. Assurez-vous que le client peut
faire <code>host &lt;name&gt;</code>; <code>host
&lt;ip_addr&gt;</code>; et que les deux donnent la m&ecirc;me
machine.</p>
<p><b>Solution :</b> mettez de l'ordre dans la r&eacute;solution de
noms.</p>
</li>
<li>Le syst&egrave;me de fichiers a &eacute;t&eacute; mont&eacute;
apr&egrave;s que NFS soit lanc&eacute; (sur ce serveur). Dans ce
cas le serveur exporte le point de montage sous-jacent, pas le
syst&egrave;me de fichiers.
<p><b>Solution :</b> &eacute;teignez nfsd et relancez le.</p>
<p><b>Note :</b> les clients qui avaient mont&eacute; le point de
montage sous-jacent auront des probl&egrave;mes pour y
acc&eacute;der apr&egrave;s le red&eacute;marrage.</p>
</li>
<li>La date est tr&egrave;s d&eacute;cal&eacute;e sur une ou sur
les deux machines (cela peut mettre la pagaille pour make)
<p><b>Solution :</b> r&eacute;glez correctement la date.</p>
<p>L'auteur du HOWTO recommande d'utiliser NTP pour synchroniser
les horloges. Vu qu'il y a des restrictions &agrave; l'exportation
(au sens commercial !) de NTP aux &Eacute;.U., vous devez vous
procurer NTP pour Debian, Redhat ou Slakware depuis
<code>ftp://ftp.hacktic.nl/pub/replay/pub/linux</code> ou un
miroir.</p>
</li>
<li>Le serveur ne peut pas utiliser un mount d'un utilisateur qui
est dans plus de 8 groupes. <b>Solution :</b> diminuez le nombre de
groupes auxquels l'utilisateur appartient ou montez depuis un autre
utilisateur.</li>
</ol>
<h2><a name="s8">8. FAQ</a></h2>
<p>Voici la section FAQ. Elle est en partie bas&eacute;e sur une
vieille FAQ NFS &eacute;crite par Alan Cox.</p>
<p>Si vous avez un probl&egrave;me pour monter un syst&egrave;me de
fichier, voyez si votre probl&egrave;me est d&eacute;crit dans la
section ``Checklist mount''.</p>
<ol>
<li>J'obtiens un tas d'erreurs ``stale nfs handle'' quand j'utilise
Linux comme serveur NFS.
<p>Cela est d&ucirc; &agrave; une bogue dans quelques vieilles
versions de nfsd. Elle est corrig&eacute;e &agrave; partir de
nfs-server2.2beta16.</p>
</li>
<li>Quand j'essaye de monter le syst&egrave;me de fichiers
j'obtiens
<blockquote>
<pre>
<code>    can't register with portmap: system error on send
    
</code>
</pre></blockquote>
<p>Vous utilisez probablement un syst&egrave;me Caldera. Il y a une
bogue dans les scripts rc. Contactez Caldera pour obtenir la
solution.</p>
</li>
<li>Pourquoi ne puis-je pas ex&eacute;cuter un fichier apr&egrave;s
l'avoir copi&eacute; sur le serveur NFS ?
<p>La raison est que nfsd cache les manipulations de fichiers pour
des raisons de performances (rappelons qu'il fonctionne dans
l'espace utilisateur). Ainsi, apr&egrave;s une &eacute;criture le
fichier peut ne pas &ecirc;tre ferm&eacute; tout de suite, et tant
qu'il est ouvert le noyau ne vous autorisera pas &agrave;
l'ex&eacute;cuter. Les nfsd plus r&eacute;cents que le printemps 95
[Ndt : hum...] ferment les fichiers ouverts apr&egrave;s quelques
secondes, les plus vieux pouvaient ne pas les rel&acirc;cher avant
plusieurs jours...</p>
</li>
<li>Mes fichiers NFS sont tous en lecture seule.
<p>Le serveur NFS Linux est par d&eacute;faut en lecture seule.
Voyez les sections ``Mountd et nfsd'' et ``Exporter des
syst&egrave;mes de fichier'' dans ce HOWTO et r&eacute;f&eacute;rez
vous aux pages de manuel ``exports'' et ``nfsd''. Vous devrez
modifier <code>/etc/exports</code>.</p>
</li>
<li>Je monte depuis un serveur NFS Linux, <code>ls</code> marche et
pourtant je ne peux pas lire ou &eacute;crire de fichiers.
<p>Sur les anciennes versions de Linux il faut monter un serveur
NFS avec <code>rsize=1024, wsize=1024</code>.</p>
</li>
<li>Je monte depuis un serveur NFS Linux avec une taille de bloc
comprise entre 3500 et 4000 et Linux crashe
r&eacute;guli&egrave;rement.
<p>Bah alors ne le faites pas. Cela ne se produit pas avec les
noyaux 2.0 et 2.2 ni, autant que je sache avec les 1.2.</p>
</li>
<li>Est-ce que Linux peut utiliser NFS sur TCP ?
<p>Non, pas pour le moment.</p>
</li>
<li>J'ai des tonnes d'erreurs bizarres en essayant de monter depuis
un serveur Linux.
<p>Assurez-vous que vos utilisateurs sont dans 8 groupes au
maximum. C'est une limitation des vieux serveurs.</p>
</li>
<li>Quand je red&eacute;marre ma machine elle se bloque parfois en
essayant de d&eacute;monter un serveur NFS bloqu&eacute;
(<em>hung</em>).
<p>Ne d&eacute;montez <b>pas</b> les serveurs NFS en
red&eacute;marrant ou arr&ecirc;tant la machine, &ccedil;a ne
cr&eacute;era pas de probl&egrave;mes si vous ne le faites pas. La
commande est <code>umount -avt nonfs</code>.</p>
</li>
<li>Les clients NFS Linux sont tr&egrave;s lents quand ils
&eacute;crivent sur des syst&egrave;mes Sun ou BSD.
<p>Normalement les &eacute;critures NFS sont synchrones (vous
pouvez le d&eacute;sactiver si vous ne craignez pas de perdre des
donn&eacute;es). Les noyaux d&eacute;riv&eacute;s de BSD ont
tendance &agrave; ne pas savoir travailler avec des petits blocs.
Ainsi quand vous &eacute;crivez 4K de donn&eacute;es depuis un
client Linux dans des paquets de 1K, BSD fait ceci :</p>
<blockquote>
<pre>
<code>                lit une page de 4K
                traite 1K
                &eacute;crit 4K sur le disque
                lit une page de 4K
                traite 1K
                &eacute;crit 4K sur le disque
                ...
            
</code>
</pre></blockquote>
</li>
<li>Quand je connecte de nombreux clients &agrave; un serveur NFS
Linux, la performance diminue soudainement.
<p>Le protocole NFS utilise les paquets UDP fragment&eacute;s. Le
noyau ne conserve qu'un nombre limit&eacute; de fragments de
paquets incomplets avant de commencer &agrave; jeter des paquets.
En 2.2, ce param&egrave;tre est r&eacute;glable &agrave;
l'ex&eacute;cution au moyen du syst&egrave;me de fichier /proc :
<code>/proc/sys/net/ipv4/ipfrag_high_tresh</code> et
<code>ipfrag_low_tresh</code>. En 2.0 ce sont des constantes
d&eacute;finies &agrave; la compilation dans
<code>.../linux/net/ipv4/ip_fragment.c</code>,
<code>IPFRAG_HIGH_TRESH</code> et <code>IPFRAG_LOW_THRESH</code>.
La signification des ces valeurs est que quand la m&eacute;moire
consomm&eacute;e par les fragments UDP non
r&eacute;assembl&eacute;s atteint ``ipfrag_high_thresh'' (en
octets, 256K par d&eacute;faut en 2.2.3 et 2.0.36) elle est
ramen&eacute;e &agrave; ``ipfrag_low_tresh'' d'un coup, en jetant
des fragments. Ainsi, si la borne sup&eacute;rieure (high_tresh)
est atteinte, la performance de votre serveur diminue
drastiquement.</p>
<p>256K est suffisant pour 30 clients. Si vous en avez 60, doublez
la valeur. Et doublez aussi la borne inf&eacute;rieure
(low_tresh).</p>
</li>
<li>J'utilise Linux 2.2 (ou suivant) avec knfsd et ma machine AIX,
IRIX, Solaris, DEC-Unix, ... n'arrive pas &agrave; monter de
volume.
<p>knfsd annonce qu'il impl&eacute;mente NFS version 3, alors que
ce n'est pas vrai. Utilisez l'option qui permet de stopper ces
annonces, ou mettez <code>"vers=2"</code> dans la liste d'options
de montage de votre client.</p>
</li>
<li>Ma machine AIX 4 n'arrive pas &agrave; monter depuis mon
serveur NFS Linux. Elle dit quelque chose du genre :
<blockquote>
<pre>
<code>        mount: 1831-011 access denied for server:/dir
        mount: 1831-008 giving up on:
        server:/dir
        The file access permissions do not allow the specified action.
    
</code>
</pre></blockquote>
<p>AIX 4.2 utilise des ports r&eacute;serv&eacute;s (&lt;1024) pour
NFS. AIX 4.2.1 et 4.3 peuvent utiliser d'autres ports, et essaient
de monter par NFS3, NFS/TCP et finalement NFS/UDP.</p>
<p>Ajouter</p>
<hr>
<pre>
nfso -o nfs_use_reserved_ports=1
</pre>
<hr>
<p>&agrave; la fin de <code>rc.tcpip</code> la forcera &agrave;
utiliser les ports r&eacute;serv&eacute;s (truc fourni par Brian
Gorka).</p>
</li>
</ol>
<h2><a name="s9">9. Exporter un syst&egrave;me de fichiers</a></h2>
<p>Bien sur, la fa&ccedil;on d'exporter les syst&egrave;mes de
fichiers par NFS n'est pas toujours la m&ecirc;me sur toutes les
plate-formes. Linux et Solaris 2 sont les plus d&eacute;viants.
Cette section liste de mani&egrave;re superficielle la fa&ccedil;on
de proc&eacute;der sur la plupart des syst&egrave;mes. Si votre
syst&egrave;me n'est pas trait&eacute; ici, cherchez dans vos pages
de manuel. Les mot-cl&eacute;s sont : nfsd, system administration
tool, rc scripts, boot scripts, boot sequence, /etc/exports,
exportfs. J'utiliserai le m&ecirc;me exemple tout au long de cette
section : comment exporter /mn/eris/local vers apollon en
lecture/&eacute;criture.</p>
<h2><a name="ss9.1">9.1 IRIX, HP-UX, Digital-UNIX, Ultrix, SunOS 4
(Solaris 1), AIX</a></h2>
<p>Ces syst&egrave;mes utilisent le format export traditionnel de
Sun. Dans <code>/etc/exports</code>, &eacute;crivez :</p>
<hr>
<pre>
/mn/eris/local -rw=apollon
</pre>
<hr>
<p>La documentation compl&egrave;te se trouve dans la page de
manuel <code>exports</code>. Apr&egrave;s avoir &eacute;dit&eacute;
le fichier, lancez <code>exportfs -av</code> pour exporter les
syst&egrave;mes de fichiers.</p>
<p>La rigueur de la syntaxe demand&eacute;e par exportfs varie. Sur
certains syst&egrave;mes vous verrez que la ligne
pr&eacute;c&eacute;dente peut &ecirc;tre :</p>
<hr>
<pre>
/mn/eris/local apollon
</pre>
<hr>
<p>ou m&ecirc;me quelque chose de
d&eacute;g&eacute;n&eacute;r&eacute; comme :</p>
<hr>
<pre>
/mn/eris/local rw=apollon
</pre>
<hr>
<p>Je recommande d'utiliser la syntaxe stricte. Il se peut que la
prochaine version de <code>exportfs</code> soit plus exigeante vis
&agrave; vis de la syntaxe et ne fonctionne plus.</p>
<h2><a name="ss9.2">9.2 Solaris 2</a></h2>
<p>Sun ont compl&egrave;tement r&eacute;invent&eacute; la roue
quand ils ont fait Solaris 2, et donc c'est compl&egrave;tement
diff&eacute;rent des autres syst&egrave;mes. Il faut &eacute;diter
le fichier <code>/etc/dfs/dfstab</code> et y placer les commandes
de partage (<em>share</em>) document&eacute;es dans la page de
manuel <code>share(1M)</code>, comme ceci :</p>
<hr>
<pre>
share -o rw=apollon -d "Eris Local" /mn/eris/local
</pre>
<hr>
<p>Lancez ensuite le programme <code>shareall</code> pour exporter
les syst&egrave;mes de fichiers.</p>
<h2><a name="linuxtwotwo"></a> <a name="s10">10. NFS sous Linux
2.2</a></h2>
<p>Au moment o&ugrave; j'&eacute;cris, la version courante du noyau
est 2.2.12 et utiliser NFS peut &ecirc;tre assez p&eacute;nible. Ou
pas. J'ignore ce qu'il en sera pour Linux 2.4.</p>
<p>La grosse nouveaut&eacute; dans Linux 2.2 c'est le support d'un
serveur nfs dans le noyau, appel&eacute; knfsd 2.2. Ce type
d'impl&eacute;mentation a des avantages, principalement la
rapidit&eacute;, une machine Linux 2.2 avec knfsd est un serveur
NFS respectable. Vous pouvez cependant toujours utiliser l'ancien
nfsd avec Linux 2.2, et cela pr&eacute;sente quelques avantages
aussi, dont la simplicit&eacute;.</p>
<p>Si vous utilisez un paquetage noyau source ou binaire
fabriqu&eacute; par quelqu'un comme RedHat (6.0 et suivantes), SuSE
(6.1 et suivantes il me semble) ou un autre int&eacute;grateur de
syst&egrave;me professionnel ils auront probablement
int&eacute;gr&eacute; compl&egrave;tement ``knfsd'' et vous n'avez
pas de soucis &agrave; vous faire, cela marchera. Pour l'essentiel.
Jusqu'&agrave; ce que vous vouliez compiler un noyau vous
m&ecirc;me. Si vous utilisez un noyau 2.2 standard (au moins
jusqu'&agrave; 2.2.12) knfsd ne fonctionnera pas.</p>
<p>Pour le faire fonctionner vous m&ecirc;me il vous faut le
paquetage knfsd de H.J. Lu. C'est un ensemble de patchs avec les
utilitaires requis pour 2.2 que Lu maintient
b&eacute;n&eacute;volement. R&eacute;cup&eacute;rez le depuis votre
miroir de noyau local, le site ma&icirc;tre est <a href=
"ftp://ftp.kernel.org/pub/linux/devel/gcc/">ftp.kernel.org:/pub/linux/devel/gcc/</a>.
<b>Ce n'est pas destin&eacute; au grand public</b>. Si vous trouvez
que c'est trop compliqu&eacute;, n'insistez pas et attentez qu'un
paquetage noyau soit disponible aupr&egrave;s de votre
int&eacute;grateur (Redhat, SuSE...).</p>
<p>Ne m'envoyez pas de question &agrave; ce sujet, je ne peux pas
vous aider, je n'ai aucun serveur bas&eacute; sur knfsd qui tourne.
Si vous trouvez des erreurs ou omissions dans la documentation,
&eacute;crivez-moi et je corrigerai ce HOWTO.</p>
<p>Toujours l&agrave; ? Ok. H.J. Lu annonce les nouvelles versions
de son paquetage sur la liste de diffusion linux-kernel, o&ugrave;
il passe d'autres choses li&eacute;es &agrave; NFS dans Linux 2.2.
Lisez-la.</p>
<h2><a name="ss10.1">10.1 Le client</a></h2>
<p>Le client est presque simple. Afin que les verrous
(<em>locks</em>) marchent correctement il faut que
<code>statd</code> (du paquetage knfsd) soit compil&eacute;,
install&eacute; et lanc&eacute; depuis vos scripts de
d&eacute;marrage. Statd a besoin d'un r&eacute;pertoire
appel&eacute; <code>/var/lib/nfs</code> qu'il vous faudra
cr&eacute;er avant de le lancer (sans quoi il se termine
imm&eacute;diatement sans message d'erreur).</p>
<p>Une fois que statd tourne vous pouvez utiliser le programme
<code>testlk</code> (dans <code>tools/locktest</code>) pour tester
si un verrou sur un fichier d'un volume mont&eacute; par NFS
fonctionne. &Ccedil;a devrait. S'il affiche <em>No locks
available</em>, statd ne fonctionne pas.</p>
<p>En fait, vous pouvez aussi vous passer des verrous (ce que je ne
recommande pas) en mettant <code>"nolock"</code> dans la liste des
options de montage.</p>
<p>Autant que je sache, c'est tout ce qu'il faut pour faire
fonctionner correctement le client.</p>
<p>Ah, si vous avez un serveur NFS Alpha ou Sparc vous verrez que
le client nfs de Linux 2.2 est vraiment de la merde. Les
d&eacute;bits sont extr&ecirc;mement faibles, bien pire qu'avec
Linux 2.0. Bien sur on peut corriger le probl&egrave;me. Les noyaux
2.2 d'Alan Cox (un petit peu plus exp&eacute;rimentaux que ceux de
Linus) incluent un patch pour am&eacute;liorer la performance du
client 2.2 avec un serveur Alpha ou Sparc. Si vous voulez utiliser
les noyaux d'Alan Cox, vous devriez lire la liste de diffusion
linux-kernel, et si c'est le cas vous savez o&ugrave; les trouver.
Le site de r&eacute;f&eacute;rence est <a href=
"http://www.uio.no/~trondmy/src/">http://www.uio.no/~trondmy/src/</a>,
au cas o&ugrave; vous voudriez essayer de l'appliquer &agrave; un
noyau 2.2 standard. Ce patch ne sera probablement pas
int&eacute;gr&eacute; dans Linux 2.4, car il demande trop de
changements dans le noyau pour &ecirc;tre accept&eacute; dans le
cycle de d&eacute;veloppement actuel. Attendez Linux 2.5.</p>
<p><code>trondmy</code> propose des patchs pour utiliser NFS
version 3 avec Linux, et qui permettent aussi d'utiliser TCP comme
m&eacute;canisme de transport au lieu d'UDP. NFSv3 est tr&egrave;s
bien pour des r&eacute;seaux grande distance ou avec des taux de
pertes non nuls, ou des temps de latence &eacute;lev&eacute;s.</p>
<p>Si vous utilisez ces patchs, il vous faut lire linux-kernel, car
de sales bugs, qui mangent vos fichiers, sont parfois
d&eacute;couverts. Alors <b>soyez prudent</b>.</p>
<h2><a name="ss10.2">10.2 Le serveur</a></h2>
<p>Le serveur NFS de Linux 2.2 et suivants est appel&eacute;
<code>"knfsd"</code>. Il est difficile &agrave; configurer. Il
faudra vous d&eacute;brouiller tout seul ou utiliser ce que SuSE,
RedHat et autres fournissent dans leurs paquetages 2.2.
D&eacute;sol&eacute;, mais vous pouvez toujours utiliser l'ancien
nfsd. Il est lent mais facile &agrave; installer.</p>
<h2><a name="s11">11. Serveur NFS sur une disquette</a></h2>
<p>Cette section a &eacute;t&eacute; &eacute;crite par Ron Peters,
<a href="mailto:rpeters@hevanet.com">rpeters@hevanet.com</a>. Elle
explique comment installer un serveur NFS en d&eacute;marrant
depuis une disquette. L'objectif initial &eacute;tait de partager
par NFS un c&eacute;d&eacute;rom d'une autre machine pour installer
Linux sur une machine sans lecteur de c&eacute;d&eacute;rom.</p>
<h2><a name="ss11.1">11.1 Introduction</a></h2>
<p>Ce document a pour but d'aider ceux qui auront le m&ecirc;me
probl&egrave;me que moi r&eacute;cemment. J'installais un serveur
Linux sur une machine sans lecteur de c&eacute;d&eacute;rom et sans
moyen d'en installer un, &agrave; part peut &ecirc;tre un SCSI
externe. Ce genre de situations sera sans doute de plus en plus
rare et ce document perdra donc de son int&eacute;r&ecirc;t, mais
j'aurais bien aim&eacute; l'avoir quand j'essayais d'installer ma
machine.</p>
<p>Vu que la machine n'avait pas de lecteur de
c&eacute;d&eacute;rom, j'ai pens&eacute; installer un serveur NFS
pour Win95 afin de partager le lecteur de c&eacute;d&eacute;rom
juste le temps d'installer ma machine et de la mettre sur le
r&eacute;seau. Je n'ai trouv&eacute; que deux produits (je ne
citerai pas les noms mais l'un est un freeware et l'autre avait une
licence limit&eacute;e &agrave; 14 jours), l'un ne marcha pas
``cl&eacute;s en main'' et l'autre n'&eacute;tait pas capable de
g&eacute;rer les conventions de nommage Linux suffisamment bien
pour mener &agrave; bien l'installation.</p>
<p>J'ai donc d&eacute;cid&eacute; d'essayer de red&eacute;marrer ma
machine Win95 sous Linux avec les disquettes boot/root et
d'utiliser une disquette suppl&eacute;mentaire pour installer un
serveur NFS.</p>
<p>Cela a &eacute;t&eacute; remarquablement simple, la
proc&eacute;dure est en fait probablement plus simple que de lire
cette introduction. Cependant, je pense qu'il est
int&eacute;ressant de rassembler les information n&eacute;cessaires
dans ce document.</p>
<h2><a name="ss11.2">11.2 Attentes</a></h2>
<p>J'ai utilis&eacute; les disquettes boot/root fournies dans une
des distributions de Slakware (InfoMagic developpers
distributions). Le noyau utilis&eacute; sur les disquettes
&eacute;tait un 2.0.34, et les programmes du serveur NFS venaient
d'un serveur pour 2.0.30. J'ai toujours utilis&eacute; la
m&eacute;thode d'installation Slakware, non pas qu'elle soit plus
facile ou meilleure ou pire, mais simplement qu'elle m'est
famili&egrave;re et que je n'ai jamais pris le temps d'apprendre
&agrave; en utiliser une autre.</p>
<p>Je ne pense pas qu'il puisse y avoir beaucoup de
probl&egrave;mes li&eacute;s &agrave; la version du syst&egrave;me.
Je recommanderais simplement d'utiliser un syst&egrave;me
relativement r&eacute;cent, ce qui devrait &ecirc;tre le cas si
vous utilisez les disquettes boot/root de la distribution &agrave;
installer.</p>
<h2><a name="ss11.3">11.3 Mat&eacute;riel
n&eacute;cessaire</a></h2>
<ul>
<li>Une machine et une disquette de boot supportant le
r&eacute;seau. La machine devant jouer le r&ocirc;le du serveur NFS
doit avoir une carte r&eacute;seau reconnue pendant le
d&eacute;marrage. Pour plus d'informations, voir le HOWTO sur le
r&eacute;seau (NET4-HOWTO).</li>
<li>Une deuxi&egrave;me disquette contenant rpc.portmap, rpc.mountd
et rpc.nfsd. Vous pouvez trouver facilement ces fichiers par un
ftpsearch sur le ou&egrave;be.</li>
<li>Un cd (par exemple) Slakware (ou autre).</li>
</ul>
<h2><a name="ss11.4">11.4 Configuration du serveur</a></h2>
<h3>D&eacute;marrer le serveur NFS temporaire</h3>
<p>D&eacute;marrez la machine qui sera serveur NFS depuis la
disquette de d&eacute;marrage et assurez-vous que la carte
r&eacute;seau est reconnue, de m&ecirc;me que le lecteur de
c&eacute;d&eacute;rom. Dans la suite je suppose que la carte
r&eacute;seau en question est eth0.</p>
<h3>Monter la disquette et le c&eacute;d&eacute;rom</h3>
<p>Une fois que le syst&egrave;me est d&eacute;marr&eacute;, vous
n'avez plus besoin des disquette boot/root, le syst&egrave;me
&eacute;tant compl&egrave;tement install&eacute; en disque
m&eacute;moire. Remplacez la disquette root par la disquette
suppl&eacute;mentaire, et montez la :</p>
<p><code>mount /dev/fd0 /floppy</code></p>
<p>Ceci fonctionne pour une disquette avec un syst&egrave;me de
fichiers ext2. J'imagine que la disquette pourrait utiliser un
syst&egrave;me de fichiers MSDOS mais je n'ai pas essay&eacute;. Je
suppose que cela serait plus simple que de faire une image disque.
Dans ce cas, il faudrait utiliser <code>mount -t msdos
...etc</code>.</p>
<p>Montez le c&eacute;d&eacute;rom :</p>
<p><code>mount -t iso9660 /dev/hdc /cdrom</code></p>
<p>J'ai utilis&eacute; les p&eacute;riph&eacute;riques disquette et
c&eacute;d&eacute;rom, on peut en utiliser d'autres selon ce que
l'on veut faire. Les points de montage /floppy et /cdrom doivent
exister sur l'image de la disquette root. Si ce n'est pas le cas,
cr&eacute;ez-les, ou bien vous pouvez utiliser n'importe quels
autres points de montage.</p>
<h3>Configurer le r&eacute;seau sur le serveur provisoire</h3>
<p>Il faut maintenant configurer le serveur NFS et le
r&eacute;seau. Il n'y a que quelques commandes &agrave; lancer, et
quelques informations qu'il vous faudra rassembler auparavant (je
donne ici des valeurs d'exemple) :</p>
<p>IPADDR:172.16.5.100 #L'adresse du serveur temporaire.</p>
<p>NETMASK:255.255.255.0 #Le masque de r&eacute;seau (netmask).</p>
<p>BROADCAST:172.16.5.255 #L'adresse de diffusion sur le
r&eacute;seau</p>
<p>ETHNETWORK:172.16.5.0 #L'adresse r&eacute;seau</p>
<p>GATEWAY:172.16.5.251 #N&eacute;cessaire seulement si vous avez
une passerelle. Si c'est le cas, vous le savez. La plupart des
r&eacute;seau ``&agrave; la maison'' n'en ont pas.</p>
<p>Les commandes pour se connecter au r&eacute;seau (utiliser les
valeurs donn&eacute;es ci-dessus) :</p>
<p><code>ifconfig eth0 inet IPADDR arp netmask NETMASK broadcast
BROADCAST</code></p>
<p><code>route add -net ETHNETWORK netmask NETMASK eth0</code></p>
<p>Celle-ci uniquement si vous avez une passerelle et que vous
devrez la traverser :</p>
<p><code>route add default gw GATEWAY netmask 0.0.0.0
eth0</code></p>
<p>Si tout va bien, vous &ecirc;tes maintenant sur le r&eacute;seau
et devriez pouvoir faire des <code>ping</code> sur les autres
machines.</p>
<h3>Configurer le volume NFS</h3>
<p>Choisissez le r&eacute;pertoire &agrave; partager. Dans mon
exemple, c'&eacute;tait <code>/cdrom/slakware</code>. Placez-le
dans le fichier <code>/etc/exports</code> :</p>
<p><code>echo "/cdrom/slakware" &gt; /etc/exports</code></p>
<h2><a name="ss11.5">11.5 Lancer le serveur NFS</a></h2>
<p>Allez dans <code>/floppy/usr/bin</code> et lancez :</p>
<p><code>./rpc.portmap</code></p>
<p><code>./rpc.mountd</code></p>
<p><code>./rpc.nfsd</code></p>
<h3>Pr&ecirc;t, commencez l'installation</h3>
<p>Normalement, le r&eacute;pertoire <code>/cdrom/slakware</code>
est maintenant partageable. D&eacute;marrez votre machine (celle
&agrave; installer) depuis les disquettes boot/root (j'ai
utilis&eacute; les m&ecirc;mes qui ont servi &agrave;
d&eacute;marrer le serveur) et commencez l'installation.</p>
<p>Quand il faut choisir le m&eacute;dia source &agrave; utiliser,
choisissez ``serveur NFS''. Il vous demandera l'adresse IP du
serveur, qui est celle que vous avez appel&eacute; IPADDR pour le
serveur. Il vous faut aussi donner le r&eacute;pertoire &agrave;
monter, qui est celui que vous avez indiqu&eacute; dans le fichier
<code>/etc/exports</code> du serveur.</p>
<p>Le volume NFS devrait maintenant &ecirc;tre mont&eacute;,
surveillez l'apparition de messages d'erreur. Si tout va bien,
continuez l'installation.</p>
<h2><a name="ss11.6">11.6 Probl&egrave;mes</a></h2>
<h3>Rien ici pour l'instant</h3>
<p>Je n'ai rien &agrave; dire &agrave; ce sujet pour le moment.
Peut &ecirc;tre si des gens utilisent cette proc&eacute;dure, on
aura des choses &agrave; ajouter.</p>
<h2><a name="ss11.7">11.7 &Agrave; faire</a></h2>
<h3>Disquette DOS</h3>
<p>Voir si la disquette suppl&eacute;mentaire peut &ecirc;tre au
format DOS.</p>
<h3>Commandes RPC</h3>
<p>V&eacute;rifiez l'ordre dans lequel lancer les commandes rpc.*
et si toutes sont n&eacute;cessaires.</p>
<h2><a name="s12">12. PC-NFS</a></h2>
<p>Vous ne voulez pas utiliser PC-NFS, mais plut&ocirc;t samba.</p>
<p>Samba est bien meilleur que PC-NFS, il fonctionne avec
``Windows3 for Workgroups'' et les versions suivantes de Windows.
Il est plus rapide et plus sur. Utilisez plut&ocirc;t samba.</p>
</body>
</html>