Par JC Pollman jpollman@bigfoot.com
Vous changez régulièrement de machine et de système d'exploitation, mais vous avez toujours besoin d'accéder à votre répertoire personnel. Cet article vous montrera comment y arriver, tant sous Linux que sous Microsoft Windows.
Cet article présente des informations que nous avons réunies à force de lire des livres, les HOWTO, les pages de manuel, les forums usenet, et de passer des heures à martyriser nos claviers. Il ne se veut pas une référence exhaustive sur la question, mais il est plutôt destiné aux utilisateurs novices qui cherchent à acquérir un peu plus d'expérience. Les exemples proviennent en droite ligne de nos propres réseaux, donc nous savons qu'ils fonctionnent.
Pour partager votre répertoire personnel, il faut déjà en avoir un. Assurez-vous donc que vous avez un compte sur votre serveur. Vous devez aussi avoir installé samba et les logiciels serveur et client nfs.
Nous avons tellement vu la question "comment partager un disque Linux avec Windows" dans les forums usenet que cette question ne devrait plus avoir à être posée. Il n'empêche qu'elle l'est encore. Pourpartager ses disques, Windows n'utilise pas tcp/ip mais le protocole smb. Donc pour partager une ressource Linux, vous devez utiliser le protocole smb sous Linux. Samba est le logiciel adapté. Linux, au contraire, utilise tcp/ip et nfs pour partager ses ressources. Ces protocoles sont totalement différents, mais peuvent être utilisés en même temps pour partager les mêmes ressources. Il y a de gros problèmes de verrouillage des fichiers si les deux protocoles sont utilisés en même temps pour accéder à la même ressource, mais ça ne devrait pas être gênant pour une utilisation domestique. La sécurité est également problématique, et nous vous recommandons de protéger votre "serveur de /home" au moyen d'un garde-barrière (NdT: firewall) et des tcp wrappers.
Samba est un ensemble de programmes qui vous permettent de vous faire suivre d'une machine à l'autre par votre répertoire personnel quand vous utilisez le système d'exploitation de Microsoft. Naturellement, samba ne tourne que sur le serveur Linux. Vous n'aurez aucun mal à vous procurer samba : il fait probablement partie de votre distribution. Assurez-vous simplement que vous avez au moins la version 2.05, ou vous aurez toutes sortes de problèmes. Si vous voulez récupérer le code source et le compiler vous-même, allez sur le site de samba.
Une fois samba installé, il vous reste trois étapes avant de pouvoir partager des ressources : éditer le fichier de configuration de samba, mettre en place les mots de passe et configurer Windows pour se connecter à un domaine NT.
Samba lit sa onfiguration dans le fichier smb.conf. Il peut se trouver en /etc/smb.conf ou /usr/local/samba/lib/smb.conf. Il peut faire pas mal de choses, mais nous nous concentrerons sur le partage de votre répertoire personnel depuis votre serveur. Le fichier smb.conf se compose de plusieurs sections, dont les titres sont entre crochets [ ]. La première section à éditer est la section [global], dont voici les principaux paramètres :
[global]
workgroup = KULAI
encrypt passwords = Yes
smb passwd file = /etc/smbpasswd
password level = 8
username level = 8
socket options = TCP_NODELAY
domain logons = Yes
domain master = yes
os level = 65
preferred master = Yes
wins proxy = no
wins support = yes
hosts allow = 192.168.124. 127.
logon script = logon.bat
Quelques explications :
Le nom du domaine de vos machines windows.
Nécessaire si vous utilisez Windows 98. Leur utilisation est décrite ci-dessous.
Emplacement des mots de passe cryptés.
Le niveau 8 signifie que la casse n'est pas prise en compte dans les noms d'utilisateurs et les mots de passe.
Cette valeur accélère les connexions sur le réseau
C'est le plus important. Voir ci-dessous.
Pour l'utilisation domestique, il n'y a qu'un serveur maître.
Plus c'est haut, mieux c'est. La valeur 65 convient.
Nécessaire pour partager des répertoires.
Nous ne relayons rien.
Nécessaire pour partager des répertoires.
Nom du fichier éxécuté par les machines windows lors de la connexion. Pas indispensable, mais ça peut être agréable. Notez qu'il s'agit d'un fichier au format DOS, et pas Unix. Les retours chariots sont obligatoires.
Le rôle de cette section [global] : samba va devenir un serveur de domaine maître, ce qui signifie que votre serveur samba va remplir la fonction de gestionnaire de sessions et stocker les fichiers et les paramètres personnels des utilisateurs. Les utilisateurs de windows vont maintenant se connecter à votre domaine samba, et plus simplement à leur machine. Le répertoire c:\windows\profiles\utilisateur sera copié sur le serveur samba lors de la déconnexion de l'utilisateur, et du serveur sur la machine windows lors de la connexion. Et ça fonctionne quel que soit la machine utilisée, ce qui signifie que vos fichiers dans Mes Documents, votre menu démarrer et vos favoris vous suivront quelle que soit la machine que vous utilisez. Par exemple, le contenu de /home/jpollman/profile sur le serveur Linux est :
Application Data/ Favorites/ NetHood/ Start Menu/
Cookies/ History/ Temporary Internet Files/
Desktop/ My Documents/ Recent/ USER.DAT
Une autre caractéristique intéressante est que vous pouvez accéder à ces mêmes fichiers depuis Linux, vu qu'ils se trouvent dans votre répertoire personnel. Les autres sections du fixhier smb.conf qui réclament notre attention :
[homes]
comment = Home Directories
read only = No
browseable = No
L'option browseable=no signifie que seul le répertoire personnel de l'utilisateur apparaîtra dans le voisinage réseau.
[netlogon]
comment = Network Logon Service
path = /usr/local/samba/netlogon
public = no
writeable = no
browseable = no
Le paramètre path donne l'emplacement du fichier logon.bat mantionné dans la section [global]
[Profiles]
path = /home/%U/profile
guest ok = Yes
browseable = No
Ici, le paramètre path sert à donner à chaque utilisateur l'accès à ses propres données. %U désigne l'utilisateur.
Après avoir sauvegardé votre smb.conf, vous pouvez le vérifier à l'aide du programme testparm, pour vous assurer qu'il ne contient pas d'erreurs grossières. Si c'est bien le cas, vous pouvez lancer samba :
smbd -D [Entrée]
nmbd -D [Entrée]
Samba comporte de nombreux autres programmes et peut faire beaucoup d'autres choses -- lisez le manuel et les pages web. Ici, nous voulons simplement faire fonctionner le domaine, pour que votre répertoire personnel vous suive sur n'importe quelle machine.
Malheureusement, Samba n'utilise pas les mots de passe Unix. Vous allez donc devoir créer un fichier smbpasswd. Depuis Windows 98, Microsoft utilise des mots de passe cryptés. C'est une bonne chose, mais cela requiert un peu plus de travail pour configurer Samba. Vous pourriez modifier la base de registres de Windows pour le forcer à utiliser des mots de passe en clair, mais puisque Samba sait gérer les mots de passe cryptés, pourquoi ne pas le laisser faire ? Samba est fourni avec un programme permettant de convertir les mots de passe Unix des utilisateurs, mais nous trouvons qu'il donne les droits sur les volumes SMB à beaucoup d'utilisateurs qui ne devraient pas les avoir. Il est assez facile de créer un fichier smbpasswd à la main pour une utilisation personnelle, et c'est ce que nous recommandons. Remarque : pour qu'un utilisateur puisse partager son répertoire personnel, il doit avoir un compte sur le serveur Linux (utiliser adduser). Pour créer un fichier smbpasswd pour un utilisateur de Windows, disons pour l'utilisateur bmote :
smbpasswd -a bmote [Entrée]
Répondez aux questions, puis
smbpasswd -e bmote [Entrée]
pour activer l'utilisateur. Répetez ces étapes pour chaque utilisateur. Redémarrez smbd et nmbd, et vous aurez terminé la configuration du côté Linux.
Le partage de votre répertoire personnel sous Linux est une grosse amélioration de votre réseau, dans la mesure où tous vos fichiers de configuration -- comme vos signets de Netscape, tout votre courrier électronique (en supposant que vous utilisez le même logiciel pour le lire sur toutes les machines), et vos modifications personnelles de votre gestionnaire de fenêtres vous suivront d'une machine à l'autre. Linux, et Unix en général, utilisent pour cela un programme appelé NFS (network file system -- système de fichiers en réseau). NFS possède un certain nombre de trous de sécurité, et il est donc fortement recommandé de le mettre en place derrière un garde-barrière bien configuré. Quand vous aurez fini cet article, vous devriez lire attentivement le NFS-HOWTO.
Un des moyens utilisés par NFS pour savoir qui peut accéder à quoi est l'UID --- l'identifiant utilisateur. Votre UID est le troisième champ de votre entrée dans le fichier passwd. La mienne ressemble à ça :
jpollman:IxmI/XXxxrg/Y:501:100:JC Pollman:/home/jpollman:/bin/bash
Mon UID est 501. L'UID d'un utilisateur doit être le même sur toutes les machines qui utilisent NFS. Vous pouvez ou bien lui attribuer le même UID dans les fichiers passwd de toutes les machines, ou bien utiliser NIS -- ce qui dépasse le cadre de cet article. Si vous changez l'UID d'un utilisateur, vous allez devoir utiliser chown pour lui rendre ses fichiers. C'est assez pénible, mais vous n'avez à le faire qu'une seule fois.
Vous devez faire tourner un certain nombre de programmes, et votre noyau doit être compilé avec certaines options. Voyons ça une chose à la fois.
Le noyau doit être compilé ave l'option NFS. C'est le cas par défaut sur la plupart des distributions. Si vous devez compiler votre propre noyau, sélectionnez les options suivantes dans la rubrique Network File Systems :
NFS filesystem support
NFS server support
mais pas
Root filesystem on NFS
puis compilez et installez votre noyau comme d'habitude.
Le programme portmap doit être installé et lancé. Il est généralement installé par défaut. Vérifiez qu'il tourne bien en tapant :
ps ax|grep port [Entrée]
Après l'avoir lancé, vous pouvez vérifier on bon fonctionnement en tapant :
rpcinfo -p [Entrée]
Le programme portmap utilise les fichier /etc/hosts.allow et /etc/hosts.deny, donc si rpcinfo -p échoue alors que le portmapper est lancé, vérifiez le contenu de ces fichiers.
Vous devez aussi avoir installé les programmes nfsd et mountd sur le serveur. Le paquetage contenant ces programmes s'appelle knfsd pour les noyaux 2.2, et nfs-server2.2 puor les noyaux plus anciens.
Le fichier /etc/exports détermine quels répertoires peuvent être montés par les autres machines. Il s'agit simplement d'un fichier texte où chaque ligne indique ce qui peut être monté par qui et avec quelles permissions. Le mien ressemble à ça :
/home *.kulai.org(rw)
Le premier champ de la ligne est le répertoire, ce qui dans notre cas autorise le montage de tous les répertoires personnels. Le second champ indique quelles machines peuvent monter ces répertoires, dans notre cas toutes les machines du réseau kulai.org. Le troisième champ -- entre parenthèses -- indique les permissions. Pour plus d'informations sur ce fixhier, faites man 5 exports. Après avoir modifié le fichier exports, vous devez relancer nfsd te mountd pour qu'ils le relisent.
Après avoir modifé et relancé tout ce qui devait l'être, faites
rpcinfo -p [Entrée]
Vous devriez obtenir quelque chose comme ça (il peut y en avoir plus si vous avez d'autres services en fonctionnement, et les ports de mountd peuv être différents) :
program no_version protocole no_port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 745 mountd
100005 1 tcp 747 mountd
100003 2 udp 2049 nfs
100003 2 tcp 2049 nfs
Vous devez installer les programmes clients NFS : mount et portmap, en plus d'un noyau supportant NFS. La plupart des distributions sont fournies configurées de façon adéquate. Une fois cela fait, et si votre serveur NFS s'appelle master.kulai.org, tapez ceci en tant que root sur le poste client :
mount -t nfs master.kulai.org:/home /mnt [Entrée]
Si out se passe bien, vous devirez revenir à l'invite de la ligne de commande. Placez-vous alors dans /mnt et faites un ls pour vérifier que tout est correct. Si, au lieu de monter le système de fichiers, mount revoie une erreur comme "mount: master.kulai.org:/home failed, reason given by server: Permission denied", alors votre fichier exports est mal configuré, ou vous avez oublié de relancer nfsd et mountd après l'avoir modifié. Si l'erreur est "mount clntudp_create: RPC: Program not registered", alors nfsd ou mountd ne tourne pas sur le serveur, ou bien vuos avez le problème décrit plus haut avec les fichiers hosts.allow et hosts.deny.
Pour démonter le système de fichiers, tapez
umount /mnt [Entrée]
Pour automatiser tout ça, ajoutez cette ligne au fichier /etc/fstab du client, en remplaçant master.kulai.org par le nom de votre serveur :
master.kulai.org:/home /home nfs rw 0 0
Une remarque intéressante : quand vous montez /home par NFS depuis une autre machine, le répertoire /home de votre disque dur "disparait" : il est encore là, mais vous ne pouvez plus y accéder tant que votre répertoire NFS est monté.
Maintenant que tout cela fonctionne, je vous suggère de redémarrer le serveur et le client. Beaucoup de gourous de Linux vont courir chercher leur fusil en lisant ceci, mais il y a une raison. Vous venez de faire un certain nombre de changements dans votre configuration. En redémarrant maintenant, vous pouvez vérifier que tout fonctionne parfaitement, et dans le cas contraire, vous vous souvenez encore de ce que vous avez fait. Autrement, dans deux mois, quand vous subirez une coupure de courant et que vous aurez toutes les peines du monde à remettre votre réseau d'aplomb, vous ne serez pas sûr à 100% que NFS fonctionne, et vous allez vous mettre à jouer avec sans vous souvenir de tous les détails.
Les éditions O'Reilly on mis en ligne leur livre Using Samba. Il s'agit d'un excellent document que vous devriez explorer en détail. Il est très bien écrit et à jour.
Voici quelques exemples d'utilisation de Samba.
Vous pouvez configurer un certain nombre de paramètres dans le fichier logon.bat. Rappelz-vous qu'il s'agit d'un fichier DOS ! Le mien ressemble à ceci :
net time \\master /set /yes
net use H: /home
net use N: \\master\Netscape /yes
La première ligne synchronise l'horloge de votre machine sur celle du serveur Samba. Pour que cela fonctionne, vous devez aussi ajouter cette ligne à la section [global] de votre smb.conf :
time server = yes
La deuxième ligne du fichier logon.bat fait apparaître votre répertoire personnel sur le serveur Linux comme lecteur H sous Windows. Cela se fait en plus de la synchronisation automatique du répertoire Profile. Là encore, il faut ajouter une ligne à la section [global] de smb.conf :
logon home = \\master\%U
où master est le nom du serveur Samba.
La dernière ligne de mon logon.bat monte automatiquement mon profil Netscape sur le lecteur N. Lors de la création d'un profil Netscape sous Windows -- au moyen du gestionnaire de profils de Netscape -- vous pouvez indiquer l'emplacement de vos fichiers utilisateur. En utilisant un lecteur partagé par votre serveur Linux, votre profil Netscape peut vous suivre d'une machine à l'autre si vous utilisez Windows. Vous devrez ajouter une section au fichier smb.conf pour que ça fonctionne. Voilà ce que j'ai dans le mien :
[Netscape]
comment = Netscape Profiles
path = /backup/netscape
read only = no
Si vous voulez vraiment bien faire les choses, créez un lien du fichier bookmarks.html dans votre répertoire personnel sous Linux vers le répertoire partagé par Samba. Dans mon cas, cela ressemble à ça -- en une seule ligne :
ln -s /home/jpollman/.netscape/bookmarks.html /backup/netscape/jpollman/bookmark.htm
Maintenant, que j'utilise Netscape sous Linux ou sous Windows, j'utilise les mêmes signets.
Quelques remarques sur les lettres des lecteurs -- avant que vous ne soyez trop perdu. Nous utilisons U: pour "utilisateur", mais H: est aussi assez commun et signifie généralement "home". Utilisez quelque chose de facile à retenir pour les autres volumes partagés : F: pour "famille", N: pour "Netscape", E: ou T: pour "équipe" (NdT: team), P: pour "public", etc. Cela vous facilite les choses quand vous devez l'expliquer aux utilisateurs, et cela leur facilite les choses quand ils doivent le retenir. Ces conventions sont communes dans les environnements Novell.
Remarque : évitez Z: si des machines sous Windows 9x doivent se connecter à votre serveur. Z: est assigné par défaut à NETLOGIIN, et lui assigner quelque chose dans logon.bat va provoquer l'apparition d'une boîte de dialogue --- Répondre "oui" pour réassigner la ressource à Z échouera de toute façon. Windows NT n'a pas cette limitation.
Vous pouvez aussi assigner les ports LPT dans logon.bat :
net use LPT2: \\master\{nom de l'imprimante}
Commencez toujours à LPT2: pour le cas où la machine Windows aurait une imprimante locale ou un autre périphérique branché sur LPT1:. Nous avons partagé jusqu'à 9 imprimantes avec nos PC en réseau. Cela permet d'ajouter l'imprimante comme si elle était physiquement raccordée à la machine. C'est utile si l'imprimante n'est pas supportée par Linux (Lexmark 3200) et vous contrôlerez toutes ses options depuis chaque station -- chaque utilisateur peut utiliser sa propre configuration par défaut !
Si le fichier logon.bat ne fonctionne pas et si sa sortie défile trop rapidement pour que vous puissiez voir ce qui se passe, rajoutez une ligne comportant simplement
pause
Cela arrêtera son éxécution tant que vous n'appuyez pas sur entrée.
NFS : Deux problèmes avec NFS semblent ressurgir sans arrêt dans les news. Premièrement, le serveur NFS de Linux s'idetifie comme version 3, alors qu'il ne supporte que la version 2 de NFS. Si vous utilisez Solaris, vous devrez utiliser l'option vers=2 pour que le mount de Solaris fonctionne. Deuxièmement, si vous utilisez NIS, NIS lui-même ne monte aucun système de fichiers. Pour le faire fonctionner comme vous pensez qu'il devrait le faire, vous devez faire collaborer NIS, NFS et autofs : NIS se charge de l'authentification et indique le répertoire personnel de l'utilisateur, autofs voit une tentative d'accès à /home/utilisateur et utilise NFS pour monter ce répertoire.
Copyright 1999, JC Pollman. Paru dans le numéro 50 de la Linux Gazette de février 2000.
Traduction française d'Arnaud Gomes-do-Vale.