Connecter des postes de travail Linux à des serveurs Windows 2000 et NT

Ce qu'il faut savoir
Accès aux données
Fichier de configuration Smb.conf
Utile et en vrac

L'ajout de Linux dans un réseau basé sur Windows 2000 ou Windows NT peut s'avérer une bonne idée. Avec Linux, les entreprises disposent d'une solution bon marché pour mettre en œuvre des services Internet de base (notamment des serveurs DNS, des serveurs de messagerie Internet ou des serveurs Web) sur des systèmes à faible coût.

Outre l'intérêt économique lié à sa gratuité, Linux offre des périodes de disponibilité et une fiabilité toutes deux excellentes, bien que ceci se paye par une complexité d'administration accrue. Pour une information complète sur les différences entre l'administration de Windows NT et de Linux, reportez-vous aux articles " NT versus Linux : les trois avantages de Linux " et " Linux : les mauvaises nouvelles " de nos deux derniers numéros.
Mais le fait d'ajouter un nouvel OS dans un réseau existant peut créer de nouveaux problèmes et des migraines pour résoudre les questions d'interopérabilité. Par exemple, on peut s'interroger sur les points suivants :
· Peut-on faire tourner des applications Win32 sur un système sous Linux ?
· Comment synchroniser les utilisateurs de Windows 2000 et NT avec ceux de Linux ?
· Comment transférer des données entre les serveurs Windows 2000 ou Windows NT et les postes de travail sous Linux ?
Dans cet article, nous allons détailler un outil qui répond à la troisième de ces questions. (Au cas où vous chercheriez les réponses aux autres questions, la première est oui : WINES, un utilitaire gratuit livré avec la plupart des versions de Linux qui permet de faire tourner les programmes Windows sous Linux. Pour la deuxième question, j'ai entendu dire qu'il existait des utilitaires de conversion d'annuaires entre NT et Linux, mais je n'en sais pas beaucoup plus.)

Ce qu'il faut savoir

Pour qu'un système sous Linux puisse accéder aux partages de fichiers Microsoft, vous devez savoir trois choses. Vous devez d'abord savoir utiliser les commandes d'invite de commande smbmount et smbumount. Ensuite, vous devez savoir comment créer un nouveau répertoire sur le disque dur de votre système Linux. Enfin, vous vous rendrez la vie beaucoup plus facile si vous savez également comment créer et utiliser le fichier de configuration smb.conf.
Smbmount, qui est essentiellement la version Linux de la commande Net Use de Windows 2000 et Windows NT, connecte le système sous Linux à un serveur de fichier Microsoft. Smbumount interrompt la connexion à un serveur de fichier Microsoft. Smbmount et smbumount sont des programmes initialement créés (on ne sait pas par qui, la documentation ne l'indiquant pas) pour permettre de connecter des systèmes Linux à des serveurs basés sur SMB. (Server Message Block est un format de messages utilisé par les serveurs de fichiers sous Windows 2000, Windows NT, Windows 9.x, NT LAN Manager et Windows for Workgroups.) Depuis leur création, ces commandes ont été intégrées dans un package plus vaste baptisé Samba, dont la principale mission est de permettre à un système sous Linux de se prétendre serveur SMB - Linux dans des habits NT en quelque sorte.
Dans cet article, je pars du principe que le lecteur est novice vis-à-vis de Linux - d'ailleurs, c'est mon cas. Je vais donc vous donner des instructions de base pour vous repérer dans un serveur Linux. Je fais donc par avance mes excuses aux utilisateurs de Linux ayant de l'expérience et que certaines informations de base pourraient ennuyer.

Les Linuxiens veulent aussi apporter un look and feel commun aux données, qu'elles se trouvent sur un disque dur local ou bien sur une machine du réseau

Smbmount nécessite un point de montage, un répertoire local sur lequel smbmount peut mapper le partage du réseau Windows 2000 ou NT afin que Linux puisse se référer au partage. Net Use, la commande d'invite de commande permettant de se connecter à un partage Windows 2000 ou NT, mappe un partage réseau (par exemple \\serveur1\\partage1) à une lettre d'unité (par exemple P). L'avantage de nommer un partage réseau avec une lettre d'unité, c'est d'unifier l'aspect des données vues depuis les systèmes Windows 2000, NT ou 9.x. Toutes les données, même les partages réseau, ressemblent aux répertoires locaux de votre disque dur.
Les Linuxiens veulent aussi apporter un look and feel commun aux données, qu'elles se trouvent sur un disque dur local ou bien sur une machine quelque part dans le réseau. Mais, parce que Linux n'utilise pas les lettres d'unités, l'OS a besoin d'autres méthodes pour faire intégrer les partages réseaux dans le paradigme du disque local. C'est à cela que servent les points de montage. D'abord, on crée un nouveau répertoire (dans lequel rien n'est stocké) sur le disque dur du système Linux. Ensuite, on dit à Smbmount de " coller " (monter) le partage réseau sur ce répertoire. A partir de ce moment là, pour accéder aux fichiers du partage, vous pouvez lancer des commandes pour accéder à ce répertoire.
Pour créer un répertoire due un système Linux, on utilise la commande mkdir. J'ai créé un répertoire sur mon système avec la commande mkdir/partagent1.

Accès aux données

Dès lors que l'on dispose d'un point de montage, on peut utiliser la commande smbmount pour se connecter à un partage Windows 2000 ou NT. Supposons que l'on veuille accéder à un partage nommé data sur un serveur NT nommé \\charlie. Bien évidemment, on a besoin d'un profil utilisateur et du mot de passe associé pour pouvoir accéder aux données. Imaginons que le profil de l'utilisateur soit mark et le mot de passe requin. Il faut également connaître l'adresse IP du serveur. Nous dirons que cette adresse est 200.200.100.10. On peut alors mapper \\charlie\data au répertoire /monpartagent avec la commande :

smbmount //charlie/data //monpartagent -U mark -I 200.200.100.10

(Lorsque l'on saisit la commande sous Linux, il faut la saisir toute entière sur une seule ligne. Notez aussi que l'on utilise des slashes (/), et non les backslashes (\) habituels lorsque l'on tape des noms UNC (Universal Naming Convention). Linux utilise également le slash pour séparer les composantes de l'adresse d'un fichier.
Une fois la commande saisie et validée, le système affiche quelques lignes de messages et demande le mot de passe. Il suffit de saisir le mot de passe et d'appuyer sur Entrée et le tour est joué. A partir de ce moment, on utilise le répertoire /monpartagent pour accéder aux fichiers sur le serveur. Par exemple, pour copier le fichier abc.txt du partage du serveur NT vers le répertoire /trucslocaux du système sous Linux, on tape :

cp / monpartagent/abc.txt /trucslocaux

Cette syntaxe devrait vous paraître familière - cp est la commande Copy de Linux.
La commande smbmount comporte de nombreuses options, mais en général, elle ressemble à la commande suivante :

smbmount -U -I

Dans cette commande, UNC représente le nom UNC du partage auquel vous voulez vous connecter, point de montage est le répertoire auquel vous voulez attacher le partage, et utilisateur est le profil du compte NT. Les options sont sensibles à la casse : il faut utiliser des majuscules pour U et I, et taper les commandes et paramètres en minuscules.
L'option -I est importante car smbmount ne semble pas savoir comment découvrir le serveur NT en utilisant un brodcast de nom NETBIOS. Comme nous le verrons plus tard, smbmount peut utiliser un serveur WINS pour chercher l'adresse d'un serveur, mais si vous n'avez pas dit à smbmount d'utiliser WINS et que vous ne spécifiez pas d'adresse IP, non seulement smbmount va planter, mais il ne vous laissera pas utiliser le point de montage tant que vous n'aurez pas réinitialisé le serveur Linux.

Pour indiquer à smbmount le serveur WINS, il faut créer un fichier ASCII baptisé smb.conf

Fichier de configuration Smb.conf

Pour indiquer à smbmount le serveur WINS, il faut créer un fichier ASCII baptisé smb.conf. Linux stocke généralement ce fichier dans le répertoire /etc/. Certaines implémentations de Linux modifient l'emplacement de ce stockage. Par exemple, j'ai vérifié tout ce que contient cet article sur des systèmes sous Red Hat Linux 6.1, Slackware Linux 7.0 de Linux Mafia, OpenLinux 2.3 de Caldera System et Corel LINUX. Pour une raison inconnue, une cinquième version de distribution, SuSE Linux 6.3, n'a pas ou activer la carte Ethernet. Je n'ai donc pas pu tester cette version. Red Hat Linux et Slackware ont installé smb.conf dans /etc/, OpenLinux dans /etc/samba.d/ et Corel LINUX le met dans /ets/samba. Red Hat Linux et Corel LINUX installent un fichier smb.conf de base lorsque l'on charge la version de distribution sur le système ; ce n'est pas le cas de Slackware et 'OpenLinux qui installent à la place unfichier nommé smb.conf.sample que l'on modifie et renomme en smb.conf.
Le fichier smb.conf n'a besoin de comporter que deux lignes :

[global]
wins server =

Du fait que smbmount lit smb.conf chaque fois que l'on invoque la commande, il n'est pasnécessaire de redémarrer les services ou de redémarrer l'ordinateur. Si l'adresse IP du serveur WINS local de \\charlie est 200.200.100.50, on peut mettre les lignes suivantes dans le fichier smb.conf du PC sous Linux, probablement dans /etc/ :

[global]
wins server = 200.200.100.50

Ensuite, pour se connecter, on tape la commande suivante :

smbmount //charlie/data /monpatagent -U mark%requin

Si l'on n'est pas à l'aise avec vi, l'éditeur de texte de Linux, pour créer smb.conf, on peut le faire avec l'un des éditeurs graphiques livrés avec Linux ou bien utiliser une des variantes d'un vieux truc DIS. D'abord, tapez :

cp /dev/tty /etc/smb.conf

et appuyez sur Entrée. Cette commande indique à Linux de copier les données que vous saisissez au clavier dans un fichier nommé /etc/smb.conf. Une foiswue cette commande est passée, tout ce que vous taperez sera enregistré dans /etc/smb.conf ; Linux n'essaye pas d'interpréter ce que vous tapez. Pour dire à Linux que vous avez terminé appuyez sur Ctrl + D. Même si l'on peut éditer une erreur dans une des lignes lorsque l'on utilise ce truc, il constitue une technique douteuse mais efficace pour créer un nouveau fichier.
Pour voir le fichier créé, tapez :

cat /etc/smb.conf

(La commande cat est le pendant sous Linux de la commande Type.) Il n'est pas nécessaire de créer smb.conf si l'on utilise Corel LINUX. Si le système Corel obtient l'information IP d'un serveur DHCP, Corel LINUX met automatiquement l'adresse du serveur WINS dans smb.conf.
Lorsque l'on en a terminé avec le partage, pour se déconnecter, on utilise la commande smbumount en précisant le partage. Dans notre exemple, on utiliserait la commande avec la syntaxe suivante :

smbumount /monpartageNT

Les versions de distribution de Linux sont si souvent mises à jour, que d'ici que cet article paraisse, les versions testées auront sûrement toutes changées

Utile et en vrac

Voici quelques petites remarques qui vous paraîtront j'espère utiles. Tout d'abord, comme nous avons pu le voir dans le cadre de cette série d'articles sur Linux, il existe des différences entre les versions de distributions de Linux. Les commandes smbmount de Red Hat Linux et Corel LINUX sont les plus faciles à installer, suivies de près par l'OpenLinux de Caldera. En revanche, je n'ai pas pu faire fonctionner la commande smbmount de Slackware, même après avoir reformaté le disque dur et réinstallé l'OS et toutes ses fonctions. Les fournisseurs de versions de distribution de Linux mettent si souvent leurs produits à jour, que d'ici que cet article paraisse, les versions que j'ai testées auront sûrement toutes changées et Slackware ou SeSU Linux seront peut-être les stars du moment.
A signaler également que smbmount semble incapable de prendre en charge la déconnexion logicielle qui se produit généralement sous Windows NT au bout de 15 minutes d'inactivité : si vous vous éloignez d'un système sous Linux connecté à un serveur NT pendant trop longtemps, vous pourriez bien avoir un message d'interruption de la communication et ne plus pouvoir démonter le partage. On peut donc souhaiter démonter les connexions qui seront inactives.
Les commandes smbmount et smbumount comporte bien d'autres options comme c'est souvent le cas des commandes Linux et UNIX). Pour voir les options, respectivement de smbmount et smbumount, allez à une invite de commandes Linux et tapez :

man smbmount

ou bien

man smbumount

Retour