Page suivante Page précédente Table des matières
5. Introduction à Samba
Par John Blair
Cet article est paru en premier dans le numéro de juillet 1998 de Linux Journal
5.1 Introduction
Le but principal des réseaux est de permettre aux ordinateurs d'échanger facilement des informations. Partager des informations avec d'autres postes Linux, ou tout hôte UNIX, est facile -- des outils tels que FTP et NFS sont facilement disponibles et sont fréquemment mis en oeuvre "clés en main". Malheureusement, même le plus fanatique adepte de Linux doit admettre que le système d'exploitation que la plupart des ordinateurs du monde utilisent est un des plusieurs types de Windows. À moins que vous n'utilisiez votre poste Linux dans un environnement particulièrement isolé, vous aurez à peu près certainement besoin d'échanger des informations avec des machines sous Windows. En supposant que vous n'envisagez pas de déplacer tous vos fichiers avec des disquettes, l'outil qu'il vous faut, c'est Samba.
Samba est une suite de programmes qui donnent à votre poste Linux la faculté de parler SMB (Server Message Block). SMB est le protocole utilisé pour implémenter le partage de fichiers et d'imprimantes entre des ordinateurs sous OS/2, Windows NT, Windows 95 et Windows for Workgroups. Ce protocole est analogue à une combinaison de NFS (Network File System), lpd (le serveur d'imprimante standard UNIX)et un réseau à authentification distribuée tel que NIS ou Kerberos. Si vous êtes familier avec Netatalk, Samba fait pour Windows ce que Netatalk fait pour le Macintosh. Quand il utilise les programmes serveurs Samba, un poste Linux apparaît dans le "voisinage réseau" comme s'il était simplement une autre machine Windows. Les utilisateurs de machines Windows peuvent "se loguer" à votre serveur Linux et, selon les droits qui leur sont alloués, copier des fichiers vers et depuis des parties du système de fichiers UNIX, soumettre des tâches d'impression et même vous envoyer des messages WinPopup. Si vous utilisez votre poste Linux dans un environnement consistant presque complètement en machines Windows NT et Windows 95, Samba est un outil inestimable.
Figure 1. Le voisinage réseau, montrant le serveur Samba.
Samba sait aussi faire des choses qui nécessitent normalement que le serveur Windows NT agisse en serveur WINS et gère des "logons réseau" de machines Windows 95. UN module PAM dérivé du code Samba permet d'authentifier des logins UNIX en utilisant un serveur Windows NT. Un projet Samba en cours cherche à disséquer le protocole propriétaire de contrôle de domaine de Windows NT et à le ré-implémenter en tant que composant de Samba. Ce code, bien qu'encore très expérimental, peut déjà gérer avec succès une demande de logon d'un ordinateur Windows NT Workstation. Avant peu il agira en tant que Primary Domain Controller (PDC) à part entière, en stockant les informations des comptes utilisateurs et en établissant des relations de confiance avec d'autres domaines NT. Le mieux, c'est que Samba est librement disponible sous couvert de la licence publique GNU, exactement comme Linux. Dans beaucoup d'environnements, le serveur Windows NT est nécessaire seulement pour procurer un service de fichiers, des spoules d'imprimante et le contrôle d'accès à une collection de machines Windows 95. La combinaison de Linux et Samba fournit une alternative puissante et bon marché à la solution Microsoft typique.
5.2 Réseau Windows
Comprendre comment Samba travaille est plus facile quand on sait comment fonctionne le réseau Windows. Les clients Windows utilisent les ressources de fichiers et d'imprimantes sur un serveur en transmettant des "Server Message Blocks" par une session NetBIOS. NetBIOS a été à l'origine développé par IBM pour définir une interface réseau pour des logiciels tournant sous MS-DOS ou PC-DOS. Il définit un ensemble de services réseau et l'interface logicielle pour accéder à ces services, mais ne spécifie pas le protocole effectivement utilisé pour transporter les bits sur le réseau.
Trois sortes principales de NetBIOS ont émergé depuis qu'il a été développé à l'origine, chacune différant par le protocole de transport utilisé. L'implémentation originale était nommée NetBEUI (NetBIOS Extended User Interface), ce qui est un protocole de transport léger destiné à des réseaux à un seul segment. NetBIOS sur IPX, le protocole utilisé par Novell, est aussi populaire. Samba utilise NetBIOS sur TCP/IP, qui a de nombreux avantages.
TCP/IP est déjà implémenté sur chaque système d'exploitation notable, si bien qu'il a été relativement facile de porter Samba vers pratiquement chaque variété d'UNIX, ainsi qu'OS/2, VMS, AmigaOS, Rhapsody d'Apple (qui est en réalité NextSTEP) et (étonnamment) sur des systèmes d'exploitation de gros ordinateurs tels que CMS. Samba est aussi utilisé dans des systèmes encapsulés, tels que des serveurs d'impression dédiés et des l'application InterJet Internet de Whistle. L'usage de TCP/IP signifie aussi que Samba s'ajuste parfaitement à de grands réseaux TCP/IP, tels que l'internet. Reconnaissant ces avantages, Microsoft a renommé la combinaison de SMB et de NetBIOS sur TCP/IP "Common Internet Filesystem" (CIFS). Microsoft travaille en ce moment à faire accepter CIFS comme un standard Internet pour le transfert de fichiers.
Figure 2 - Vue du réseau SMB comparé au modèle de référence de réseau OSI.
5.3 Les composants de Samba
Un serveur Samba est constitué en fait de deux programmes serveurs : smbd et nmbd. smbd est le noyau de Samba. Il lance les sessions, authentifie les clients et procure l'accès au système de fichiers et aux imprimantes. nmbd implémente le "fureteur réseau". Son rôle est d'annoncer les services que le serveur Samba peut offrir. nmbd fait que le serveur Samba apparaisse dans le "voisinage réseau" des machines Windows NT et Windows 95 et permet aux utilisateurs de consulter la liste des ressources accessibles. On pourrait faire tourner le serveur Samba sans nmbd, mais les utilisateurs auraient à retenir le nom NetBIOS du serveur et ses ressources qu'ils souhaiteraient utiliser.nmbd implémente le protocole de fureteur réseau Microsoft, ce qui signifie qu'il participe aux élections de fureteurs (appelées quelquefois "guerres de fureteurs"), et peut se comporter comme maître ou comme fureteur de fond. nmbd peut aussi fonctionner comme serveur WINS (Windows Internet Name Service), ce qui est nécessaire si votre réseau comporte plus d'un sous-réseau TCP/IP.
Samba inclut aussi une collection d'autre outils. smbclient est un client SMB avec une interface utilisateur basée sur un shell, similaire à FTP, qui autorise à copier des fichiers de et vers d'autres serveurs SMB, aussi bien qu'à accéder à des ressources d'imprimantes SMB, et à envoyer des messages WinPopup. Pour les utilisateurs de Linux, il y a aussi un système de fichiers SMB qui autorise à attacher un répertoire exporté d'une machine Windows sur le système de fichiers Linux. smbtar est un shell script qui utilise smbclient pour stocker un fichier Windows distant vers, ou restaurer un fichier Windows depuis un fichier tar standard UNIX.
La commande testparm, qui filtre et décrit le contenu de votre fichier smb.conf, est particulièrement utile parce qu'elle permet facilement de détecter des erreurs de configuration. D'autres commandes sont utilisées pour administrer le fichier des mots de passe encryptés de Samba, configurer des polices de caractères alternatives pour un usage international et diagnostiquer des problèmes.
5.4 La configuration de Samba.
Comme d'habitude, la meilleure façon d'expliquer ce qu'un programme peut faire est de montrer quelques exemples. Pour deux raisons, ces exemples supposent que vous ayez déjà installé Samba. D'abord, expliquer comment compiler et installer Samba serait assez de matière pour un article à part. Deuxièmement, comme Samba est disponible sous forme de paquetages Red Hat et Debian peu après l'annonce de chaque version stable, l'installation sous Linux est une partie de plaisir. Ensuite, la plupart des des installations de "base" des distributions populaires installent déjà automatiquement Samba.
Avant Samba version 1.9.18 il fallait compiler Samba soi-même si on voulait utiliser l'authentification avec des mots de passe cryptés. C'était vrai parce que Samba utilisait une librairie DES pour implémenter le cryptage, ce qui en faisait techniquement une chose classifiée comme des armes par le gouvernement U.S. Les versions binaires de Samba avec des mots de passe cryptés ne pouvaient pas être exportés légalement depuis les États-Unis, ce qui menait les sites miroir à éviter de distribuer des copies précompilées de Samba avec le cryptage activé. Depuis la version 1.9.18, Samba utilise un algorithme DES modifié qui n'est pas sujet aux restrictions à l'export. Maintenant la seule raison qu'on aurait de compiler soi-même Samba est de vouloir tester les dernières versions alpha ou de vouloir compiler Samba avec des fonctionnalités non standard.
Comme SMB est un grand et complexe protocole, configurer Samba peut être assommant. Plus de 170 options de configuration différentes peuvent apparaître dans le fichier smb.conf, le fichier de configuration de Samba. Malgré ça, pas de panique. Comme dans presque tous les cas avec UNIX, il est très facile de monter une configuration simple et de la lancer. On peut alors peaufiner cette configuration avec le temps quand on apprend la fonction de chaque paramètre. Enfin, la dernière version de Samba, quand cet article a été écrit en janvier dernier [1998 NdT], était la version 1.9.18p1. Il est possible que le comportement de ces options ait changé quand il sera publié. Comme d'habitude, la documentation incluse avec la distribution Samba (surtout le fichier README) est la source définitive d'information.
Le fichier smb.conf sont placés par les distributions Red Hat et Debian dans le répertoire /etc. Si vous avez compilé Samba vous-même et n'avez modifié aucun des chemins d'installation, il est probablement situé dans /usr/local/samba/lib/smb.conf. Tous les programmes dans la suite Samba lisent ce fichier particulier, qui est structuré comme un fichier .INI Windows, pour l'information de configuration. Chaque section dans le fichier commence par un nom entouré de crochets et soit le nom d'un service soit le nom d'une section spéciale :
[global]
,[homes]
or[printers]
.Chaque paramètre de configuration est soit un paramètre global, ce qui signifie qu'il contrôle quelque chose qui affecte le serveur tout entier, soit le paramètre d'un service, ce qui signifie qu'il contrôle quelque chose de spécifique à chaque service. La section
[global]
est utiliser pour fixer toutes les options de configuration globales, ainsi que les réglages des services par défaut. La section[homes]
est une section de service spécial dynamiquement adaptée au répertoire personnel de chaque utilisateur. La section[printers]
est un un moyen facile de partager chaque imprimante définie dans le fichierprintcap
du système.
5.5 Une configuration simple
Le fichier smb.conf suivant décrit une configuration Samba simple et utile qui rend chaque répertoire personnel d'utilisateur disponible par le réseau.
Les réglages dans la section
[global] netbios name = FRODO workgroup = UAB-TUCC server string = John Blair's Linux Box security = user printing = lprng [homes] comment = Home Directory browseable = no read only = no
[global]
fixent le nom de l'hôte, le groupe de travail de l'hôte et la chaîne qui apparaît près de l'hôte dans la liste pour les choix. Le paramètre de sécurité dit à Samba d'utiliser la sécurité au "niveau utilisateur". SMB possède deux modes de sécurité : le partage, qui associe des mots de passe avec des ressources spécifiques, et utilisateur, qui assigne des droits d'accès à des utilisateurs spécifiques. Il n'y a pas assez de place ici pour décrire les subtilités des deux modes, mais dans pratiquement tous les cas de figure vous voudrez utiliser la sécurité au niveau utilisateur.La commande d'impression décrit le type de système d'impression local, qui dit à Samba exactement comment soumettre des tâches d'impression, afficher la queue d'impression, tuer des tâches d'impression et d'autres opérations. Si votre système d'impression est dans une catégorie que Samba ne sait pas utiliser, vous pouvez préciser les commandes à invoquer pour chaque opération d'impression.
Comme aucun mode de cryptage n'est précisé, Samba utilisera par défaut l'authentification par mots de passe en texte pur pour vérifier chaque connexion en utilisant les utilitaires de mots de passe UNIX standards. Rappelez-vous, si votre distribution Linux utilise PAM, la configuration PAM doit être modifiée pour autoriser Samba à authentifier à l'aide de la base de données de mots de passe. Le paquetage Red Hat gère ça automatiquement. Évidemment, dans beaucoup de situations, c'est fou d'utiliser l'authentification en texte pur. Configurer Samba pour supporter des mots de passe cryptés est hors du champ de cet article, mais n'est pas difficile. Voyez le fichier ENCRYPTION.txt dans le répertoire /docs de la distribution Samba pour plus de détails.
Les réglages dans la section
[homes]
contrôlent le comportement de partage du répertoire personnel de chaque utilisateur. Le paramètrecomment
définit la chaîne qui apparaît près de la ressource dans la liste pour les choix. Le paramètrebrowseable
contrôle si un service apparaît ou non dans la liste des choix. Ce qui n'est pas très intuitif dans la section[homes]
est que déclarerbrowseable = no
signifie cependant que le répertoire personnel d'un utilisateur apparaîtra comme un répertoire dont le nom est affecté au nom de l'utilisateur authentifié. Par exemple, avecbrowseable = no
, quand je choisis ce serveur Samba, je verrai un répertoire partagé appeléjdblair
. Sibrowseable = yes
, il apparaîtra à la fois un répertoire appeléhomes
et un répertoire appeléjdblair
dans la liste de choix. Le réglageread only = no
signifie que les utilisateurs devraient être capables d'écrire dans leurs répertoires personnels s'ils sont convenablement authentifiés. Ils ne pourraient cependant pas écrire dans leur répertoire personnel si les droits d'accès UNIX sur leur répertoire personnel les en empêchaient. Le réglageread only = yes
signifierait que l'utilisateur ne pourrait pas écrire dans son répertoire personnel indépendamment des permissions effectives d'UNIX.La section de configuration suivante garantirait l'accès à toute imprimante apparaissant dans le fichier printcap pour tout utilisateur qui peut se loguer au serveur Samba. Notez que le
guest ok = yes
ne garantit normalement pas l'accès à tout utilisateur quand le serveur utilise la sécurité au niveau utilisateur. Chaque service d'impression doit définirprintable = yes
.
Ce dernier entrefilet de configuration ajoute un répertoire de service partagé qui permet l'accès en lecture seule au répertoire de ftp anonyme. Il vous faudra mettre en place le pilote d'impression sur la machine cliente. Vous pouvez utiliser les commandes printer name et printer driver pour automatiser le processus de mise en place des clients d'impression sur les clients Windows 95 et Windows NT.
[printers] browseable = no guest ok = yes printable = yes
[public] comment = Public FTP Directory path = /home/ftp/pub browseable = yes read only = yes guest ok = yes
Figure 3 - Apparence de la configuration Samba dans Windows Explorer.
Attention, cette description n'explique pas certains points subtils, comme la différence entre les niveaux de sécurité utilisateur et ressource et les autres points concernant l'authentification. Elle effleure à peine la surface de ce que peut faire Samba. D'un autre côté, c'est un bon exemple de la facilité avec laquelle on peut créer un fichier smb.conf simple mais efficace.
5.6 Conclusions
Samba est l'outil de choix pour combler le fossé entre les systèmes UNIX et Windows. Cet article a discuté de l'usage de Samba sous Linux en particulier, mais il est aussi un très bon moyen pour fournir un accès à des systèmes UNIX plus traditionnels tels que des serveurs Sun et RS/6000. De plus, Samba donne un exemple des meilleurs côtés du logiciel libre, surtout quand on le compare aux offres commerciales. Samba est puissant, bien supporté et en amélioration constante et active par l'Équipe Samba.
5.7 Ressources
La page web de Samba, à http://samba.anu.edu.au/samba/, est la source officielle pour les nouveautés et les informations au sujet de Samba. La documentation distribuée avec Samba est relativement peu organisée, mais couvre chaque aspect de la configuration du serveur. Si vous avez des questions au sujet de Samba, consultez d'abord la FAQ, puis essayez la Samba Mailing List. L'emplacement des deux peut être trouvé sur la page web de Samba.
Le livre Samba: Integrating UNIX and Windows, de John Blair, publié par SSC, couvre tous les aspects de l'installation, de la configuration et de la maintenance d'un serveur Samba.
_______________________________________________________________________________
Copyright © 1999, John Blair
Publié dans le numéro 36 de la Linux Gazette, janvier 1999.
Adaptation française : Georges Khaznadar.
Page suivante Page précédente Table des matières