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.)
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.
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
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
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