46
C R A I G H U N T Serveurs réseau Linux s o l u t i o n s U n i x L i n u x

CRAIG HUNT Serveurs réseau Linux - Accueil - … · 9 Partage de fichiers Le partage d’informations, et par conséquent de fichiers, constitue un service fondamental dans un réseau

  • Upload
    ngoanh

  • View
    224

  • Download
    5

Embed Size (px)

Citation preview

C R A I G H U N T

Serveurs réseau Linux

s o l u t i o n sU n i x • L i n u x

9Partage de fichiers

Le partage d’informations, et par conséquent de fichiers, constitue un service fondamentaldans un réseau de secteur. Le système Linux est parfaitement adapté à ce type de service, caril propose plusieurs mécanismes de partage de fichiers intégrant les clients MicrosoftWindows, les clients Unix ainsi que d’autres, incompatibles avec les précédents, dans unréseau unique et cohérent.

Si nous les comparons aux serveurs propriétaires qui ne voient le monde que d’un seul pointde vue, les serveurs Linux offrent davantage de souplesse en matière de conception de réseaupolyvalent. En effet, Linux propose trois types différents de partage de fichiers :

• Technique site central – Permet aux clients de se connecter sur le serveur, lequel partagedirectement les fichiers via le système de fichiers Linux. Ce modèle est adapté à toutclient capable d’émuler un terminal.

• Technique du réseau Unix – Permet aux clients de partager des fichiers à l’aide dusystème de fichiers NFS (Network File System). NFS est le logiciel de partage de fichiersle plus utilisé sur les réseaux Unix.

• Technique du réseau Microsoft – Permet aux clients de se servir du protocole SMB(Server Message Block) pour partager des fichiers sur le réseau. SMB est le protocoleNetBIOS utilisé par Microsoft LanManager et par les systèmes Windows NT/2000 quipermet le partage de fichiers avec clients Microsoft Windows.

Nous allons étudier ces trois techniques au cours de ce chapitre. Commençons par le modèlesite central qui exploite les capacités fondamentales du système de fichiers Linux.

Serveurs réseau Linux326

Copyright ©

2003 Groupe E

yrolles

Système de fichiers LinuxLes outils telnet et ssh permettent aux utilisateurs de se connecter sur le serveur et detravailler avec des fichiers partagés. Si un utilisateur souhaite partager ses fichiers, il utilise unoutil comme FTP ou scp pour les transférer sur le serveur. Dès lors, ses fichiers deviennentaccessibles aux autres utilisateurs. Comme nous l’avons vu au chapitre 3, « Services d’ouver-ture de session », ce type d’accès requiert un compte d’utilisateur pour chaque utilisateur etl’implémentation de démons fournissant les services. Lorsqu’un utilisateur se connecte sur unserveur Linux, le partage de fichiers est contrôlé par les permissions associées au fichier. Cespermissions sont définies dans le système de fichiers Linux.

Permissions LinuxUn identificateur d’utilisateur (UID) et un identificateur de groupe (GID) sont attribués àchaque utilisateur Linux. Chaque fichier possède également un UID et un GID. Par défaut, cesidentificateurs correspondent à ceux du créateur du fichier, mais ils peuvent toutefois êtremodifiés. Les permissions sont accordées selon les correspondances entre les UID et GID dufichier et ceux de l’utilisateur, de la manière suivante :

• Permissions du propriétaire – Permissions accordées à l’utilisateur qui possède lemême UID que le fichier. On les appelle également les permissions utilisateur.

• Permissions du groupe – Permissions accordées aux utilisateurs qui ont le même GIDque le fichier.

• Permissions des autres – Permissions accordées à tous les autres utilisateurs, ceux dontl’UID et le GID ne correspondent pas aux identificateurs du fichier.

Trois types de permissions peuvent être accordées aux catégories Propriétaire, Groupe etAutres :

• Lecture – Le contenu de ce fichier peut être lu.

• Écriture – Le contenu de ce fichier peut être écrit.

• Exécution – Le contenu de ce fichier est un programme qui peut être exécuté.

• L’option –l de la commande ls permet de visualiser le propriétaire et les permissionsattribuées à un fichier.

Listing 9.1 – Étude des permissions à l’aide de la commande ls

$ ls -ltotal 1641-rw-r--r-- 1 craig users 8255 May 17 14:09 fig2-1.gif-rw-r--r-- 1 craig users 8206 May 17 14:10 fig2-2.gif

Partage de fichiersCHAPITRE 9

327

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

Chaque ligne du résultat de cette commande débute par les permissions du fichier. Les dixpremiers caractères sont identiques sur chaque ligne du listing 9.1 : -rw-r--r--. Le premiercaractère indique s’il s’agit d’un répertoire (d), d’un lien (l) ou d’un fichier (-). Dans notreexemple, toutes les entrées sont des fichiers.

Les neuf caractères suivants sont divisés en trois catégories de trois permissions. Celles-cidéfinissent les permissions du propriétaire du fichier, des membres du groupe auquel le fichierest attribué et de tous les autres utilisateurs. Le caractère r indique une autorisation de lecture,w indique une autorisation d’écriture et x, une permission d’exécution.

Dans le listing 9.1, le propriétaire peut lire et écrire (rw-), tandis que les membres du groupeainsi que les autres utilisateurs du système ne peuvent que lire (r--).

Chaque groupe de permissions (lecture, écriture, exécution) peut être représenté sous la formed’un chiffre. Le caractère r est égal à 4 (binaire 100), w est égal à 2 (binaire 010) et x à 1(binaire 001). Si plusieurs permissions sont accordées dans un même groupe, il suffit de lesadditionner. Ainsi, dans le listing 9.1, la permission accordée au propriétaire est égale à 6 (rw-)et les permissions accordées au groupe et au reste du monde sont égales à 4 (r--). En somme,les permissions d’accès de ce fichier sont égales à 644.

Modifier les permissions d’un fichierLa commande chmod (change mode) permet de modifier les permissions d’un fichier. Vouspouvez préciser les permissions de la commande chmod sous une forme numérique ou symbo-lique. Par exemple :

-rw-r--r-- 1 craig users 16328 May 16 22:04 fig3-2.gif-rw-r--r-- 1 craig users 3832 May 16 22:13 fig4-1.gif-rw-r--r-- 1 craig users 16741 May 16 22:18 fig4-2.gif-rw-r--r-- 1 craig users 14350 May 16 22:24 fig4-4.gif-rw-r--r-- 1 craig users 22737 May 16 22:27 fig4-5.gif-rw-r--r-- 1 craig users 14316 May 16 22:34 fig5-1.gif-rw-r--r-- 1 craig users 15739 May 16 22:35 fig5-2.gif-rw-r--r-- 1 craig users 21528 May 1 20:46 fig8-1.gif-rw-r--r-- 1 craig users 16479 May 1 21:18 fig8-2.gif-rw-r--r-- 1 craig users 22295 May 17 11:43 fig8-4.gif-rw-r--r-- 1 craig users 16482 Apr 24 19:50 fig9-3.gif-rw-r--r-- 1 craig users 11756 Apr 24 19:54 fig9-4.gif

Listing 9.1 – Étude des permissions à l’aide de la commande ls (suite)

Serveurs réseau Linux328

Copyright ©

2003 Groupe E

yrolles

La première commande ls affiche les permissions actuelles du fichier trace.txt : lecture/écriture pour le propriétaire, lecture pour le groupe et lecture pour les autres. La commandechmod utilise la notation symbolique pour définir les permissions. Le symbole g+w permetd’ajouter (+) le droit d’écriture (w) aux permissions du groupe (g), tandis que o-r permet desupprimer (-) le droit de lecture (r) au reste du monde (o, qui signifie « others »). La secondecommande ls illustre le résultat de l’exécution de la commande chmod sur les permissions dufichier trace.txt.

La notation symbolique de la commande chmod se compose de trois champs. Le premierchamp indique si la permission est définie pour le propriétaire, le groupe, les autres ou lestrois. La valeur u précise les permissions du propriétaire, que l’on appelle également l’utilisa-teur. La valeur g définit les permissions du groupe et la valeur o celles des autres. Quant à lavaleur a, elle précise les permissions à la fois pour le propriétaire, le groupe et les autres.

Le deuxième champ définit l’application de ces permissions. Vous ajoutez une permissionavec le signe +, en retirez une avec le signe – ou vous remplacez les permissions existantes àl’aide du signe =.

Le troisième champ définit les permissions de façon spécifique. Les caractères r, w et x corres-pondent respectivement à la lecture, à l’écriture et à l’exécution. Vous utilisez le caractère spour les permissions SetUID et SetGID et le caractère t pour définir le bit collant (consultezle tableau « Bits cachés » pour obtenir de plus amples informations sur ces permissions). Enoutre, vous pouvez attribuer les permissions déjà définies pour le propriétaire, le groupe et lesautres à l’un des autres groupes. À cette fin, utilisez u, g ou o dans le champ permission. Parexemple, g=u permet de définir les permissions du groupe à la même valeur que celles précé-demment définies pour le propriétaire.

Vous n’êtes pas obligé de définir symboliquement les permissions, puisque vous pouvezégalement vous servir des permissions sous leur forme numérique, de la façon suivante :

Dans le cas présent, les permissions ont été définies à 777, ce qui accorde le droit de lecture,d’écriture et d’exécution au propriétaire, au groupe et aux autres. La commande ls –l illustrele résultat de ces modifications. Nous vous déconseillons toutefois d’accorder des permissionsaussi importantes. En règle générale, définissez des permissions inférieures à 644, notamment

$ ls -l trace.txt-rw-r--r-- 1 craig craig 1349 May 3 2000 trace.txt$ chmod g+w,o-r trace.txt$ ls -l trace.txt-rw-rw---- 1 craig craig 1349 May 3 2000 trace.txt

$ chmod 777 test.pl$ ls -l test.pl-rwxrwxrwx 1 craig users 16513 May 18 14:22 test.pl

Partage de fichiersCHAPITRE 9

329

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

si vous ne souhaitez pas que tout utilisateur connecté au système puisse lire vos fichiersprivés. Pour empêcher les utilisateurs n’appartenant pas à votre groupe de lire un rapport avantqu’il ne soit terminé, effectuez le paramétrage suivant :

Cette commande accorde le droit de lecture et d’écriture au propriétaire, le droit de lecture auxautres membres du groupe, mais elle bloque l’accès aux autres utilisateurs. Toutefois, cetteamélioration reste insuffisante, car le groupe auquel le fichier est attribué est trop important.

$ chmod 640 report.txt$ ls -l report.txt-rw-r----- 1 craig users 16513 May 18 14:22 report.txt

Bits cachés

Jusqu’à présent, nous avons limité cette discussion aux permissions des utilisateurs. La lecture, l’écritureet l’exécution sont des types de permissions accordés à différentes classes d’utilisateurs. Il existetoutefois d’autres permissions accordant des privilèges spéciaux aux fichiers exécutables :

• À l’origine d’Unix, un bit collant permettait de conserver un programme en mémoire. Aujourd’hui, onutilise davantage un bit de collant sur les répertoires. Lorsqu’il est positionné sur un répertoire, les uti-lisateurs ne peuvent y supprimer un fichier qu’à la condition d’avoir la permission d’écrire sur cefichier, même s’ils ont le droit d’écrire sur le répertoire (c’est la cas du répertoire /tmp sur la plupartdes Unix).

• SetGID permet au programme de s’exécuter avec l’identificateur de groupe défini sur le fichier. Surun répertoire, ce bit indique que tous les fichiers créés dans le répertoire appartiennent, par défaut,au groupe du répertoire.

• SetUID permet au programme de s’exécuter avec l’UID du propriétaire du fichier. Par définition, cettepermission n’a de sens que sur un fichier exécutable (script ou binaire).

Ces trois permissions forment un groupe supplémentaire de trois autorisations. Le bit collant est spécifiéavec la valeur 1 (binaire 001), la permission SetGID est spécifiée avec la valeur 2 (binaire 010) et lapermission SetUID est spécifiée avec la valeur 4 (binaire 100). Vous définissez toutes ces permissions enplaçant un quatrième chiffre au début de la valeur des permissions. Ainsi, si vous saisissez la valeur 4771à l’aide de la commande chmod, vous définissez les permissions SetUID suivantes : lecture, écriture etexécution pour le propriétaire, lecture, écriture et exécution pour le groupe et exécution pour les autres. Lechiffre 4 spécifie la permission SetUID, le premier chiffre 7 définit les autorisations du propriétaire, lesecond chiffre 7 définit les permissions du groupe et le chiffre 1 précise les permissions accordées auxautres.

À première vue, l’affichage de ces permissions sous la forme de trois caractères (rwx) semble impossible.Toutefois, vous pouvez les afficher grâce à la commande ls, qui utilise dans ce cas une codificationparticulière pour le bit d’exécution :

• Si le bit collant est spécifié, un caractère « T » majuscule apparaît à la place du bit d’exécution despermissions du monde accordées aux autres.

Serveurs réseau Linux330

Copyright ©

2003 Groupe E

yrolles

Commande chgrpLa commande ls –l liste le nom du propriétaire du fichier et le nom du groupe affectés aufichier. Dans tous les exemples précédents, l’utilisateur est craig et le groupe est users. Pardéfaut, le fichier est attribué au GID principal du propriétaire. Ce GID est affecté à l’utilisateurdans le fichier /etc/passwd. Si vous souhaitez modifier ces paramètres, notamment si lesaccès aux fichiers doivent être limités à un groupe qui se connecte au système pour travaillerconjointement sur le fichier, effectuez l’opération suivante à l’aide de la commande chgrp :

Dans cet exemple, le groupe du fichier report.txt est changé en rnd. L’utilisateur craigpossède désormais le droit de lecture et d’écriture sur ce fichier et les membres du groupe rndpossèdent le droit de lecture. Tous les autres utilisateurs n’ont aucun droit d’accès à ce fichier.

Cet exemple illustre bien le partage de fichiers reposant sur le « modèle site central ». Toututilisateur du groupe rnd peut recopier le fichier report.txt dans son répertoire d’accueil et y

• Si les bits de rappel et d’exécution sont définis, le caractère « t » minuscule apparaît à la place du bitd’exécution des permissions du monde.

• Pour SetGID, un caractère « S » majuscule apparaît à la place du bit d’exécution des permissions dugroupe.

• Si les bits d’exécution et SetGID sont spécifiés simultanément, un caractère « s » minuscule apparaîtà la place du bit d’exécution des permissions du groupe.

• Pour SetUID seul, un caractère « S » majuscule apparaît à la place du bit d’exécution des permis-sions du propriétaire.

• Si les bits d’exécution et SetUID sont positionnés simultanément, un caractère « s » minuscule appa-raît à la place du bit d’exécution des permissions du propriétaire.

Soyez prudent lorsque vous accordez des permissions SetUID et SetGID aux programmes, notamments’ils appartiennent à l’utilisateur root car ils peuvent avoir un impact important sur le système. De plus, siles programmes ne sont pas correctement écrits, des intrus peuvent les exploiter et compromettre tout lesystème.

$ chgrp rnd report.txt$ ls -l report.txt-rw-r----- 1 craig rnd 16513 May 18 14:22 report.txt

INFO L’utilisateur craig, qui est le propriétaire du fichier, doit appartenir au groupe rnd pour affecterce groupe au fichier. À moins d’être l’utilisateur root, vous ne pouvez pas affilier un fichier à ungroupe dont vous ne faites pas partie.

Bits cachés (suite)

Partage de fichiersCHAPITRE 9

331

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

apporter des commentaires et des modifications. La personne chargée du rapport peut ensuiteconsulter les modifications et les commentaires via une commande diff et décider des infor-mations incluses dans la copie finale. Seule la personne en charge du rapport peut écrire dansla copie maître.

Le partage de fichiers via une connexion au serveur peut fonctionner avec n’importe quelsystème client, qu’il s’agisse d’un ordinateur ou d’un terminal. Toutefois, la plupart des utili-sateurs préfèrent travailler sur les fichiers avec leurs applications préférées, depuis leurs ordi-nateurs. Ce type de service est disponible sur les systèmes Unix via NFS (Network FileSystem).

Présentation de NFSLe système de fichiers NFS (Network File System), créé à l’origine par Sun Microsystems,permet le partage de fichiers et de répertoires sur le réseau. Grâce à NFS, les utilisateurs et lesprogrammes accèdent aux fichiers distants comme s’ils étaient locaux.

NFS est un système client/serveur. Le client utilise les répertoires distants comme s’ilsfaisaient partie de son système de fichiers local, car ils sont mis à disposition par le serveur.La liaison d’un répertoire distant au système de fichiers local se nomme montage de réper-toire, tandis que le partage d’un répertoire se nomme exportation d’un répertoire.

NFS est un protocole RPC (Remote Procedure Call) qui s’exécute au-dessus des protocolesUDP et IP. Un appel de procédure distante consiste simplement en un appel système traité parun serveur distant. Lorsqu’un programme invoque une entrée/sortie sur un fichier NFS,l’appel est intercepté par le système de fichiers NFS et transmis au serveur distant par le biaisdu réseau.

Les démons qui gèrent les requêtes NFS sur le serveur n’ont pas de numéro de port UDP stan-dard. Ces numéros de ports sont en fait attribués dynamiquement par le gestionnaire de portsRPC. Sur certains systèmes, le programme de gestion des ports se nomme rpc.portmap. Surles systèmes Red Hat, on appelle ce programme portmap, qui est démarré par le script /etc/rc.d/init.d/portmap.

Utilisez la commande rpcinfo pour visualiser les numéros de ports attribués aux différentsservices RPC.

Listing 9.2 – Affichage des ports RPC

$ rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 32768 status

Serveurs réseau Linux332

Copyright ©

2003 Groupe E

yrolles

Le port numéro 111 (portmapper) est le numéro de port du gestionnaire de ports, déclaré dansle fichier /etc/services (sur certains systèmes, le nom associé à ce port est rpcbind ousunrpc). Les systèmes distants peuvent contacter le gestionnaire de ports puisque ce dernieremploie un numéro de port standard. Le gestionnaire de ports fournit les numéros des portsutilisés par les autres services RPC aux systèmes distants. Tous les autres numéros de ports dece listing, extrait de notre serveur Linux Red Hat 8.0, sont attribués aux démons NFS. Sid’autres services RPC, comme NIS, s’exécutaient sur ce serveur, le gestionnaire de ports lesafficherait en réponse à la commande rpcinfo. Dans notre exemple, seul NFS s’exécute. Lesdifférents démons NFS, ci-après, sont répertoriés dans leur ordre d’apparition dans le listing :

• status – Ce démon, qui surveille l’état des connexions, signale les pannes et informe legestionnaire de verrous afin que les fichiers verrouillés soient correctement libérés si unclient NFS redémarre sans terminer correctement sa connexion NFS. Le démonrpc.statd surveille le trafic UDP et TCP.

• rquotad – Le serveur de quotas à distance, rpc.rquotad, applique les quotas d’un systèmede fichiers pour les systèmes de fichiers montés par NFS. Les quotas de systèmes defichiers contrôlent l’espace disque que consomme un utilisateur. Ce démon étend cettefonctionnalité aux utilisateurs NFS.

• mountd – Le démon de montage gère les requêtes de montage des clients. Le programmerpc.mountd vérifie si un système de fichiers est exporté ou non et si le client est autoriséou non à effectuer le montage du système de fichiers.

100024 1 tcp 32768 status 100011 1 udp 687 rquotad 100011 2 udp 687 rquotad 100011 1 tcp 690 rquotad 100011 2 tcp 690 rquotad 100005 1 udp 32769 mountd 100005 1 tcp 32771 mountd 100005 2 udp 32769 mountd 100005 2 tcp 32771 mountd 100005 3 udp 32769 mountd 100005 3 tcp 32771 mountd 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100021 1 udp 32770 nlockmgr 100021 3 udp 32770 nlockmgr 100021 4 udp 32770 nlockmgr

Listing 9.2 – Affichage des ports RPC (suite)

Partage de fichiersCHAPITRE 9

333

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

• nfs – Le programme nfsd gère l’interface entre l’utilisateur et le module noyau NFS(nfsd.o). Les entrées/sorties NFS sont gérées par le module noyau.

• nlockmgr – Le gestionnaire de verrous NFS (lockd) gère les requêtes de verrouillage defichiers des clients. Le verrouillage de fichiers empêche la corruption de fichiers suscep-tible de se produire lorsque plusieurs sources tentent simultanément d’écrire dans unfichier. La gestion des verrous ne s’applique pas aux fichiers en lecture seule.

Ces démons font partie de l’implémentation du noyau NFS, incluse dans le noyau Linux 2.4.Notez que la liste des démons est différente si vous disposez d’un système plus ancien conte-nant une implémentation de NFS au niveau utilisateur (c’est-à-dire, non incluse dans lenoyau). Cependant, quelle que soit votre implémentation de NFS, vous disposerez certaine-ment d’un démon gérant les accès aux fichiers et d’un démon de montage gérant les requêtesde montage.

Installer NFSEn étudiant le listing 9.2, vous constatez que le système de fichiers NFS inclut plusieursdémons et services réalisant des fonctions client et serveur. En outre, la distribution de RedHat 8.0 contient plusieurs scripts de démarrage, en relation avec NFS, dans le répertoire /etc/rc.d/init.d :

• nfs – Ce script démarre la plupart des démons NFS. Il traite également le fichier exportset supprime les verrous. Nous étudierons le fichier exports et la commande exportfs plusloin dans ce chapitre.

• nfslock – Ce script démarre les logiciels de gestion de verrous lockd et rpc.statd.

• netfs – Ce script monte les systèmes de fichiers NFS répertoriés dans le fichier /etc/fstab. Red Hat utilise également ce script pour les montages SMB (ces derniers ainsi quela commande mount et le fichier fstab sont traités plus loin dans ce chapitre). Toutefois,d’autres systèmes Linux utilisent la commande mount –a pour monter les systèmes defichiers répertoriés dans le fichier fstab. Avec Red Hat, les montages de systèmes defichiers nécessitant une connexion réseau sont réalisés séparément des autres systèmes defichiers. Cette méthode garantit le montage des systèmes de fichiers locaux en cas dedysfonctionnement du réseau.

• amd – Ce script démarre le démon amd, lequel monte automatiquement les systèmes defichiers lors du premier accès à ces systèmes de fichiers.

• autofs – Ce script démarre le système de fichiers de l’automonteur (automount) qui monteautomatiquement les fichiers à la demande et qui les démonte lorsqu’ils ne sont plusemployés. Les démons automount et amd sont deux mises en œuvre différentes de l’auto-monteur.

Serveurs réseau Linux334

Copyright ©

2003 Groupe E

yrolles

NFS est fourni dans la plupart des distributions Linux. Pour l’installer, sélectionnez le compo-sant adéquat lors de l’installation initiale. Si votre système Linux s’exécute déjà sans le logi-ciel NFS, servez-vous d’un gestionnaire de paquetages comme rpm ou gnorpm pour l’installer.La figure 9.1 illustre l’utilisation du logiciel gnorpm pour vérifier l’installation du logiciel NFSsur notre système Red Hat.

Le paquetage décrit à la figure 9.1 propose des outils de gestion de NFS sur le serveur. Leserveur NFS doit être configuré dans le noyau, car il utilise un code noyau (l’option du noyauCONFIG_NFSD active le serveur NFS au niveau du noyau). De plus, l’option du noyauCONFIG_NFS_FS doit être sélectionnée sur tous les systèmes Linux se servant de NFS (laconfiguration du noyau est abordée au chapitre 13, « Maintenance »).

Servez-vous d’un outil tel que tksysv ou chkconfig pour activer les scripts de démarrage NFS,de sorte que NFS soit démarré en même temps que le système. Bien entendu, il n’est pasnécessaire de redémarrer le système pour initialiser ces services. Une fois le logiciel installéet les scripts activés, exécutez la commande suivante pour démarrer manuellement NFS :

Vérifiez l’état des processus pour vous assurer que les démons requis s’exécutent :

Figure 9.1Paquetage NFS de Red Hat au format RPM.

[root]# service nfs startStarting NFS services: [ OK ]Starting NFS quotas: [ OK ]Starting NFS mountd: [ OK ]Starting NFS daemon: [ OK ]

Partage de fichiersCHAPITRE 9

335

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

Dans cet exemple, les huit instances du processus serveur nfsd prennent en charge les commu-nications NFS. Par défaut, la commande rpc.nfsd ne démarre qu’un seul processus. Uneoption de la ligne de commande permet de démarrer des processus supplémentaires. Cetteoption est définie par la variable RPCNFSDCOUNT dans le script nfs de Red Hat. Par conséquent,si vous souhaitez modifier le nombre de processus nfsd qui s’exécutent, modifiez la valeurattribuée à cette variable. Normalement, huit processus nfsd garantissent le bon fonctionne-ment du service. Si le serveur est très sollicité, augmentez cette valeur pour améliorer lesperformances.

Une fois tous les éléments installés et les scripts de démarrage exécutés, vous devez confi-gurer le serveur, car les démons ne démarrent pas. En effet, certains scripts de démarrage véri-fient l’existence du fichier de configuration /etc/exports avant de démarrer les démons. Votreprochaine tâche donc consiste à créer ce fichier.

Configurer un serveur NFSLe fichier /etc/exports permet de configurer le serveur NFS. Il contrôle les fichiers et lesrépertoires exportés, les hôtes autorisés à y accéder et le type d’accès accordés. La syntaxegénérale des entrées du fichier /etc/exports est la suivante :

La variable répertoire représente le chemin d’accès absolu au répertoire ou au fichierexporté. Si le répertoire n’est pas suivi d’un hôte ou d’une option, tous les hôtes ont une auto-risation de lecture et d’écriture sur le répertoire.

[root]# ps -Cnfsd PID TTY TIME CMD 1368 pts/0 00:00:00 nfsd 1371 pts/0 00:00:00 nfsd 1372 pts/0 00:00:00 nfsd 1373 pts/0 00:00:00 nfsd 1374 pts/0 00:00:00 nfsd 1375 pts/0 00:00:00 nfsd 1376 pts/0 00:00:00 nfsd 1377 pts/0 00:00:00 nfsd[root]# ps -Crpc.mountd PID TTY TIME CMD 1363 ? 00:00:00 rpc.mountd

répertoire [hôte(option)]...

Serveurs réseau Linux336

Copyright ©

2003 Groupe E

yrolles

La variable hôte représente le nom du client autorisé à accéder au répertoire exporté. Si aucunhôte n’est indiqué, le répertoire est exporté pour tout le monde. Les valeurs de la variable hôtepeuvent être :

• Des noms d’hôtes individuels comme parrot.foobirds.org.

• Des caractères de remplacement de domaine comme *foobirds.org pour chaque hôte dudomaine foobirds.org.

• Des couples adresse IP/masque d’adresse tels que 172.16.5.0/255.255.255.0. Dans ce casde figure, il s’agit de tous les hôtes possédant une adresse IP qui commence par 172.16.5.

• Des groupes réseau comme @group1. Un groupe réseau est un nom attribué à un grouped’hôtes individuels dans le fichier /etc/netgroup. Les groupes réseau sont principalementemployés avec les systèmes qui exécutent NIS (consultez la page du manuel de netgrouppour obtenir des détails supplémentaires).

La variable option détermine le type d’accès accordé. Si l’option est spécifiée sans nomd’hôte, l’accès est accordé à tous les clients. Sinon, l’accès n’est accordé qu’à l’hôtenommé. Les deux options les plus courantes sont :

• ro – Indique que le client est uniquement autorisé à lire le répertoire. L’écriture dans lerépertoire n’est pas permise.

• rw – Accorde des accès complets en lecture et en écriture sur le répertoire. L’accès enlecture/écriture constitue la permission par défaut.

Outre ces deux options courantes, il existe des options relatives aux UID et aux GID. NFSutilise les UID et les GID pour contrôler l’accès aux fichiers de la même façon que l’accès auxfichiers locaux. Toutefois, si NFS doit gérer des UID et des GID hétérogènes attribués surdifférents systèmes, vous risquez de rencontrer des problèmes de coordination. Les optionsfacilitant la gestion des problèmes de coordination sont décrites dans la prochaine section« Correspondance des UID et des GID entre le serveur et les clients ».

Le listing 9.3 illustre un exemple concret d’un fichier /etc/exports.

Listing 9.3 – Exemple d’un fichier /etc/exports.

/usr 172.16.5.0/255.255.255.0(ro)/home 172.16.5.0/255.255.255.0(rw)/usr/local/man flicker(rw) parrot(rw)/usr/local/doc flicker(rw) parrot(rw)/usr/local/bin hawk(rw)/home/sales *.sales.foobirds.org(rw)

Partage de fichiersCHAPITRE 9

337

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

La première entrée de ce fichier accorde, à chaque client du réseau 172.16.5.0, un accès enlecture seule au répertoire /usr. Dans le cas présent, le réseau est défini par une adresse IP etun masque. Cette entrée accorde un accès à toute machine du réseau local, sans pour autantfournir cet accès à chaque machine du domaine entier et sans répertorier explicitement tousles hôtes du réseau local. Le répertoire /usr contient la documentation et les exécutablespouvant intéresser les clients Linux, par conséquent, seule la permission de lecture est néces-saire pour accéder à ces fichiers.

La seconde ligne de l’exemple accorde les droits de lecture et d’écriture dans le répertoire /home. Là encore, l’accès est accordé aux hôtes du sous-réseau local. Le répertoire /home estexporté pour attribuer un accès NFS aux répertoires d’accueil du serveur. En effet, les utilisa-teurs ont besoin d’un accès en lecture/écriture pour pouvoir travailler dans leurs répertoiresd’accueil.

Les trois lignes suivantes accordent toutes des permissions de lecture et d’écriture à des hôtesindividuels pour des sous-répertoires spécifiques du répertoire /usr. Ces entrées n’affectentpas la première ligne du fichier, puisque le répertoire /usr est toujours partagé en lecture seulepour tous les clients locaux. Les versions plus anciennes de NFS s’exécutant sous Unix nepermettent pas d’exporter un sous-répertoire d’un répertoire déjà partagé. Toutefois, Linuxpropose cette fonction qui peut se révéler très utile. Ces entrées ont été ajoutées pour lespersonnes qui gèrent la documentation des répertoires /usr/local/doc et /usr/local/man.Elles peuvent ainsi modifier directement la documentation à partir de leur poste de travail. Lamême technique est employée pour la gestion des exécutables du répertoire /usr/local/bin.

La dernière ligne du fichier exporte le répertoire /home/sales pour chaque hôte du sous-domaine sales.foobirds.org. Dans ce cas, le répertoire /home/sales sert probablement aupartage de fichiers du département des ventes. Comme le montre l’exemple, le serveur peutpartager des répertoires avec des ordinateurs d’autres domaines ou d’autres réseaux.

Même si des hôtes possèdent les droits de lecture et d’écriture sur certains répertoires, lesaccès accordés aux utilisateurs sont contrôlés par les permissions Linux standards basées surl’UID et le GID des utilisateurs. NFS part du principe qu’un hôte distant a authentifié ses utili-sateurs et leur attribue des UID et des GID valides. On qualifie parfois ce fonctionnement demodèle de sécurité d’hôtes de confiance. L’exportation de fichiers accorde aux utilisateurs dusystème client les mêmes accès que lorsqu’ils se connectent directement sur le serveur.

Supposez, par exemple, que le serveur qui exporte ces fichiers se nomme wren. Supposezégalement que l’utilisateur craig possède un compte sur wren et sur eagle et que les deuxsystèmes lui attribuent l’UID 501 et le GID 206. Jusque là, tout fonctionne parfaitement. Enrevanche, que se passe-t-il si l’ordinateur hawk possède un utilisateur nommé david, auquel ona attribué l’UID 501 et le GID 206 ? Le compte david possède alors les mêmes accès auxfichiers de l’utilisateur craig. Vous souhaitez sans doute éviter ce type de situation. Fortheureusement, Linux propose des outils facilitant la gestion de ce problème.

Serveurs réseau Linux338

Copyright ©

2003 Groupe E

yrolles

Correspondance des UID et des GID entre le serveur et les clientsÀ l’instar du système de fichiers Linux, les identificateurs d’utilisateurs et de groupes sontégalement très importants pour NFS. Contrairement aux UID et GID que vous attribuez lorsde la création d’un compte d’utilisateur, vous n’avez aucun contrôle sur les UID et GIDaffectés par les clients de votre serveur NFS. NFS propose différents outils facilitant la gestionde ces problèmes potentiels.

La gestion du compte root constitue l’un des problèmes les plus évidents intervenant avec lemodèle de sécurité d’hôtes de confiance. Il est très rare (et surtout dangereux du point de vuede la sécurité) d’autoriser un utilisateur habilité root sur un système client à disposer égale-ment d’un accès illimité sur le contenu exporteé de votre serveur. Par défaut, NFS empêche cecomportement avec le paramètre root_squash, qui remplace les UID et GID de root par lesUID et GID de nobody dans les requêtes arrivant sur le serveur. Ainsi, un utilisateur connectéen tant que root sur un client se voit uniquement accordé les permissions nobody sur leserveur. Vous pouvez annuler ce comportement avec le paramètre no_root_squash. Toutefoisrestez prudent, car le paramètre no_root_squash ouvre des portes qui peuvent être exploitéespar les pirates.

Servez-vous du paramètre all_squash pour mettre en correspondance chaque utilisateur d’unsystème client avec l’utilisateur nobody. Par exemple, l’entrée suivante exporte le répertoire /pub pour tout client :

Elle accorde un accès en lecture seule sur le répertoire à tous les clients et limite chaque utili-sateur de ces clients aux permissions « autres » accordées à l’utilisateur nobody En consé-quence, les utilisateurs possèdent uniquement un droit en lecture sur les fichiers ayant lapermission de lecture pour la catégorie d’utilisateurs « autres ».

Grâce aux options anonuid et anongid, vous pouvez également mettre en correspondancechaque utilisateur d’un client avec un identificateur d’utilisateur et de groupe spécifiques. Cesoptions sont plus intéressantes lorsque le client ne possède qu’un seul utilisateur et ne luiattribue ni d’UID, ni GID.

À titre d’illustration, prenons un ordinateur sous Microsoft Windows qui exécute NFS. Lesordinateurs ne possèdent généralement qu’un seul utilisateur et n’utilisent pas d’UID ou deGID. Afin de faire correspondre l’utilisateur de ce type d’ordinateur à un UID et un GIDcorrects, insérez l’exemple suivant dans le fichier /etc/exports :

Dans cet exemple, le nom d’hôte de l’ordinateur de Kristin est robin. Cette entrée accorde ledroit de lecture/écriture au répertoire /home/kristin. L’option all_squash fait correspondre

/pub (ro,all_squash)

/home/kristin robin(all_squash,anonuid=1001,anongid=1001)

Partage de fichiersCHAPITRE 9

339

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

chaque requête du client à un identificateur d’utilisateur spécifique. Toutefois, au lieu denobody, la correspondance est effectuée avec l’UID et le GID, définis dans les options anonuidet anongid. Bien entendu, 1001:1001 doit constituer la paire UID/GID attribuée à l’utilisateurkristin dans le fichier /etc/passwd du serveur.

La coordination au sein des administrateurs système et un nombre minimal de correspon-dances d’UID/GID suffisent généralement à résoudre les problèmes de correspondances.L’encadré « Coordination des UID et des GID » soulève les questions que doit se poser uneentreprise lorsqu’elle décide de créer un service NFS.

Coordination des UID et des GID

Lorsque des fichiers sont partagés sur le réseau, les systèmes doivent identifier les utilisateurs demanière cohérente et coordonnée. L’identification des utilisateurs constitue un problème de sécurité trèsimportant dans ce cas de figure. En effet, plus le réseau est grand, plus le problème risque de se poser.Même si NFS propose quelques outils de mise en correspondance des UID et des GID, la planification etla coordination demeurent les principaux outils permettant d’éviter ces ennuis.

Une société de 5 000 employés, composée de huit unités opérationnelles différentes totalisant 50 sous-réseaux, a décidé de créer un système NFS unifié qui couvre toute l’entreprise. Les UID et les GIDdoivent être coordonnés dans l’entreprise pour autoriser un vrai partage de fichiers. Toutefois, le réseausous-jacent, les sous-réseaux et les serveurs de ce nouveau service existent déjà. De nombreux sous-réseaux possèdent leurs propres administrateurs réseau et exécutent leurs services NFS. Ce constatremet en cause la faisabilité, voire l’intérêt de ce nouveau service.

Premièrement, le partage de fichiers dans une entreprise est-il judicieux ? En effet, seul un groupe depersonnes coopérant à la production d’un produit final justifie le partage de fichiers. Ce n’est donc pas ceque vous souhaitez dans le cas d’une entreprise de 5 000 personnes.

En revanche, une entreprise souhaite qu’un produit fini soit accessible à tous les employés. Il faut alorschoisir un support adapté au type de produit : le Web s’il s’agit d’informations, NFS s’il s’agit d’unprogramme exécutable.

Deuxièmement, la diffusion d’informations justifie-t-elle une coordination des UID et des GID ? Pasvraiment. L’utilisateur nobody possède les permissions de la catégorie d’utilisateurs « autres ». Leséléments diffusés dans toute l’entreprise peuvent détenir les permissions de lecture et d’exécution pourtout le monde.

Même si l’entreprise ne souhaite pas réellement un partage de fichiers, il existe une solution à ce type deprojet : un plan d’attribution des UID et des GID bien coordonné. Les services centraux gèrent les UID etles GID supérieurs à 20 000 qu’ils attribuent à chaque employé. Un UID et un GID sont affectés à chaqueemployé. De plus, chaque unité opérationnelle dispose de 1 000 UID et GID qui leurs sont réservés.

Finalement, la centralisation des services s’avère bénéfique pour chaque administrateur d’un sous-réseau indépendant. En effet, l’ajout d’un utilisateur d’une autre organisation, au sous-réseau d’unserveur NFS, ne provoque aucun problème de correspondance ou de conflit, car une autorité centralecoordonne les UID et les GID pour toute l’entreprise. La coopération et la coordination au sein d’uneentreprise sont plus importantes que le partage de fichiers.

Serveurs réseau Linux340

Copyright ©

2003 Groupe E

yrolles

Commande exportfsExécutez la commande exportfs lorsque vous avez déterminé les répertoires à partager dansle fichier /etc/exports. Celle-ci traite alors exports pour construire le fichier /var/lib/nfs/xtab, qui contient des informations sur les répertoires exportés. Le démon mountd lit ce fichierpour répondre aux requêtes de montage des clients. Exécutez la commande exportfs avecl’option –a pour traiter toutes les lignes du fichier /etc/exportfs :

Cette commande construit un nouveau fichier xtab en fonction du contenu du fichier /etc/exports.

Utilisez la commande exportfs pour mettre à jour un fichier xtab reflétant les modificationsdu fichier /etc/exports. Si vous éditez le fichier /etc/exports et que vous souhaitez mettre àjour le fichier xtab actuel sans le remplacer, employez l’argument –r :

L’option –r déclenche la synchronisation du contenu des fichiers exports et xtab. Leséléments ajoutés au fichier exports sont donc insérés dans le fichier xtab et ceux qui sontsupprimés y sont retirés.

Vous pouvez également utiliser la commande exportfs pour exporter un répertoire qui n’estpas répertorié dans le fichier /etc/exports. À titre d’exemple, si vous souhaitez exportertemporairement le répertoire /usr/local, avec les permissions de lecture et d’écriture, vers leclient falcon, exécutez la commande suivante :

Notez que l’option -o permet de spécifier des options d’exportation pour le système de fichierpartagé. Dans cet exemple, l’option est lecture/écriture (rw).

Lorsque le client a terminé son travail avec le système de fichiers exporté de façon temporaire,le répertoire peut être supprimé de la liste des partages à l’aide de l’option –u. Cettecommande met fin au partage et empêche le client falcon de monter le répertoire /usr/local :

En réalité, vous pouvez combiner les options –u et –a afin d’arrêter tous les partages sansarrêter les démons NFS :

# exportfs –a

# exportfs –r

# exportfs falcon:/usr/local –o rw

# exportfs –u falcon:/usr/local

Partage de fichiersCHAPITRE 9

341

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

En dépit de ces fonctionnalités, vous n’utilisez pas la commande exportfs pour le partage derépertoires individuels, mais plutôt pour le traitement de toutes les entrées du fichier /etc/exports, à l’aide des options –a ou –r. Par exemple, le script nfs de Red Hat exécute exportfs–r avant de démarrer les démons.

Les clients peuvent monter et utiliser les systèmes de fichiers partagés par le serveur dès lorsque les démons sont démarrés et que le fichier exports est traité par exportfs. Nous allonsnous pencher sur la configuration d’un client NFS à la section suivante.

Configurer un client NFSPour configurer un client NFS, vous devez connaître le nom d’hôte du serveur NFS et lesrépertoires qu’il exporte. L’administrateur réseau indique aux utilisateurs les noms desserveurs NFS.

À l’aide de la commande Linux showmount, vous listez les répertoires exportés par un serveurainsi que les clients autorisés à monter ces répertoires. À titre d’illustration, la commandeshowmount --exports suivante interroge le serveur wren.

La commande showmount liste les répertoires NFS exportés par wren et répertorie les clientsautorisés à monter ces répertoires. Vous pouvez monter l’un des répertoires partagés par wrensi vous êtes l’utilisateur d’un des clients désignés.

Commande mountAvant d’utiliser un répertoire NFS, attachez-le au système de fichiers local avec la commandemount. Cette commande peut être simple ou complexe selon vos besoins.

# exportfs –ua

Listing 9.4 – Commande showmount

$ showmount --exports wrenExport list for wren:/home/sales *.sales.foobirds.org/usr 172.16.5.0/255.255.255.0/home 172.16.5.0/255.255.255.0/usr/local/doc flicker.foobirds.org,parrot.foobirds.org/usr/local/man flicker.foobirds.org,parrot.foobirds.org/usr/local/bin hawk.foobirds.org

Serveurs réseau Linux342

Copyright ©

2003 Groupe E

yrolles

Dans sa forme la plus simple, la commande mount identifie le système de fichiers distant et lerépertoire local par lequel il est accessible. Le système de fichiers distant est identifié par lenom du serveur et par le répertoire exporté par le serveur. Le répertoire local, que l’on nomme« point de montage », n’est qu’un nom d’un répertoire vide créé pour le montage du répertoireNFS distant. Vous pouvez monter les répertoires exportés par wren à l’aide des commandesmount présentées au listing 9.5.

Les exemples du listing 9.5 supposent que les répertoires vides /usr/local/bin, /usr/local/man et /usr/local/doc existaient sur le client avant l’exécution des commandes mount. Eneffet, le montage d’un répertoire distant, contenant toutes les pages d’un manuel, sur un réper-toire existant n’a de sens que si ce répertoire est vide. La création d’un espace de stockagecommun pour des pages man et de la documentation permet d’économiser l’espace disque surles clients et de simplifier la gestion. Cela n’est possible que si les répertoires du client sontvides.

Une commande mount simple suffit dans la plupart des cas. Cependant, il arrive parfois quevous ayez à utiliser des options dans la commande mount avec l’argument –o. Le tableau 9.1répertorie les options de la commande mount s’appliquant à tous les types de systèmes defichiers.

Listing 9.5 – Exemples de la commande mount

# mount wren:/usr/local/bin /usr/local/bin# mount wren:/usr/local/man /usr/local/man# mount wren:/usr/local/doc /usr/local/doc

Tableau 9.1 – Options Linux de la commande mount

Option Signification

async Utiliser des accès asynchrones au système de fichiers.

atime Mettre à jour l’heure d’accès dans l’inode à chaque accès.

auto Monter lorsque l’option -a est utilisée.

defaults Définit les options rw, suid, dev, exec, auto, nouser et async.

dev Autorise les fichiers en mode caractère et en mode bloc sur le système de fichiers.

exec Permet l’exécution des fichiers du système de fichiers.

_netdev Indique un système de fichiers qui dépend du réseau.

noatime Ne pas mettre à jour l’heure d’accès dans l’inode.

noauto Ne pas monter lorsque l’option -a est utilisée.

nodev Ne pas autoriser les fichiers en mode caractère et en mode bloc sur le système de fichiers.

noexec Ne pas autoriser l’exécution des fichiers du système de fichiers.

Partage de fichiersCHAPITRE 9

343

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

Si vous souhaitez monter le répertoire /usr/local/bin et si, pour des raisons de sécurité, vousne désirez pas tenir compte des permissions setuid et setgid accordées sur les programmes,exécutez la commande mount suivante :

Commande umountÀ l’inverse, vous disposez de la commande umount qui permet de supprimer un répertoiremonté du système de fichiers local. Un système de fichiers peut être démonté à l’aide du nomdu système de fichiers distant ou du nom du point de montage. Ainsi, afin de démonter lerépertoire /usr/local/bin, exécutez l’une des deux commandes suivantes :

La commande umount dispose également de quelques options intéressantes. L’option -adémonte tous les systèmes de fichiers répertoriés, autrement dit tous les systèmes de fichiersmontés, dans le fichier /etc/mtab. La combinaison des options -t et -a démonte tous lessystèmes de fichiers du type indiqué. Quant à l’option –f, elle force le démontage même si leserveur NFS distant ne répond plus.

nosuid Ne pas pendre en compte les permissions SetUID et SetGID définies sur les programmes du système de fichiers.

nouser Seul root peut monter le système de fichiers.

remount Remonter un système de fichiers monté avec de nouvelles options.

ro Monter le système de fichiers en lecture seule.

rw Monter le système de fichier en lecture/écriture.

suid Autoriser les programmes à tenir compte des permissions SetUID et SetGID.

sync Utiliser des accès synchrones au système de fichiers.

user Autorise les utilisateurs ordinaires à monter le système de fichiers.

INFO En dépit de la longueur de cette liste, des options de montage NFS supplémentaires sont dispo-nibles dans la prochaine section.

# mount –o nosuid wren:/usr/local/bin /usr/local/bin

# umount wren:/usr/local/bin# umount /usr/local/bin

Tableau 9.1 – Options Linux de la commande mount (suite)

Option Signification

Serveurs réseau Linux344

Copyright ©

2003 Groupe E

yrolles

Utiliser fstab pour monter des répertoires NFSL’exécution de la commande mount -a demande à Linux de monter tous les systèmes defichiers répertoriés dans le fichier /etc/fstab. Ce type de commande est souvent présentedans un script de démarrage d’un système Linux. Si vous ajoutez l’option –t nfs à lacommande mount –a, vous limitez les montages aux systèmes de fichiers qui sont de typeNFS. Le script netfs de Red Hat utilise l’argument –t nfs pour remonter les systèmes defichiers NFS après un redémarrage du système.

La table des systèmes de fichiers, /etc/fstab, définit les périphériques, les partitions et lessystèmes de fichiers distants qui composent le système de fichiers de votre système Linux. Lefichier contient des entrées relatives à la partition racine, à la partition de mémoire virtuelle,voire aux systèmes de fichiers virtuels, comme /proc. Le listing 9.6 présente un exemple defichier fstab, extrait d’un système gérant le double amorçage et s’exécutant sous Linux RedHat 8.0.

Chaque ligne du fichier fstab est composée de six champs. Le premier champ représente lenom du système de fichiers. Le mot-clé none est employé avec les systèmes de fichiers virtuelscomme /proc. En ce qui concerne les périphériques locaux, le nom du système de fichiers estreprésenté par le nom du périphérique local. Il doit donc s’agir du nom d’un « périphériquespécial en mode bloc ». Sur les systèmes Linux, mknod peut créer deux types de périphériques :les périphériques en mode caractère qui fournissent les données caractère par caractère et lespériphériques en mode bloc qui fournissent les données par paquets. La commande ls –lpermet de connaître le type du périphérique :

Listing 9.6 – Exemple de fichier fstab

$ cat /etc/fstabLABEL=/ / ext3 defaults 1 1LABEL=/home /home ext3 defaults 1 2/dev/fd0 /mnt/floppy auto noauto,owner 0 0LABEL=/var /var ext3 defaults 1 2/dev/hda1 /win vfat defaults 0 0none /proc proc defaults 0 0none /dev/shm tmpfs defaults 0 0none /dev/pts devpts gid=5,mode=620 0 0/dev/hda2 swap swap defaults 0 0/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0crow:/export/home/craig /home/craig nfs rw 0 0

Partage de fichiersCHAPITRE 9

345

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

Le premier caractère du résultat de la commande ls indique le type de périphérique. Si lepremier caractère est c, le périphérique est en mode caractère, b signifiant le mode bloc. Mêmesi tous les périphériques locaux du fichier fstab sont des périphériques en mode bloc, ils nesont pas tous forcément référencés par un nom. En effet, le champ du nom du système defichiers peut contenir un libellé si celui-ci correspond à un périphérique local spécial en modebloc. Le listing 9.6 illustre trois entrées indiquant le nom du système de fichiers par le biaisd’un libellé :

À titre d’exemple, la commande e2label permet de visualiser le libellé associé à unpériphérique :

Le champ nom du système de fichiers d’un système de fichiers NFS est mis en forme de lamême façon que dans la commande mount. Il contient le nom du serveur NFS et le chemind’accès au système de fichiers, séparés par un caractère deux-points (:). Par exemple, danscrow:/export/home/craig, crow représente le nom du serveur NFS et /export/home/craigreprésente le chemin d’accès au système de fichiers distant.

Le second champ de chaque entrée du fichier fstab indique le point de montage du systèmede fichiers. Une grande partie des points de montage du listing 9.6 se passe de commentaires.Certains points de montage ont été créés lors du partitionnement du disque, d’autres sontdédiés aux périphériques matériels, comme le lecteur de disquettes et le lecteur de CD-Rom.Quelques points de montage sont réservés aux systèmes de fichiers virtuels. Dans lelisting 9.6, vous disposez d’un point de montage représentant un répertoire vide, créé pour lemontage d’un système de fichiers NFS. Tous ces répertoires font partie de l’arborescence, àl’exception de l’espace de mémoire virtuelle (swap) qui ne possède pas de point de montage

$ ls -l /dev/hda1brw-rw---- 1 root disk 3, 1 Aug 30 2001 /dev/hda1$ ls -l /dev/ttyS0crw-rw---- 1 root uucp 4, 64 Aug 30 2001 /dev/ttyS0

LABEL=/ / ext3 defaults 1 1LABEL=/home /home ext3 defaults 1 2LABEL=/var /var ext3 defaults 1 2

$ e2label /dev/hda3/$ e2label /dev/hdd1/home$ e2label /dev/hdd2/var

Serveurs réseau Linux346

Copyright ©

2003 Groupe E

yrolles

et qui n’apparaît pas comme répertoire de la racine. Sur les systèmes Linux, une partition demémoire virtuelle est représentée par le mot-clé swap dans ce champ.

Le troisième champ détermine le type du système de fichiers. Linux 2.4 prend en charge plusde 30 types de systèmes de fichiers, que vous n’utiliserez pas dans leur intégralité. De plus,certains ne sont pas pris en charge par le noyau. Le listing 9.6 présente huit mots-clés diffé-rents qui déterminent des types de système de fichiers :

• ext3 est le mot-clé le plus important, car il s’agit du système de fichiers Linux qui est nati-vement journalisé . La majorité des systèmes Linux se sert principalement des systèmesde fichiers de type ext2 ou ext3.

• swap représente un format spécial utilisé pour le fichier d’échanges.

• iso9660 représente le format ISO (International Standards Organization) pour les CD-Rom.

• auto ne représente pas vraiment un type de système de fichiers. Il indique à la commandemount de tester le périphérique afin de déterminer le type du système de fichiers. Cela estutile dans le cas des lecteurs de disquettes car Linux peut en lire différents types.

• vfat représente le format FAT de Microsoft prenant en charge les noms longs. Windowsest installé sur une de ces partitions puisque ce système gère le double amorçage. Linuxpeut donc lire ces fichiers Windows.

• Les trois derniers types (tmpfs, devpts et proc) sont des systèmes de fichiers virtuels. Àmoins que vous ne souhaitiez consulter la liste des terminaux virtuels dans le répertoire /dev/pts, seul /proc fournit des informations intéressantes à l’administrateur système. Cesystème de fichiers /proc est doté d’une interface vers les structures de données du noyauqui contiennent des informations sur les processus en cours d’exécution.

Le quatrième champ représente une liste d’options, séparées par une virgule. L’optiondefaults identifie les systèmes de fichiers qui peuvent :

• être montés à l’aide de la commande mount –a lors de la phase de démarrage ;

• être montés en lecture/écriture ;

• prendre en compte les permissions SetUID et SetGID ;

• prendre en charge les périphériques en mode caractère et en mode bloc.

Il s’agit de systèmes de fichiers spécifiques de Linux.

L’option noauto indique un système de fichiers qui ne doit pas être monté à l’aide de lacommande mount -a. Cela est le cas, dans le listing 9.6, des lecteurs de disquettes et de CD-Rom. L’option ro du CD-Rom indique un périphérique en lecture seule et l’option ownerprécise que seul le propriétaire du périphérique peut le monter. Les options gid et mode défi-nissent le GID et les permissions de fichier utilisés pour créer les fichiers dans le répertoire /

Partage de fichiersCHAPITRE 9

347

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

dev/pts. Vous pouvez trouver bien d’autres options dans un fichier fstab, dont certaines sontrépertoriées dans le tableau 9.1 et dans le tableau 9.2.

Le cinquième champ indique à la commande dump les systèmes de fichiers qui doivent êtresauvegardés. Si ce champ contient la valeur 0, dump ne sauvegarde pas le système de fichiers,contrairement à la valeur 1 qui provoque la sauvegarde du système de fichiers à chaque exécu-tion de la commande dump. Bien entendu, celle-ci possède sa propre syntaxe et ses proprescommandes. Toutefois, l’insertion de la valeur 0 dans le fichier fstab pour certains systèmesde fichiers, comme /proc, empêche la commande dump d’effectuer une sauvegarde. En effet,ce type de systèmes de fichiers ne doit pas être sauvegardé.

Le sixième et le dernier champ de chaque entrée permettent à la commande fsck de déter-miner l’ordre dans lequel les systèmes de fichiers doivent être vérifiés. Si le sixième champcontient 0, le système de fichiers n’est pas vérifié. Le premier système de fichiers vérifiécontient la valeur 1, le second contient la valeur 2, etc. Ainsi, les systèmes de fichiers trèsimportants sont vérifiés avant les autres quand la commande fsck s’exécute lors de la phasede démarrage. En règle générale, la partition racine est vérifiée en premier.

La commande fsck permet également d’indiquer les systèmes de fichiers vérifiés parallèle-ment, afin d’accélérer le processus. À titre d’exemple, supposons l’existence de deux parti-tions de même taille sur deux disques différents. Si vous placez la valeur 2 dans le sixièmechamp de chacune de ces partitions, celles-ci sont vérifiées simultanément en deuxième lieu.Si vous effectuez des vérifications parallèles, réalisez ces opérations sur des partitions demême taille et appartenant à des disques différents, faute de quoi vous n’améliorez pas lesperformances.

Les entrées NFS du fichier fstab sont identiques aux autres, à l’exception du champ type quicontient le mot-clé nfs et de nombreuses options de montage NFS. Vous pouvez utiliser toutesles options de la commande Linux mount, présentées au tableau 9.1 et au tableau 9.2, dans uneentrée NFS du fichier fstab.

Tableau 9.2 – Autres options de la commande mount

Option Fonction

acdirmax=n Définit la durée maximale de conservation des attributs d’un répertoire dans le cache. 60 secondes par défaut.

acdirmin=n Définit la durée minimale de conservation des attributs d’un répertoire dans le cache. 30 secondes par défaut.

acregmax=n Définit la durée maximale de conservation des attributs d’un fichier dans le cache. 60 secondes par défaut.

acregmin=n Définit la durée minimale de conservation des attributs d’un fichier dans le cache. 30 secondes par défaut.

actimeo=n Définit toutes les durées de conservation dans le cache à la même valeur.

bg Effectue des tentatives d’accès supplémentaires en arrière plan.

Serveurs réseau Linux348

Copyright ©

2003 Groupe E

yrolles

La plupart de ces options sont rarement utilisées. Les options clés sont celles qui améliorentles performances NFS, comme l’optimisation du tampon d’écriture. La valeur par défaut de1 024 octets est correcte pour rsize et wsize. Toutefois, l’augmentation de la taille de cetampon peut améliorer les performances.

Si vous possédez un réseau ou un serveur peu fiable, utilisez l’option soft ou l’option intr.Ainsi, en cas de panne du serveur, le système client ne sera pas bloqué ou le processusbloquant pourra être interrompu à partir du clavier.

fg Effectue des tentatives d’accès supplémentaires en premier plan.

hard Effectue des tentatives d’accès supplémentaires indéfiniment jusqu’à ce que le serveur réponde.

intr Autorise une interruption clavier à tuer un processus.

mounthost=name Définit le nom du serveur qui exécute mountd.

mountport=n Définit le numéro de port de mountd.

mountprog=n Utilise un numéro de programme RPC différent pour le démon mountd du serveur distant.

mountvers=n Utilise un numéro de version RPC différent pour le démon mountd du serveur distant.

namlen=n Définit la longueur maximale d’un nom de fichier pour le système de fichiers distant. 255 octets par défaut.

nfsprog=n Utilise un numéro de programme RPC différent pour le démon nfsd du serveur distant.

nfsvers=n Utilise un numéro de version RPC différent pour le démon nfsd du serveur distant.

noac Désactive toutes les mises en cache.

nocto Ne récupère pas les attributs lors de la création d’un fichier.

nolock Désactive la gestion de verrous NFS pour la compatibilité avec les serveurs obsolètes.

port=n Définit le numéro de port du serveur NFS. 2 049 par défaut.

posix S’exécute en mode compatible POSIX.

retrans=n Définit le nombre de retransmissions avant un délai d’attente important. La valeur par défaut est 3.

retry=n Définit la durée pendant laquelle le système tente le montage. 10 000 minutes par défaut.

rsize=n Définit la taille du tampon de lecture. 1 024 octets par défaut.

soft Permet l’abandon de l’accès si le serveur ne répond pas.

tcp S’exécute sur TCP au lieu de UDP.

timeo=n Définit le délai d’attente avant l’abandon d’un accès. Doit être employée avec l’option soft.

udp S’exécute sur UDP. Il s’agit de la valeur par défaut.

wsize=n Définit la taille du tampon d’écriture. La valeur par défaut est actuellement 1 024 octets.

Tableau 9.2 – Autres options de la commande mount (suite)

Option Fonction

Partage de fichiersCHAPITRE 9

349

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

Toutes ces options peuvent perturber la compréhension d’une entrée NFS dans le fichierfstab. Afin de comprendre plus facilement ce que vous devez insérer dans un fichier fstab,montez le système de fichiers et consultez l’entrée correspondante dans le fichier mtab. Eneffet, ce dernier contient des informations sur les systèmes de fichiers montés et les entrées dece fichier sont semblables à celles du fichier fstab. En voici un exemple présenté aulisting 9.7.

À partir de cet exemple, vous pourriez ajouter l’entrée suivante dans le fichier fstab pourmonter le répertoire /home/owl à chaque démarrage du système :

Le fichier fstab permet de monter automatiquement les systèmes de fichiers lors de la phasede démarrage du système. L’automonteur monte automatiquement les systèmes de fichiersNFS, le cas échéant.

AutomonteurVous disposez de deux implémentations de l’automonteur sous Linux : l’une est basée sur ledémon de l’automonteur Berkeley (amd), l’autre sur l’automonteur de Solaris (automount).Toutes deux se configurent de la même manière car elles contiennent des points de montage

INFO Vous pouvez utiliser toutes les options mentionnées dans la commande mount à l’aide del’argument –o. En outre, toutes les options répertoriées dans la section traitant de la commandemount peuvent être insérées dans le fichier fstab. Cette liste d’options a été divisée par soucide clarté.

Listing 9.7 – Exemple de fichier /etc/mtab

# mount owl:/home/jane /home/owl# cat /etc/mtab/dev/hda3 / ext3 rw 0 0none /proc proc rw 0 0/dev/hdd1 /home ext3 rw 0 0/dev/hdd2 /var ext3 rw 0 0/dev/hda1 /win vfat rw 0 0none /dev/shm tmpfs rw 0 0none /dev/pts devpts rw,gid=5,mode=620 0 0/dev/cdrom /mnt/cdrom iso9660 ro,nosuid,nodev 0 0owl:/home/jane /home/owl nfs,addr=172.16.8.15 rw 0 0

owl:/home/jane /home/owl nfs,addr=172.16.8.15 rw 0 0

Serveurs réseau Linux350

Copyright ©

2003 Groupe E

yrolles

et des tables d’automontage définissant les systèmes de fichiers montés sur ces points demontage. Bien que les points de montage puissent être définis dans le fichier /etc/amd.conf,les points de montage et les tables d’automontage sont souvent définies en ligne decommande :

Grâce à cette ligne de commande, amd sait que son répertoire de travail, dans lequel lesmontages sont réellement effectués, est /amd. Le point de montage de l’utilisateur est /mnt/wren. Comme tout autre point de montage NFS, ce répertoire doit exister. La table d’automon-tage définissant le système de fichiers monté sur /mnt/wren se nomme /etc/nfs/wren.map.

Dans cette section, nous nous penchons davantage sur automount plutôt que sur amd pour deuxraisons. Premièrement, notre système Linux Red Hat 8.0 exécute le script autofs par défaut.Il n’exécute le script amd que si vous l’activez. À titre de démonstration, voici le résultat del’exécution des commandes chkconfig sur notre système Red Hat :

Deuxièmement, préférez vous servir du démon automount, car sa syntaxe et sa structureressemblent davantage à celle de la mise en œuvre d’origine de Sun. Cela facilite la migrationdes fichiers de configuration entre les systèmes et permet de bénéficier du savoir-faire de Sunpour implémenter un serveur Linux.

Dans le cas du démon automount, les points de montage ne sont généralement pas définis surla ligne de commande automount. Les points de montage automount sont plutôt indiqués dansle fichier auto.master. Ce fichier répertorie toutes les tables permettant de définir les systèmesde fichiers automatiquement montés. Le format des entrées du fichier auto.master est lesuivant :

Le champ options contient les options standards de la commande mount, rarement définies àcet endroit, car la plupart des administrateurs placent les options dans les tables d’automon-tage. La plupart des entrées du fichier auto.master contiennent uniquement un point demontage et une table d’automontage. Afin de reproduire la configuration amd précédente, lefichier auto.master doit contenir les éléments suivants :

amd –a /amd /mnt/wren /etc/nfs/wren.map

$ chkconfig --list amdamd 0:off 1:off 2:off 3:off 4:off 5:off 6:off$ chkconfig --list autofsautofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off

point-de-montage nom-table options

/mnt/wren /etc/nfs/wren.map

Partage de fichiersCHAPITRE 9

351

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

Cette entrée indique à automount de monter le système de fichiers, défini dans la table d’auto-montage /etc/nfs/wren.map, sur /mnt/wren lorsqu’un utilisateur fait référence à ce répertoire.Sur les systèmes Red Hat, le démon automount est démarré avec le script /etc/rc.d/init.d/autofs. Exécutez autofs reload pour réinitialiser la configuration de l’automonteur lorsque latable d’automontage a été modifiée.

La table d’automontage contient les informations nécessaires au montage du système defichiers NFS. La syntaxe d’une entrée d’une table d’automontage est la suivante :

Pour les entrées NFS, le champ clé représente le nom d’un sous-répertoire. Le système defichiers est monté lorsqu’une personne tente d’accéder à ce sous-répertoire. Le champ optionscontient les options standards de la commande mount et le champ système-de-fichiers repré-sente le chemin d’accès au système de fichiers à monter. La table d’automontage de notreexemple contient :

Ainsi l’automonteur monte wren:/usr/local/doc en lecture seule lorsqu’un utilisateur tented’accéder à /mnt/wren/doc et monte wren:/usr/local/man en lecture seule si un individuessaye d’accéder à /mnt/wren/man.

Automontage des répertoires d’accueil

Jusqu’à présent, notre étude n’a porté que sur des exemples simples gérés par l’automonteur.Toutefois, ces capacités permettent de réaliser des opérations plus complexes : à titred’exemple, il peut monter automatiquement le répertoire d’accueil de tout utilisateur ens’appuyant sur une unique entrée d’une table d’automontage. Supposons l’existence del’entrée suivante dans le fichier auto.master :

À l’aide de cette entrée, toute requête à un sous-répertoire de /home/owl provoque la lecturedu fichier /etc/nfs/home.map pour obtenir le répertoire à monter.

INFO Outre l’utilisation du script autofs pour recharger la configuration de l’automonteur, vouspouvez également exécuter autofs start pour démarrer l’automonteur et autofs stop pourl’arrêter.

clé options système-de-fichiers

doc -ro wren:/usr/local/docman -ro wren:/usr/local/man

/home/owl /etc/nfs/home.map

Serveurs réseau Linux352

Copyright ©

2003 Groupe E

yrolles

Supposons l’entrée suivante dans la table home.map :

Cette entrée permet de monter tous les répertoires d’accueil de home, qui sont exportés par owlsur un point de montage, de nom équivalent, sur l’hôte local. Le caractère * est un caractèrejoker indiquant à l’automonteur de mettre en correspondance tout ce que saisit l’utilisateur. Lecaractère & représente un caractère spécial, remplacé par les informations saisies par l’utilisa-teur. Par exemple, si l’utilisateur tente d’accéder à /home/owl/daniel, l’automonteur monteowl:/home/daniel. Si l’utilisateur saisit /home/owl/kristin, il monte owl:/home/kristin. Lorsde la construction du chemin d’accès au système de fichiers distant, l’automonteur utilise,dans le champ clé, tout ce que l’utilisateur a saisi. Il s’agit d’une fonctionnalité très intéres-sante, notamment lorsque les utilisateurs se connectent sur plusieurs systèmes et ont besoind’accéder à leurs répertoires d’accueil depuis ces systèmes.

Les clients Unix et Linux tirent de réels avantages d’un serveur NFS. Toutefois, la plupart desréseaux sont constitués de clients Microsoft Windows. Ces derniers peuvent exécuter NFS àl’aide d’un logiciel client facultatif. Cependant, Samba, une implémentation des protocolesNetBIOS et SMB (Server Message Block) pour Linux, permet un meilleur partage de fichiersavec les clients Microsoft.

SMB et NetBIOSLes applications Microsoft Windows de partage de fichiers et d’imprimantes reposent surNetBIOS (Network Basic Input Output System). Le BIOS définit l’interface applicativeutilisée pour demander des services d’entrée/sortie DOS. NetBIOS étend ce mécanisme avecdes appels système qui prennent en charge les entrées/sorties au travers d’un réseau. Créée ily a une vingtaine d’années pour le produit PC Network vendu par Sytek, l’API NetBIOS a étéintégrée dans Windows pour Workgroups, LAN Manager, Windows 95/98/ME etWindows NT/2000.

À l’origine, NetBIOS était un protocole monolithique transférant des données entre l’applica-tion et le réseau physique. Celui-ci a évolué en un protocole organisé en couches, qui sontrespectivement l’API NetBIOS, le protocole SMB et le protocole NBF (NetBIOS Frame).

Désormais, NetBIOS s’exécute sur TCP/IP, ce qui permet aux applications NetBIOS des’exécuter sur de grands réseaux, grâce à des messages NetBIOS encapsulés dans des data-grammes TCP/IP. Le protocole réalisant cette opération se nomme NBT (NetBIOS over TCP/IP) et il est défini par les RFC 1001 et 1002.

NBT requiert une méthode de mise en correspondance des noms NetBIOS des ordinateurs,qui sont en réalité les adresses d’un réseau NetBIOS, avec les adresses IP d’un réseau TCP/IP.Vous disposez de trois méthodes :

* owl:/home/&

Partage de fichiersCHAPITRE 9

353

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

• Diffusion (broadcast) IP – Un paquet contenant un nom NetBIOS d’ordinateur estdiffusé. Lorsqu’un hôte trouve son propre nom dans un tel paquet, il renvoie son adresseIP à la source de la diffusion.

• Fichier lmhosts – Ce fichier fait correspondre les noms NetBIOS d’ordinateur avec lesadresses IP.

• Serveur de noms NetBIOS (NBNS – NetBIOS Name Server) – Un serveur de nomsNetBIOS fait correspondre les noms NetBIOS avec les adresse IP pour ses clients. Ledémon nmbd de Samba peut fournir ce service.

Les systèmes d’un réseau NBT sont classés en fonction de la méthode qu’ils utilisent pourrésoudre les noms NetBIOS en adresses IP. Il existe quatre catégories :

• nœud b – Un système qui résout les adresses via la diffusion est un nœud en mode diffu-sion (nœud b). La diffusion n’est effective que sur un réseau physique prenant en chargela diffusion et se limite en général qu’à un seul sous-réseau.

• nœud p – Un système qui interroge directement un serveur de noms NBNS pour résoudreles adresses est un nœud point-à-point (nœud p).

• nœud m – Un système qui utilise d’abord la résolution d’adresses par diffusion, puis sereplie sur un serveur NBNS est un nœud mixte (nœud m). Cette solution élimine totale-ment la dépendance à un serveur NBNS, qui est le point faible du nœud p. Le problème dunœud mixte est qu’il utilise d’abord la solution de diffusion. En pratique, les nœudsmixtes sont rarement employés.

• nœud h – Un système qui essaie d’abord de résoudre l’adresse à l’aide d’un serveurNBNS, qui se replie ensuite sur la diffusion, puis, en cas d’échec des deux solutionsprécédentes, qui consulte un fichier local lmhosts, se nomme nœud hybride (nœud h). Lenœud hybride est la méthode utilisée par la plupart des systèmes.

Service de noms NetBIOSMême si l’installation du logiciel Samba n’a pas encore été traitée, l’heure est venued’aborder la configuration du démon (nmbd) du serveur de noms NetBIOS. Celui-ci est intégrédans la distribution de base du logiciel Samba et permet de transformer votre serveur Linux enserveur NBNS. nmbd peut gérer les requêtes des clients Windows 95/98/ME/NT/2000 ainsique LanManager et peut se comporter comme un serveur WINS.

INFO La mise en œuvre du service de noms NetBIOS de Microsoft se nomme WINS (Windows Inter-net Name Service). Samba est compatible avec WINS et peut se comporter comme un serveurWINS.

Serveurs réseau Linux354

Copyright ©

2003 Groupe E

yrolles

Les options de configuration WINS du démon nmbd sont définies dans le fichier smb.conf, quenous étudierons plus loin. Les options relatives à l’exécution de WINS sont les suivantes :

• wins support – Positionné à yes ou no. Cette option détermine si le démon nmbd secomporte ou non comme un serveur WINS. La valeur par défaut est no. Par conséquent,nmbd fournit par défaut le service d’exploration, sauf le service de serveur WINS.

• dns proxy – Positionné à yes ou no. Cette option indique à nmbd de se servir de DNS s’iln’arrive pas à résoudre les requêtes WINS. Cette option est importante seulement si nmbdse comporte comme un serveur WINS. La valeur par défaut est yes. DNS peut aider à larésolution des noms NetBIOS à condition que les noms NetBIOS et les noms d’hôtesDNS soient identiques.

• wins server – Permet d’indiquer l’adresse IP d’un serveur WINS externe. Cette option serévèle utile lorsque vous n’exécutez pas de serveur WINS sur votre système Linux. Elleindique à Samba l’adresse du serveur WINS externe auquel il doit envoyer les requêtes denoms NetBIOS.

• wins proxy – Positionné à yes ou no. La valeur par défaut est no. Définie à yes, nmbdtransforme les diffusions de requêtes de noms NetBIOS en monodiffusions qu’il adressedirectement au serveur WINS. Si wins support = yes existe, ces requêtes sont directe-ment gérées par nmbd. Si wins server est défini, ces requêtes sont expédiées au serveurexterne. Utilisez l’option wins proxy lorsque les clients ne connaissent pas l’adresse duserveur ou lorsqu’ils ne comprennent pas le protocole WINS.

Fournissez l’adresse du serveur de noms NetBIOS via DHCP. Les options DHCP quidéterminent la configuration NetBIOS d’un client sont disponibles à la section intitulée« Options NetBIOS » au chapitre 8, « Serveurs de configuration des postes de travail ».Afin de définir l’adresse du serveur NBNS, insérez la ligne suivante dans le fichierdhcpd.conf :

En règle générale, le serveur de noms NetBIOS est démarré en même temps que le système àl’aide de la commande suivante :

Lorsqu’il est démarré avec l’option –D, le démon nmbd s’exécute continuellement et écoute lesrequêtes du service de noms NetBIOS sur le port numéro 137. Le serveur répond aux requêtesà l’aide des données d’inscription collectées depuis ses clients et à l’aide des correspondancesnom NetBIOS/adresse qu’il a recueillies auprès des autres serveurs. Si vous ajoutez l’option–H /etc/lmhosts à la ligne de commande, le serveur répond également à l’aide des correspon-

option netbios-name-servers 172.16.5.1 ;

nmbd –D

Partage de fichiersCHAPITRE 9

355

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

dances définies dans le fichier lmhosts (même si vous pouvez nommer ce fichier comme vousle souhaitez, préférez utiliser le nom lmhosts).

Le fichier lmhosts permet de fournir manuellement des correspondances au serveur lorsquecela se révèle nécessaire. La plupart des serveurs WINS n’ont pas besoin de fichier lmhosts,car les serveurs connaissent dynamiquement les correspondances à partir des clients et desautres serveurs. Les noms NetBIOS sont auto-enregistrés. En effet, les clients inscrivent leursnoms NetBIOS auprès du serveur lorsqu’ils démarrent. Les adresses et les noms sont stockésdans la base de données WINS qui se nomme wins.dat. Le fichier lmhosts ne représentequ’une petite partie de la base de données complète.

Fichier lmhosts

Le fichier lmhosts, semblable au fichier hosts, décrit dans le chapitre 4 « Services de nomsLinux », contient des correspondances statiques entre des noms et des adresses. Chaqueentrée commence par une adresse IP suivie d’un nom d’hôte. Toutefois, le nom d’hôte dans cecas de figure est un nom NetBIOS. Le listing 9.8 illustre un exemple de fichier lmhosts.

D’après ce fichier lmhosts, le nom NetBIOS robin correspond à l’adresse IP 172.16.5.2.Notez que ces noms NetBIOS sont identiques aux noms d’hôtes TCP/IP attribués à ces clients.Servez-vous toujours des mêmes noms d’hôtes pour NetBIOS et pour TCP/IP, sans quoi vouslimitez vos possibilités de configuration et créez un risque de confusion.

Bien que le service de noms NetBIOS soit essentiel au réseau NetBIOS, la véritable raisonpour laquelle vous créez un tel réseau est le partage de fichiers et d’autres ressources réseau.Par conséquent, la fin de ce chapitre traite de l’installation et de la configuration d’un serveurSamba.

Installer SambaLes services de Samba sont mis en œuvre par l’intermédiaire de deux démons : le démon smbd(SMB daemon) fournit les services de partage de fichiers et d’imprimantes, tandis que leserveur nmbd (NetBIOS Name Server daemon) fournit le service de noms NetBIOS.

Listing 9.8 – Exemple de fichier lmhosts

$ cat /etc/lmhosts172.16.5.5 crow172.16.5.1 wren172.16.5.2 robin172.16.5.4 hawk

Serveurs réseau Linux356

Copyright ©

2003 Groupe E

yrolles

Vous pouvez télécharger le logiciel Samba à partir d’Internet. Visitez le site www.samba.orgpour sélectionner le site de téléchargement le plus proche et téléchargez le fichier samba-latest.tar. À l’aide des commandes unzip et tar, décompressez le fichier dans un répertoire.Placez-vous dans ce répertoire, exécutez ./configure, puis make et make install. Ces opéra-tions installent la dernière version de Samba dans le répertoire /usr/local/samba. Toutefois,la compilation de votre copie de Samba n’est pas nécessaire sur un système Linux.

Samba est présent dans la majorité des distributions Linux et peut être installé en même tempsque le système. La sélection de Samba lors de l’installation de Red Hat installe le paquetageSamba et le script /etc/rc.d/init.d/smb. Ce script peut être exécuté lors de la phase dedémarrage pour démarrer smbd et nmbd.

Si Samba est absent du système, installez-le maintenant à l’aide de rpm ou de gnorpm. Si vousutilisez gnorpm, le chemin d’accès au paquetage Samba, sur un système Red Hat, est SystemEnvironment/Daemons. La figure 9.2 illustre une requête gnorpm pour le paquetage Samba.

Une fois le logiciel installé, assurez-vous que les bons scripts s’exécutent au démarrage dusystème à l’aide de chkconfig ou de tksysv. Sur notre système Red Hat, le script est smb etnous avons exécuté les commandes chkconfig suivantes pour nous assurer de l’exécution duscript au démarrage du système :

Figure 9.2Paquetage Samba de Red Hat au format RPM.

[root]# chkconfig --list smbsmb 0:off 1:off 2:off 3:off 4:off 5:off 6:off[root]# chkconfig --level 35 smb on[root]# chkconfig --list smbsmb 0:off 1:off 2:off 3:on 4:off 5:on 6:off

Partage de fichiersCHAPITRE 9

357

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

La première commande chkconfig montre que smb n’est pas configuré pour s’exécuter audémarrage du système, bien que le paquetage Samba au format RPM soit installé. Ladeuxième commande chkconfig configure l’exécution de smb pour les niveaux d’exécution 3et 5 (niveaux d’exécution en mode multi-utilisateurs par défaut).

Ensuite, exécutez le script /etc/init.d/smb pour démarrer les démons de la façon suivante :

Les numéros de processus indiquent que les démons smbd et nmbd s’exécutent. Ces systèmessont livrés avec une version préconfigurée de Samba puisque les systèmes Red Hat n’exécu-tent pas les démons si le fichier smb.conf n’existe pas.

Configurer un serveur SambaLe fichier smb.conf permet de configurer le serveur Samba. Consultez le script de démarragede smbd pour localiser le fichier de configuration. Sur un système Red Hat, il s’agit de /etc/samba/smb.conf. Sur un autre système, l’emplacement peut être /etc/smb.conf. La valeur pardéfaut employée sur la plupart des documentations de Samba est /usr/local/samba/lib/smb.conf. Afin de localiser le fichier sur votre système, utilisez la commande find ouconsultez le script de démarrage.

Le fichier smb.conf est divisé en plusieurs sections. Outre la section Global qui définit lesparamètres de configuration du serveur, les noms des sections sont déterminés d’après lesnoms de partage. Un partage est une ressource offerte par le serveur aux clients. Dans lecontexte de ce chapitre, il s’agit d’un système de fichiers offert par le serveur aux clients quiutilisent le partage de fichiers. Toutefois, une imprimante peut également faire l’objet d’unpartage. Le partage d’imprimantes constitue le sujet du chapitre 10, « Servicesd’impression », dans lequel nous traitons des imprimantes Samba.

Le meilleur moyen de comprendre le fichier smb.conf est d’en étudier un exemple. Le contenudu listing 9.9 correspond au fichier smb.conf de Red Hat, à l’exception de quelques commen-taires et d’informations relatives au partage d’imprimantes qui ont été ajoutés.

[root]# service smb startStarting SMB services: [ OK ]Starting NMB services: [ OK ][root]# service smb statussmbd (pid 5341) is running...nmbd (pid 5346) is running...

Serveurs réseau Linux358

Copyright ©

2003 Groupe E

yrolles

Variables de smb.confLa lecture d’un fichier smb.conf peut prêter à confusion si vous ne comprenez pas les variablesde ce fichier. Le tableau 9.3 répertorie donc chaque variable et leur signification.

Listing 9.9 – Extrait du fichier smb.conf de Red Hat

[global] workgroup = MYGROUP server string = Samba Server log file = /var/log/samba/%m.log max log size = 0 security = user encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 dns proxy = no[homes] comment = Home Directories browseable = no writable = yes valid users = %S create mode = 0664 directory mode = 0775

Tableau 9.3 – Variables de smb.conf

Variable Signification

%a Architecture de la machine cliente.

%d Numéro de processus du serveur.

%g GID du nom d’utilisateur attribué au client.

%G GID du nom d’utilisateur demandé par le client.

%h Nom d’hôte DNS du serveur.

%H Répertoire d’accueil de l’utilisateur attribué au client.

%I Adresse IP du client.

%L Nom NetBIOS du serveur.

%m Nom NetBIOS du client.

%M Nom d’hôte DNS du client.

%N Serveur NIS, si NIS est pris en charge.

%p Répertoire d’accueil NIS, si NIS est pris en charge.

Partage de fichiersCHAPITRE 9

359

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

Les variables offrent une certaine souplesse, car elles sont remplacées, dans la configuration,par des valeurs attribuées par le système. Ainsi, une même déclaration de configuration peutêtre interprétée différemment selon les situations. En voici un exemple extrait du listing 9.9 :

La variable %m est remplacée par le nom NetBIOS du client, de sorte qu’un fichier journaldistinct soit créé pour chaque client en fonction de son nom NetBIOS. À titre d’exemple, si lenom NetBIOS du client est crow, le fichier journal est nommé /var/log/samba/crow.log. Demême, si le nom NetBIOS du client est robin, le fichier journal est nommé /var/log/samba/robin.log.

Section Global du fichier smb.confL’exemple du fichier de configuration de notre système Red Hat contient deux sections :Global et Homes. La section Global définit plusieurs paramètres affectant tout le serveur.Outre les paramètres liés au partage d’imprimantes (reportez-vous au chapitre 10), les para-mètres de la section Global du fichier smb.conf sont les suivants :

• workgroup – Définit le groupe de travail auquel appartient le serveur. Un groupe de travailest un regroupement hiérarchique d’hôtes qui organise les ressources réseau de la mêmemanière que les répertoires organisent les fichiers. En effet, la réunion d’ordinateurs engroupes de travail facilite la localisation des systèmes. Les groupes de travail ne sont pasemployés à des fins de sécurité. Les hôtes qui n’appartiennent pas à un groupe de travailpeuvent partager des fichiers avec des systèmes appartenant à un autre groupe de travail.Remplacez le nom MYGROUP de l’exemple par un nom de groupe significatif contenant15 caractères au maximum.

• server string – Définit le commentaire descriptif de ce serveur. La chaîne de caractèress’affiche à l’aide de la commande net view, qui peut être exécutée sur les clients

%P Répertoire racine du service courant.

%R Protocole négocié pendant la connexion.

%S Nom du service courant.

%T Date et heure.

%u Nom d’utilisateur attribué au client.

%U Nom d’utilisateur demandé par le client.

%v Numéro de version de Samba.

log file = /var/log/samba/%m.log

Tableau 9.3 – Variables de smb.conf (suite)

Variable Signification

Serveurs réseau Linux360

Copyright ©

2003 Groupe E

yrolles

Windows. Modifiez la chaîne de caractères de l’exemple par des informations pertinentessur le système.

• log file – Définit l’emplacement du fichier journal. Il est intéressant de noter ici quecette entrée contient une variable smb.conf.

• max log size – Définit, en kilo-octets, la taille maximale d’un fichier journal. 5 000 Koconstitue la taille par défaut, soit environ 5 Mo. Lorsque la taille maximale est atteinte,smbd ferme le journal et le renomme avec une extension .old. Dans la configuration RedHat, ce paramètre est défini avec la valeur 0, ce qui signifie que la taille du fichier journalest illimitée.

• security – Indique le type de sécurité employée. Samba propose quatre types deparamètres :

- share. Demande une sécurité au niveau partage. Il s’agit du niveau de sécurité le plusbas. Une ressource configurée avec une sécurité au niveau partage est partagée avectout le monde. Vous pouvez associer un mot de passe au partage, qui reste le mêmepour tous les utilisateurs ayant accès à ce partage.

- user. Demande une sécurité au niveau utilisateur. Chaque utilisateur doit saisir unnom d’utilisateur et le mot de passe associé. Par défaut, il s’agit du nom d’utilisateuret du mot de passe stockés dans le fichier /etc/passwd que l’utilisateur utilise pour seconnecter au serveur Linux. Nous verrons que les valeurs par défaut des mots de passepeuvent être modifiées.

- server. Définit une sécurité au niveau serveur. Ce niveau est semblable au niveau utili-sateur, à l’exception de l’authentification du nom d’utilisateur et du mot de passe quiest réalisée par un serveur externe. Ce dernier doit être défini par le biais de l’optionpassword server.

- domain. Indique une sécurité au niveau domaine. Dans ce cas, le serveur Linux rejointun domaine Windows NT et utilise le contrôleur du domaine Windows NT pourl’approbation des noms d’utilisateur et des mots de passe. Précisez le PDC (PrimaryDomain Controller) Windows NT à l’aide de l’option password server. Connectez-vous sur le PDC et créez un compte pour le système Linux. Enfin, ajoutez les lignessuivantes dans la section global du système Linux :

• encrypt passwords – Précise si Samba doit ou non, crypter les mots de passe. La valeuryes améliore la compatibilité du serveur avec les clients Windows et empêche les intrusd’intercepter les mots de passe sur le réseau. En effet, les mots de passe cryptés amélio-

domain master = no local master = no preferred master = no ostype = 0

Partage de fichiersCHAPITRE 9

361

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

rent la sécurité et la compatibilité. Si ce paramètre est positionné à no, des mots de passeen clair sont employés, ce qui requiert la modification de la configuration du client.Consultez le tableau « Mots de passe en clair » pour obtenir des informations sur lesmodifications à apporter au Registre, afin que les clients Windows soient compatiblesavec les mots de passe en clair.

• smbpasswd file – Ce paramètre précise l’emplacement du fichier smbpasswd. Si vousutilisez des mots de passe cryptés, le serveur Samba doit gérer deux fichiers de mots depasse : passwd et smbpasswd. Utilisez le script mksmbpasswd.sh pour construire le fichiersmbpasswd initial en fonction du fichier passwd.

• socket options – Définit des paramètres d’optimisation des performances. Notre confi-guration Red Hat définit TCP_NODELAY pour indiquer à Samba d’émettre plusieurs paquetsà chaque transfert (configuration par défaut). Les options SO_RCVBUF et SO_SNDBUF configu-rent les tampons d’émission et de réception à 8 kilo-octets, ce qui améliore légèrement lesperformances. L’optimisation complète de Samba n’entre pas dans le cadre de cetouvrage.

• dns proxy – Indique si nmbd doit ou non transférer les requêtes NBNS non résolues àDNS, comme nous l’avons étudié dans la section précédente. La configuration Red Hatdéfinissant cette valeur à no, les requêtes NBNS non résolues ne sont donc pas envoyéesà DNS.

Mots de passe en clair

Lorsque Samba utilise des mots de passe en clair, aucune synchronisation de base de données de motsde passe n’est requise, car seul le fichier /etc/passwd est employé. Toutefois, les mots de passe en clairne sont pas compatibles avec de nombreuses versions de Windows qui requièrent des mots de passecryptés. Pour obliger ce type de client à utiliser des mots de passe en clair, vous devez modifier le registrede chaque client. Pour Windows 95/98/ME, le paramétrage du Registre est le suivant :

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]"EnablePlainTextPasswords"=dword:00000001

Sur Windows NT, ce paramètre est :

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters]"EnablePlainTextPasswords"=dword:00000001

Sur Windows 2000, ce paramètre est :

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanWorkStation\Parameters]"EnablePlainTextPasswords"=dword:00000001

Les mots de passe cryptés sont davantage sécurisés que les mots de passe en clair. De plus, il est engénéral plus simple de gérer deux bases de données sur un serveur Linux que de modifier le registre dechaque client Windows. C’est pourquoi la majorité des administrateurs préfèrent les mots de passecryptés.

Serveurs réseau Linux362

Copyright ©

2003 Groupe E

yrolles

Outre la modification du nom du groupe de travail, le système Red Hat peut exploiter directe-ment notre exemple de configuration sans modifier un seul des paramètres de la sectionGlobal. Nous allons maintenant nous pencher sur la section Homes, relative au partage defichiers.

Section Homes du fichier smb.confLa section Homes constitue une section de partage spéciale. Elle demande à smbd d’autoriser lesutilisateurs à accéder à leurs répertoires d’accueil via SMB. Contrairement aux sections departage traitées plus loin, cette section n’indique pas de chemin d’accès spécifique au réper-toire partagé. Le démon smbd utilise le répertoire défini dans le fichier /etc/passwd, basé surle nom de l’utilisateur demandant l’accès au partage. Cette section spéciale partage le réper-toire d’accueil localisé sur le serveur afin que l’utilisateur y accède depuis son ordinateur.Voici la section Homes de notre exemple Red Hat :

Les paramètres de configuration définis dans la section Homes sont les suivants :

• comment – Descriptif du partage qui s’affiche dans la fenêtre « Voisinage réseau », à partird’un système Microsoft Windows.

• browsable – Indique si tous les utilisateurs visualisent ou non le contenu de ce partage. Lavaleur no indique que seuls les utilisateurs qui en ont la permission (c’est-à-dire l’utilisa-teur qui a le bon UID) peuvent visualiser ce partage. La valeur yes indique que tous lesutilisateurs, quel que soit leur UID, peuvent visualiser le partage. Ce paramètre necontrôle que l’exploration, l’accès au contenu du partage étant contrôlé par les permis-sions Linux standards.

• writable – Indique s’il est possible ou non d’écrire dans le partage. Le paramètre yesautorise l’écriture dans le partage, tandis que la valeur no définit le partage en lectureseule. Ce paramètre détermine les actions autorisées par Samba. La permission d’écrituredans le répertoire, défini par le partage, reste sous le contrôle des permissions Linux stan-dards.

• valid users – Définit les utilisateurs autorisés à se servir de ce partage. Dans notreexemple Red Hat, nous utilisons le service de noms (%S).

[homes] comment = Home Directories browseable = no writable = yes valid users = %S create mode = 0664 directory mode = 0775

Partage de fichiersCHAPITRE 9

363

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

• create mode – Détermine les permissions appliquées au fichier lors de sa création dans cepartage (reportez-vous à la discussion sur les permissions, plus haut dans ce chapitre).

• directory mode – Définit les permissions du répertoire à appliquer lorsqu’un répertoireest créé dans ce partage.

Les sections Global et Homes, que nous venons d’aborder, sont disponibles dans l’exemple deconfiguration fourni par Red Hat. Vous êtes désormais en mesure de définir vos partages dansle fichier smb.conf.

Partager un répertoire via SambaPour partager un répertoire via Samba, créez une section de partage dans le fichier smb.conf.Cette section décrit le répertoire partagé et les conditions de partage. Afin de partager le réper-toire /home/sales utilisé dans l’exemple NFS et un nouveau répertoire nommé /usr/local/pcdocs, vous devez ajouter les deux sections de partage dans l’exemple du fichier smb.conf,présenté au listing 9.10.

Un nom significatif est attribué à chaque section de partage. Ce nom est affiché sous la formed’un dossier dans le voisinage réseau d’un ordinateur client. Chaque section contient descommandes que nous avons déjà vues ainsi que quelques nouvelles commandes. La premièred’entre elles, path, définit le chemin d’accès au répertoire partagé.

Le partage pcdocs contient également la commande public permettant l’accès au partage àtout utilisateur, même si celui-ci ne possède ni nom, ni mot de passe valide. Ces utilisateurspublics bénéficient d’accès au partage en tant que « Invité ». Sur un système Linux, cela

Listing 9.10 – Partages de fichiers dans Samba

[pcdocs] comment = PC Documentation path = /usr/local/pcdocs browsable = yes writable = no public = yes

[sales] comment = Sales Department Shared Directory path = /home/sales browsable = no writable = yes create mode = 0750 hosts allow = .sales.foobirds.org

Serveurs réseau Linux364

Copyright ©

2003 Groupe E

yrolles

signifie qu’ils sont identifiés en tant qu’utilisateur nobody du groupe nobody et que seules lespermissions « autres utilisateurs » leur sont accordées.

Définir des permissions sur les fichiers et les répertoires

Le partage sales est effectué en lecture/écriture. La commande create mode contrôle lespermissions utilisées lorsqu’un client crée un fichier dans le répertoire /home/sales. Dansl’exemple du listing 9.10, les permissions spécifiées sont la lecture, l’écriture et l’exécutionpour le propriétaire, la lecture et l’exécution pour le groupe et aucune permission pour lemonde (750). La commande directory mode détermine les permissions utilisées lorsqu’unclient crée un répertoire dans le partage. Par exemple :

Ce paramètre définit les permissions de lecture, d’écriture et d’exécution pour le propriétaire,de lecture et d’exécution pour le groupe et de lecture et d’exécution pour les autres utilisateurs(744) lorsqu’un répertoire est créé. Ce paramètre permet l’utilisation de la commande cd et dela commande ls sur les nouveaux répertoires, car un répertoire doit avoir le bit d’exécutionpositionné pour qu’un utilisateur puisse s’y déplacer avec la commande cd.

Limiter l’accès à un partage

La section de partage sales contient également une commande hosts allow indiquant lesclients autorisés à accéder à ce partage. Même si un utilisateur possède un nom et un mot depasse corrects, il ne peut accéder au partage que depuis un hôte spécifié. Par défaut, tous leshôtes sont autorisés et les accès spécifiques sont contrôlés par le nom d’utilisateur et le mot depasse.

Les hôtes identifiés dans la commande hosts allow du listing 9.10 sont identiques à ceuxrépertoriés dans l’exemple NFS. Cela illustre que Samba peut également contrôler les accèsen fonction de domaines.

Vous disposez de plusieurs méthodes permettant de définir des hôtes ou des groupes d’hôtesdans la commande hosts allow. La syntaxe utilisée est identique à celle du fichierhosts.allow (décrit dans le chapitre 12, « Sécurité »). Voici quelques exemples d’utilisation :

• hosts allow = 172.16.5.0/255.255.255.0 – Autorise tout hôte du réseau 172.16.5.0 declasse C à accéder au partage.

• hosts allow = 172.16. EXCEPT 172.16.99.0/255.255.255.0 – Autorise tout hôte duréseau 172.16.0.0 de classe C à accéder au partage, à l’exception des hôtes du sous-réseau 172.16.99.0. Le réseau 172.16 est certainement celui de l’entreprise et le sous-réseau 172.16.99 n’est pas un réseau de confiance, car il est ouvert sur l’extérieur et sesordinateurs sont accessibles par le public.

directory mode = 0744

Partage de fichiersCHAPITRE 9

365

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

Vous disposez également de la commande hosts deny définissant les ordinateurs qui sontexplicitement interdits d’accès et dont la syntaxe est semblable à celle de la commande hostsallow.

La combinaison de ces deux nouvelles sections de partage, au sein de la configuration RedHat, crée un serveur qui réalise tout ce que nous souhaitions : il fournit l’accès aux répertoiresd’accueil des utilisateurs, fournit l’accès à des répertoires publics contenant la documentationen ligne ou d’autres ressources publiquement partagées. Enfin, il fournit des répertoires privésdont l’accès est réservé aux membres d’un groupe particulier. Le résultat obtenu est le mêmequ’avec NFS, à ceci près que les clients Microsoft l’exploitent plus facilement.

Bien entendu, vous n’êtes pas limité au service de clients Windows. En effet, les systèmesLinux peuvent également constituer des clients Samba.

Utiliser un client Samba LinuxNFS constitue la méthode de partage de fichiers la plus fréquemment employée entre dessystèmes Linux. De plus, des fonctionnalités comme autofs et le montage depuis fstab faci-litent l’intégration de NFS dans des clients Linux. Pourtant, tous les serveurs ne sont pas desserveurs Linux. Vous aurez peut être à configurer un système Linux en tant que client d’unserveur Windows NT/2000, voire en tant qu’homologue d’une station de travail Windows. Lesoutils client Samba s’avèrent très utiles dans ce type de situations.

Utiliser smbclientLe programme smbclient permet le transfert de fichiers avec un système proposant un partageSMB. Cela se révèle particulièrement utile avec des systèmes Windows qui ne possèdent pasde serveur FTP. L’outil smbclient se comporte comme un outil FTP pour le partage de fichiersSMB. Cela est illustré au listing 9.11.

Listing 9.11 – Utilisation de smbclient

$ smbclient //robin/temp -W eyrollesadded interface ip=172.16.5.2 bcast=172.16.5.255 nmask=255.255.255.0Password:smb: \> ls al*.jpg alana1.jpg A 6147 Sun Jul 8 11:39:42 2001 alana2.jpg A 8180 Sun Jul 8 11:46:56 2001 alana3.jpg A 23296 Wed Aug 8 09:37:24 2001 alana4.jpg A 42857 Sun Nov 25 16:50:42 2001 alana5.jpg A 22456 Sun Nov 25 16:53:00 2001 alana6.jpg A 55847 Wed Feb 6 16:00:20 2002

Serveurs réseau Linux366

Copyright ©

2003 Groupe E

yrolles

La commande smbclient appelle l’outil smbclient. Le partage auquel vous accédez est décritsur la ligne de commande, à l’aide de la convention de nommage Microsoft UNC (UniformNaming Convention). Le format UNC est //serveur/nom-de-partage, où serveur représentele nom NetBIOS du serveur et nom-de-partage représente le nom du partage.

Si un mot de passe est requis, ce qui peut être le cas si le serveur utilise une sécurité au niveaupartage, il suit le nom UNC de la ligne de commande. Dans l’exemple du listing 9.11, la sécu-rité au niveau partage est utilisée. Cependant, comme le mot de passe n’est pas fourni dans laligne de commande, le serveur le demande à l’utilisateur.

Utilisez l’option –U et fournissez le nom d’utilisateur ainsi que le mot de passe, séparés par uncaractère % si le serveur utilise une sécurité au niveau utilisateur. Si vous devez fournir un nomde groupe de travail, utilisez l’option –W, comme le montre le listing 9.11.

Une fois le nom d’utilisateur et le mot de passe fournis, les transferts de fichiers s’effectuentde la même façon qu’au moyen de la commande FTP. Si vous pouvez utiliser FTP, vouspouvez employer smbclient.

Bien qu’il ne soit pas très élégant, le programme smbclient constitue la base des outils clientde Samba. L’intégration de fichiers d’un serveur SMB dans un système de fichiers Linux estplus judicieuse à l’aide de smbfs.

Utiliser smbmountLe système de fichiers SMB (smbfs) permet de monter des partages SMB et de les utiliser dansle système de fichiers Linux. À cette fin, le noyau doit prendre en charge le système de fichierssmbfs. Le listing 9.12 illustre la vérification de la prise en charge de smbfs par le noyau.

alana7.jpg A 42799 Wed Feb 6 16:10:50 2002

51795 blocks of size 131072. 11861 blocks availablesmb: \> get alana1.jpggetting file alana1.jpg as alana1.jpg (average 158.0 kb/s)smb: \> quit

Listing 9.12 – Test de /proc/filesystems

[root]# modprobe smbfs[root]# cat /proc/filesystemsnodev procnodev sockfs

Listing 9.11 – Utilisation de smbclient (suite)

Partage de fichiersCHAPITRE 9

367

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

Le système de fichiers virtuels /proc permet d’interroger le noyau. Ainsi, le pseudo fichier /proc/filesystems répertorie les systèmes de fichiers présents dans le noyau. Ceux-ci sontprésents, soit parce qu’ils y sont compilés, soit parce qu’ils sont configurés comme desmodules chargeables. Bien entendu, les modules chargeables ne sont pas chargés tant qu’ilsne sont pas utilisés, c’est pourquoi le listing 9.12 commence par une commande modprobeforçant le chargement de smbfs. Si smbfs n’est pas chargé, le noyau doit être reconfiguré de lafaçon décrite au chapitre 13.

Les partages peuvent être montés à l’aide de la commande smbmount et démontés à l’aide de lacommande smbumount. Le listing 9.13 monte les mêmes partages que ceux présentés dansl’exemple smbclient, à l’aide de la commande smbmount.

La commande ls, au début du listing 9.13, indique que le répertoire /home/robin est vide.Nous utilisons ce répertoire comme point de montage (l’emplacement dans le système defichiers Linux où est monté le partage). La commande smbmount contient le nom du partage auformat UNC de Microsoft. Le nom de partage est suivi du nom du point de montage Linux.Le point de montage peut être suivi d’une liste d’options. Dans ce cas, workgroup est la seuleoption requise.

nodev tmpfsnodev shmnodev pipefs ext2 iso9660nodev devpts ext3 vfatnodev autofsnodev smbfs

Listing 9.13 – Exemple de smbmount

[root]# ls /home/robin[root]# smbmount //robin/temp /home/robin workgroup=eyrollesPassword:[root]# ls /home/robin/alana*.jpg/home/robin/alana1.jpg /home/robin/alana4.jpg /home/robin/alana7.jpg/home/robin/alana2.jpg /home/robin/alana5.jpg/home/robin/alana3.jpg /home/robin/alana6.jpg

Listing 9.12 – Test de /proc/filesystems (suite)

Serveurs réseau Linux368

Copyright ©

2003 Groupe E

yrolles

Une fois monté, le partage ressemble à n’importe quel répertoire Linux et la plupart descommandes Linux permettent de manipuler les fichiers du partage (le listing 9.13 contient unecommande ls qui répertorie certains fichiers du répertoire). Bien sûr, tous les éléments ne sontpas identiques sur les systèmes Linux et Windows. Certaines caractéristiques du système defichiers Linux ne sont pas disponibles depuis les serveurs SMB. Par exemple, un systèmeWindows 95/98/ME proposant un partage n’est pas sécurisé au niveau des fichiers et necomprend pas les UID et GID standards de Linux. smbfs tente de simuler au mieux les UID etGID et force les UID et GID utilisées au démarrage de smbmount. Vous pouvez remplacer cesoptions par défaut dans la ligne de commande. À titre d’exemple, les lignes suivantes indi-quent à smbfs de se servir de l’UID 689, attribué à l’utilisateur tyler et du GID 100, attribuéau groupe users :

Pour démonter un partage SMB, exécutez la commande smbumount suivie du nom du point demontage :

Vous pouvez également monter les partages à partir du fichier fstab, à l’aide des arguments–a et –t smbfs de la commande mount. Red Hat utilise cette technique pour monter les partagesSamba dans le script netfs. À cette fin, le partage Samba doit être défini dans le fichier fstab.Ainsi, afin de monter le partage Samba du listing 9.13, insérez l’entrée suivante dans le fichierfstab :

Dans cet exemple, le nom du système de fichiers est le nom au format UNC du partage distantet le type de système de fichiers est smbfs. Lorsque la commande mount est appelée à l’aide de-t smbfs, elle transfère le contrôle au programme /sbin/mount.smbfs. Sur un système RedHat, /sbin/mount.smbfs ne représente qu’un lien symbolique vers smbmount. Les valeurs desquatre premiers champs de l’entrée fstab sont passées à la commande smbmount qui les traite.

En comparaison de smbclient, smbfs facilite l’utilisation des partages SMB à partir d’un clientLinux.

smbmount //crow/user/tyler /home/tyler/crow \ username=tyler password=Wats?Watt? uid=689 gid=100

[root]# smbumount /home/robin

//robin/temp /home/robin smbfs workgroup=eyrolles 0 0

Partage de fichiersCHAPITRE 9

369

Cop

yrig

ht ©

200

3 G

roup

e E

yrol

les

RésuméLe partage de fichier constitue l’application fondamentale des réseaux de secteur. Lesserveurs Linux sont d’excellents serveurs de fichiers, car Linux est rapide, très stable etpropose davantage de services de fichiers que la plupart des systèmes d’exploitation.

Les fichiers sont généralement partagés de trois façons :

• Via une connexion directe. Les utilisateurs souhaitant partager des fichiers peuvent seconnecter sur un serveur Linux, quelles que soient les capacités de leur station de travail.Les fichiers sont partagés avec le système de fichiers Linux.

• Via NFS (Network File System). NFS est le principal protocole de partage de fichiers dessystèmes Unix. Les systèmes Linux proposent une large gamme de logiciels serveurs etde clients NFS.

• Via le protocole SMB (Server Message Block). SMB est un protocole de partage defichiers employé par les systèmes Microsoft Windows. Un système Linux peut secomporter comme un serveur SMB ou comme un client afin de partager des fichiers avecles systèmes Microsoft Windows.

Dans le prochain chapitre, nous allons configurer Linux comme un serveur d’impressions desecteur. Ainsi, nous démontrerons à nouveau la capacité de Linux à intégrer les clients Unixet les clients Windows dans un seul réseau.