Chapitre 32. Samba

Table des matières

32.1. Configuration du serveur
32.2. Samba en tant que serveur de login
32.3. Configuration du serveur Samba avec YaST
32.4. Configuration des clients
32.5. Optimisation

Résumé

Samba permet d'utiliser un ordinateur Unix comme serveur de fichiers ou d'impression pour ordinateurs DOS, Windows et OS/2. Ce chapitre vous introduit aux principes de la configuration Samba et décrit les modules de YaST avec lesquels vous pouvez configurer Samba dans votre réseau.

Aujourd'hui, Samba est devenu un produit extrêmement complet. De ce fait, nous pourrons donner ici uniquement un premier aperçu de ses fonctionnalités. Cependant, vous trouverez des détails dans la documentation numérique qui l'accompagne. Celle-ci est constituée, pour une part, de pages de manuel — pour vous faire une idée du volume, exécutez la commande apropos samba — et, pour le reste, de documents et d'exemples que vous trouverez, après avoir installé Samba sur votre système, dans le répertoire /usr/share/doc/packages/samba. Vous y trouverez également, dans le sous-répertoire examples l'exemple de configuration commenté smb.conf.SuSE.

Vous disposez du paquetage samba dans sa version 3. Voici quelques-unes des nouveautés notables de ce paquetage :

[Tip]Migration vers Samba3

Si vous souhaitez migrer de Samba 2.x vers Samba 3, vous devez veiller à certaines particularités. Un chapitre complet est consacré à ce sujet dans l'ensemble des HOWTO relatifs à Samba. Une fois le paquetage samba-doc installé, vous trouverez le HOWTO sous /usr/share/doc/packages/samba/Samba-HOWTO-Collection.pdf.

Samba utilise le protocole SMB (Server Message Block) qui est basé sur les services NetBIOS. Suite aux pressions de la société IBM, Microsoft a publié le protocole, ce qui a permis à d'autres éditeurs de logiciels de se connecter également à un domaine Microsoft. Samba fait s'appuyer SMB sur le protocole TCP/IP. En conséquence, le protocole TCP/IP doit être installé sur tous les clients. Nous recommandons d'utiliser exclusivement TCP/IP sur les clients.

NetBIOS est une interface logicielle (API) conçue afin de permettre à différents ordinateurs de communiquer entre eux. C'est dans ce contexte qu'a été conçu un service de nommage (name service) destiné à permettre l'identification mutuelle des machines. En matière de nommage, il n'existe aucune instance centrale qui serait chargée d'attribuer ou de vérifier les droits. Toute machine sur le réseau peut réserver un nombre quelconque de noms, pour autant qu'ils ne soient pas encore attribués. L'interface NetBIOS peut être implémentée sur différentes architectures réseau. Une implémentation relativement proche du matériel réseau porte le nom NetBEUI. NetBEUI est fréquemment désigné sous le nom NetBIOS. Les protocoles réseau implémentés avec NetBIOS sont IPX (NetBIOS via TCP/IP) de Novell et TCP/IP.

Les noms NetBIOS qui sont également attribués dans l'implémentation de NetBIOS sur TCP/IP n'ont rien à voir avec les noms attribués dans le fichier /etc/host ou par DNS. NetBIOS définit un espace de nommage complètement à part. Malgré cela, il est recommandé, afin de simplifier l'administration, d'attribuer au moins aux serveurs des noms NetBIOS correspondant à leurs noms d'hôtes DNS. C'est réglé ainsi par défaut dans les serveurs Samba.

Tous les systèmes d'exploitation majeurs tels que Mac OS X, Windows et OS/2 prennent en charge le protocole SMB. Le protocole TCP/IP doit être installé à cet effet. S'agissant des différents UNIX, Samba offre également un client. Linux comporte en outre un module noyau offrant un système de fichiers SMB, permettant d'intégrer des ressources SMB au niveau du système Linux.

Les serveurs SMB offrent aux clients de l'espace disque se présentant sous la forme de « partages » (shares). Un partage correspond à un répertoire et à tous ses sous-répertoires sur le serveur. Il est exporté sous son propre nom et des clients peuvent y accéder sous ce même nom. Le nom du partage peut être choisi librement—il ne doit pas être identique à celui du répertoire exporté. De la même manière, une imprimante exportée se voit attribuer un nom qui sera utilisé par les clients pour y accéder.

32.1. Configuration du serveur

Dans le cas où vous souhaitez utiliser Samba en tant que serveur, installez le paquetage samba. Démarrez les services requis pour Samba à l'aide de la commande rcnmb start & & rcsmb start et arrêtez-les à l'aide de la commande rcsmb stop & & rcnmb stop.

Le fichier de configuration central de Samba est /etc/samba/smb.conf. Ce fichier comporte deux parties logiques distinctes. La section [global] comporte la définition des paramètres globaux. La seconde section, intitulée [share], comporte la définition des différents partages de fichiers et d'imprimantes. Ce mode d'organisation permet de définir les détails des partages soit de manière différenciée, soit avec une portée globale dans la section [global]. Le fichier de configuration gagne ainsi en lisibilité.

32.1.1. Section global

Les directives suivantes de la section [global] doivent être adaptées en fonction de la configuration de votre réseau afin de permettre à d'autres systèmes d'accéder à votre serveur Samba dans un réseau Windows au moyen de SMB.

workgroup = TUX-NET

Le serveur Samba est rattaché à un groupe de travail à l'aide de cette ligne. Remplacez TUX-NET par votre groupe de travail ou configurez vos clients avec la valeur choisie ici. Votre serveur Samba est visible dans cette configuration avec son nom DNS dans le groupe de travail choisi, pour autant que le nom choisi n'ait pas encore été attribué. Dans le cas où le nom DNS a déjà été attribué, le nom de serveur peut être défini à l'aide de netbios name = MONNOM. Pour obtenir plus de précisions sur ce paramètre, exécutez la commande man smb.conf.

os level = 2

Ce paramètre définit si votre serveur Samba doit essayer de faire office de LMB (Local Master Browser) pour son groupe de travail. Il est recommandé d'utiliser une valeur volontairement faible afin d'éviter qu'un réseau Windows ne soit perturbé par un serveur Samba mal configuré. Pour plus de précisions sur cette question importante, reportez-vous aux fichiers BROWSING.txt et BROWSING-Config.txt dans le sous-répertoire textdocs de la documentation du paquetage.

En l'absence de serveur SMB préexistant (par exemple Windows NT ou 2000 Server), lorsque c'est le serveur Samba qui doit conserver une liste de tous les systèmes disponibles dans le réseau local, augmentez la valeur os level (par exemple à 65). Votre serveur Samba sera alors choisi comme LMB pour votre réseau local.

Dans le cas où cette valeur est modifiée, vous devez être particulièrement prudent en raison des risques de dysfonctionnement auquel vous exposez un réseau Windows existant. Testez les modifications dans un premier temps dans un réseau isolé ou pendant une période non critique.

Prise en charge wins et serveur wins

Si vous avez l'intention d'intégrer le serveur Samba au sein d'un réseau Windows existant comportant déjà un serveur WINS, vous devez utiliser l'option wins server en y déclarant l'adresse IP de votre serveur WINS.

Si vos systèmes Windows sont utilisés dans des sous-réseaux séparés mais doivent se voir les uns les autres, vous avez besoin d'un serveur WINS. Pour que votre serveur Samba fasse office de serveur WINS, il convient de déclarer wins support = Yes. Assurez-vous absolument que vous n'avez utilisé cette directive que pour un seul serveur Samba du réseau. Les options wins server et wins support ne doivent jamais être activées ensemble dans votre fichier smb.conf.

32.1.2. Partages

Dans les exemples qui suivent, le lecteur de CD-ROM d'une part, ainsi que les répertoires personnels des utilisateurs (homes) des clients SMB d'autre part, sont partagés.

[cdrom]

Pour éviter qu'un CD-ROM ne soit partagé par inadvertance, toutes les lignes requises de ce partage sont désactivées à l'aide de mises en commentaires (des points-virgules, en l'occurrence). Dans le cas où vous voulez partager le lecteur de CD-ROM avec Samba, il vous suffit de supprimer les points-virgules dans la première colonne.

Exemple 32.1. Partage de CD-ROM

;[cdrom]
;      comment = CD-ROM Linux
;       path = /media/cdrom
;       locking = No
       
[cdrom] et comment

La ligne [cdrom] est le nom du partage visible par tous les clients SMB. La directive comment permet d'offrir aux clients une description du partage.

path = /media/cdrom

L'option path permet d'exporter le répertoire /media/cdrom.

Ce type de partage est uniquement disponible pour les utilisateurs présents sur le système, en raison de paramètres par défaut volontairement restrictifs. Dans le cas où tout le monde doit pouvoir accéder au partage, il convient d'ajouter la ligne guest ok = Yes. Compte tenu de la possibilité offerte à tous les utilisateurs de lire les données, la plus grande prudence est de mise avec cette directive, qui devrait être réservée uniquement à quelques partages choisis. La section [global] impose d'être particulièrement prudent.

[homes]

Le partage [home] est particulièrement important. Dans le cas où l'utilisateur possède un compte valide et son propre répertoire personnel sur le serveur de fichiers Linux, son client peut se connecter sur ce compte en fournissant un identifiant utilisateur et un mot de passe valides.

Exemple 32.2. Partage « homes »

[homes]
        comment = Home Directories
        valid users = %S
        browseable = No
        read only = No
        create mask = 0640
        directory mask = 0750
       
[homes]

En l'absence de partage explicite avec le nom de partage de l'utilisateur qui souhaite se connecter, un partage dynamique est créé, en raison du partage [homes]. Le nom du partage est le même que celui de l'utilisateur.

valid users = %S

Après établissement de la connexion, le %S est remplacé par le nom de partage réel. Comme celui-ci est toujours identique au nom d'utilisateur dans le cas du partage [homes], les utilisateurs autorisés sont uniquement le propriétaire du répertoire de l'utilisateur. Cette possibilité vise à n'autoriser l'accès qu'au propriétaire.

browseable = No

Ce paramètre masque le partage dans l'environnement réseau.

read only = No

Dans sa configuration par défaut, Samba interdit l'accès en écriture aux partages exportés avec le paramètre read only = Yes. Ainsi, si vous voulez partager un répertoire en écriture, vous devez choisir la valeur read only = No. Ce paramétrage est équivalent à writeable = Yes.

create mask = 0640

Les systèmes qui ne sont pas basés sur Windows NT ne connaissent pas le système des privilèges d'accès Unix. De ce fait, il n'est pas possible, en créant des fichiers, de définir les privilèges d'accès à appliquer. Le paramètre create mask définit les privilèges d'accès à associer aux fichiers à créer. Cette fonctionnalité n'est disponible que pour les partages auxquels on accède en écriture. Ici, cela signifie concrètement que le propriétaire dispose des droits en lecture et écriture et que les membres du groupe primaire disposent des droits en lecture. À noter que valid users = %S interdit l'accès en lecture même lorsque le groupe dispose des droits en écriture. Ainsi, pour accorder l'accès en lecture/écriture au groupe, la ligne valid users = %S doit être désactivée.

32.1.3. Niveaux de sécurité

Le protocole SMB, issu du monde DOS/Windows, se préoccupe directement des problèmes de sécurité. Tout accès à un partage peut être protégé par mot de passe. SMB autorise trois modes de contrôle d'autorisations :

Sécurité au niveau du partage (security = share) :

Dans la sécurité au niveau du partage, un mot de passe est attribué à un partage. Tous ceux qui connaissent ce mot de passe ont accès au partage.

Sécurité au niveau de l'utilisateur (security = user) :

Cette variante introduit le concept de l'utilisateur dans SMB. Chaque utilisateur doit se connecter sur le serveur à l'aide d'un mot de passe. Après la phase d'authentification, le serveur peut ensuite offrir l'accès aux différents partages exportés en fonction du nom d'utilisateur indiqué.

Sécurité au niveau du serveur (security = server) :

Vis-à-vis des clients, Samba affirme travailler en mode sécurité au niveau de l'utilisateur. Il transmet cependant toutes les demandes de mot de passe à un autre serveur en mode sécurité au niveau de l'utilisateur qui assure l'authentification. Cette configuration prévoit un paramètre supplémentaire (password server =).

La distinction entre sécurité au niveau du partage, de l'utilisateur et du serveur s'applique au serveur dans son ensemble. Il n'est pas possible d'exporter certains partages d'un serveur configuré pour utiliser la sécurité au niveau du partage et d'autres en utilisant la sécurité au niveau de l'utilisateur. Vous pouvez toutefois exploiter sur un système un serveur Samba différent pour chaque adresse IP configurée.

Pour plus de précisions sur ce sujet, veuillez consulter l'ensemble des HOWTO relatifs à Samba. Si votre système comporte plusieurs serveurs, les paramètres interfaces et bind interfaces only vous concernent.

[Tip]Astuce

Le programme swat peut être utilisé pour les tâches simples d'administration du serveur Samba. Celui-ci comporte une interface web simple permettant de configurer aisément le serveur Samba. Appelez dans un navigateur Web l'adresse http://localhost:901 et connectez-vous en tant qu'utilisateur root. Veuillez noter que swat doit également être activé dans les fichiers /etc/xinetd.d/samba et /etc/services. Vous devez pour cela remplacer dans /etc/xinetd.d/samba la ligne disable par disable = no. Pour plus d'informations relatives à swat, reportez-vous à la page de man de swat.


SUSE LINUX Guide de l'administrateur 9.2