Académique Documents
Professionnel Documents
Culture Documents
08 Samba PDF
08 Samba PDF
Stéphane Gill
Stephane.Gill@CollegeAhuntsic.qc.ca
Introduction 2
SMB/CIFS sous Linux 2
Protocole SMB/CIFS 3
Installation de Samba 5
Installation du client 5
Installation du serveur 5
Activation de SWAT 5
Démarrage de Samba 6
Références 19
Introduction
La palette des systèmes d’exploitation de Microsoft est très largement répandue en tant que
plates-formes de poste de travail. Néanmoins, le système d’exploitation Unix (Linux) est très
apprécié, en particulier dans le domaine des serveurs, pour la gestion de serveurs de bases de
données, de serveurs de fichiers et de serveurs de communication. Il est nécessaire de mettre en
place des produits complémentaires pour transformer le PC en client NFS, pour avoir accéder à
un ordinateur Unix à partir d’un PC fonctionnant sous un système d’exploitation Microsoft.
Cependant, dans le cas d’un système d’exploitation aussi souple que Unix, il ne devrait pas être
très difficile de mettre en place le protocole de communication que Microsoft utilise sur ces
produits pour partager des ressources et permettre les accès. Quelques constructeurs ont
commencé il y a déjà quelques années à diffuser des produits permettant de répondre de
manière plus ou moins heureuse à ce souci. Voici quelque exemples :
• SCO VisionFS
• Digital Pathworks
Outre ces produits commerciaux, le produit Samba, disponible librement sous forme de code
source, s’est révélé extrêmement stable, et représente ainsi une alternative particulièrement
intéressante. Il a été développé par un australien portant le nom de Andrew Tridgell. Sa
maintenance est réalisée sur Internet par la Samba Team.
Le nom Samba trouve son origine dans une variation du nom du protocole SMB (Server Message
Block) utilisé pour la communication entre les produit Microsoft.
Entre-temps, Samba est utilisé par les départements informatiques de certaines très grandes
entreprises. Vous trouverez les informations concernant Samba sur le page d’accueil de ce
produit : http://www.samba.org
Protocole SMB/CIFS
NetBIOS est un protocole de niveau session utilisé très largement dans les réseaux de systèmes
Windows. Il est transporté dans un protocole de transport, typiquement NetBT (NetBIOS sur
TCP/IP) ou NetBEUI. Jusqu'à Windows 2000, NetBIOS sur TCP/IP était le protocole typiquement
utilisé pour le transport du protocole CIFS [1] (également connu sous le nom de SMB, Server
Message Block).
Sachant que le protocole CIFS (Common Internet File System) est le protocole sur lequel repose
les fonctionnalités de partage de ressources en environnement Windows (partage de fichiers et
d'imprimantes), ainsi que les fonctionnalités d'administration à distance, il apparait évident que
NetBIOS sur TCP/IP est un protocole omniprésent, du moins jusqu'à Windows 2000.
A partir de Windows 2000, le protocole CIFS peut être transporté directement dans TCP/IP, via le
port 445, en supprimant la couche NetBIOS.
• 137/UDP pour le résolution de noms NetBIOS (en diffusion ou via un serveur WINS)
SMB
NetBios
TCP/UDP
IP
Ethernet
Ces 3 ports se retrouvent dans les sorties de la commande netstat vues précédemment, puisque
NetBIOS sur TCP/IP est activé par défaut, aussi bien sur Windows 2000 que sur Windows XP.
Au niveau système [2], le protocole CIFS est mis en oeuvre avec une partie cliente et une partie
serveur, fonctionnant chacun sous la forme d'un service :
Les commandes net config workstation et net config server permettent d'afficher
les transports que ces services peuvent utiliser :
Workstation active on
NetbiosSmb (000000000000)
NetBT_Tcpip_{AB128BC0-4EA0-40B1-801A-D324891BD60F}
(525405FDC5F9)
• NetbiosSmb désigne le transport de CIFS dans TCP directement (port TCP 445, sans
couche NetBIOS) [3].
• NetBT_Tcpip_... désigne le transport de CIFS dans NetBIOS sur TCP/IP, sur l'un des
adaptateurs réseau.
CIFS est un protocole relativement complexe, ayant connu de nombreuses évolutions qui ont
abouti à plusieurs versions du protocole, appelées dialectes. La complexité du protocole, la
faiblesse des protocoles d'authentification utilisés ainsi que des erreurs d'implémentations ont été
la cause d'un certain nombre de vulnérabilités dans les systèmes Windows [4].
Installation de Samba
Avant d'installer Samba, il faut bien évidemment récupérer les fichiers RPM ou bien les sources,
et ajouter les protocoles TCP/IP et NetBIOS sur les machines clientes afin de leur permettre
d'accéder aux services de Samba.
Installation du client
Installation du serveur
Activation de SWAT
SWAT est un outil de configuration du fichier /etc/smb.conf qui utilise un navigateur Web comme
interface. SWAT regroupe l'ensemble de la documentation sur Samba, smbd, nmbd et tous les
services associés à ces applications, mais permet également d'ajouter des fichiers ou
imprimantes partagés, de lancer les démons smbd et nmbd, de vérifier les connexions aux
ressources partagées, et de gérer les mots de passe.
Avant d’activer SWAT, il faut éditer le fichier /etc/xinetd.d/swat et de mettre: disable=no. Pour
accéder à Swat, lancez un navigateur et entrez l'url suivante : http://localhost:901/
Démarrage de Samba
Après installation, le serveur de Samba devrait normalement être apte à démarrer (sans aucun
partage de fichiers ou d'imprimante) en lançant la commande suivante:
/etc/rc.d/init.d/smb start
La commande suivante permet de contrôler que les deux démons sont correctement lancés
/etc/rc.d/init.d/smb status
smbd (pid 1054) is running...
nmbd (pid 1056) is running...
/etc/rc.d/init.d/smb restart
1. Depuis Poste de Travail, cliquez sur le dossier, le disque dur ou le lecteur de CD-ROM
que vous voulez partager.
3. Cliquez sur Partager ce dossier, puis cliquez sur le bouton Autorisations. Par défaut, tout
le monde peut accéder à votre dossier partagé. Vous pouvez restreindre les droits de
Tout le monde en cochant ou décochant les autorisations.
4. Si vous voulez ajouter un utilisateur en particulier, cliquez sur le bouton Ajouter, puis
définissez cet utilisateur.
1. Double-cliquez sur l’icône Favoris réseau, Tout le réseau, contenu entier, Réseau
Microsoft Windows, puis double-cliquez sur l’icône de l’ordinateur où se trouve le dossier
partagé.
3. Si vous désirez assigner une lettre logique au dossier partagé, suivez ces instructions.
4. Double-cliquez sur l’icône Favoris réseau, Tout le réseau, contenu entier, Réseau
Microsoft Windows, puis double-cliquez sur l’icône de l’ordinateur où se trouve le dossier
partagé.
5. Cliquez sur le dossier désiré, sélectionnez le menu Fichier, puis sélectionnez Connecter
un lecteur réseau…
Note: Si un mot de passe est nécessaire, Windows vous le demandera, et vous devez saisir le
mot de passe pour ce dossier partagé.
smbclient
Un client SMB pour un hôte Unix est inclus dans la distribution de Samba. Il fournit une interface
semblable au ftp, en ligne de commande. Vous pouvez utiliser cette utilitaire pour transférer des
fichiers entre un « serveur » Windows et un client Linux.
/usr/sbin/smbclient -L hôte
où « hôte » est le nom NetBIOS de la machine dont vous voulez voir les partages. Vous
obtiendrez une liste des « services » en partage, c'est-à-dire le nom des répertoires ou des
machines qu'il partage pour vous. A moins que le serveur SMB n'aient aucune protection, vous
allez devoir saisir un mot de passe. Utilisez le mot de passe pour le compte d'invité ou pour votre
compte personnel sur cette machine.
Par exemple :
smbclient -L zimmerman
Server Comment
--------- -------
HOPPER Samba 1.9.15p8
KERNIGAN Samba 1.9.15p8
LOVELACE Samba 1.9.15p8
RITCHIE Samba 1.9.15p8
ZIMMERMAN
La « browse list » (liste des machines) montre quels sont les autres serveurs SMB partageant
des ressources sur le réseau.
ou « service » est une machine et un nom de partage. Par exemple, si vous essayez d'accéder à
un répertoire en accès public sur une machine appelée zimmerman, le service sera nommé
\\zimmerman\public. Néanmoins, à cause des restrictions de l'interpréteur de commandes (le
shell), vous allez devoir redoubler les backslashs, pour obtenir la ligne suivante :
smb: \> h
ls dir lcd cd pwd
get mget put mput rename
more mask del rm mkdir
md rmdir rd prompt recurse
translate lowercase print printmode queue
cancel stat quit q exit
newer archive tar blocksize tarmode
setmode help ~? ~!
smb: \>
Si vous savez utiliser ftp, vous ne devriez pas avoir besoin de lire la page de manuel de
smbclient.
smbfs
Les utilitaires smbmount et smbumount permettent de monter de démonter des ressources SMB
en tant que système de fichiers distant (pour peu que le noyau supporte le système de fichiers
SMB).
# umount /mnt/test
Nautilus
Vous pouvez également utiliser Nautilus pour afficher les partages Samba disponibles sur votre
réseau. Sélectionnez Bouton menu principal (sur le panneau) => Serveurs réseau pour afficher
une liste des groupes de travail Samba sur votre réseau. Vous pouvez également taper smb:
dans la barre Emplacement: de Nautilus afin d'afficher les groupes de travail.
Comme le montre la figure suivante, une icône apparaît pour chaque groupe de travail SMB
disponible sur le réseau.
Comme le montre la figure peécédente, il y a une icône pour chaque ordinateur appartenant au
groupe de travail. Cliquez deux fois sur une icône pour afficher le partage Samba sur l'ordinateur
donné. Si une combinaison nom d'utilisateur/mot de passe est nécessaire, le système vous
invitera à la spécifier.
Vous pouvez également spécifier une combinaison nom d'utilisateur/mot de passe dans la barre
Emplacement: en suivant la syntaxe suivante (remplacez utilisateur, mot-de-passe, nom-du-
serveur et nom-du-partagepar les valeurs appropriées):
smb://utilisateur:mot-de-passe@nom-du-serveur/nom-du-partage
Les démon smbd et nmbd de Samba sont contrôler par un seul fichier ASCII ; smb.conf. Ce
fichier peut comtenir plus de 300 instructions différentes. Dans cette section, un survol du
paramétrage de Samba est présenté.
La configuration de Samba est effectuée par l'intermédiaire d'un fichier de configuration unique:
/etc/samba/smb.conf. Ce fichier décrit les ressources que l'on désire partager, ainsi que les
permissions/restrictions qui leur sont associées. Le fichier /etc/samba/smb.conf se découpe
selon des sections comprenant chacune un ensemble de lignes de paramètres du type attribut =
valeur. Une ligne commençant par un # est une ligne de commentaires.
• La section [printers] définit les imprimantes partagées par le serveur Section [global]
[global]
workgroup = METRAN
encrypt passwords = yes
wins support = yes
log level = 1
max log size = 1000
read only = no
[homes]
browsable = no
La section [global] est obligatoire, elle doit donc toujours se trouver dans le fichier de
configuration. C’est dans cette section que les paramètres globaux du serveur sont définis. Voici
un exemple de section [global]:
[global]
netbios name = POIL
server string = Samba %v on %L
workgroup = COQUINO
encrypt passwords = yes
Option Description
[GILL]
path = /export/partage/gill
comment = Les données de Stephane
volume = Sample-Data-Drive
writable = yes
mkdir /export/partage/gill
chmod 777 /export/partage/gill
Dans le tableau suivant les options utilisés dans l’exemple sont décrites:
Option Description
read only Définit si la permission est donné d’écrire dans le répertoire de partage.
writable
Il est ainsi possible de partager un lecteur de CD-ROM (celui-ci devant être préalablement
monté), en créant par exemple une section [cd-rom] comme suit:
[CD-ROM]
Test de la configuration
testparm smb.conf
Si celui-ci ne renvoie aucun message d'erreur, la syntaxe du fichier smb.conf est alors correcte (il
ne vérifie que la syntaxe, non le fonctionnement).
Afin de pouvoir visualiser correctement les résultats, vous pouvez rediriger la sortie vers un
fichier par la commande
Options réseaux
Samba offre la possibilité de modifier certains paramètres réseaux afin d’améliorer la sécurité et
de permettre à un serveur d’offrir des services sur 2 sous-réseau à la fois. Dans l’exemple
suivant le serveur Samba accède simultanément le sous-réseau 192.168.220.0 et le sous-réseau
134.213.233.0.
[global]
hosts allow = 192.168.220. 134.213.233.
hosts deny = 192.168.220.102
interfaces = 192.168.220.100/255.255.255.0 \
134.213.233.110/255.255.255.0
bind interfaces only = yes
Option Description
interfaces Liste des interfaces sur lequel le serveur Samba est autorisé à offrir
des services.
bind interface Force Samba à utiliser seulement les interfaces définit dans l’option
only interface.
Serveurs virtuels
Les serveurs virtuels sont utilisés pour donner l’illusion qu’il existe plusieurs serveurs Samba.
Cette technique est très simple à implanter comme le montre l’exemple suivant :
[global]
netbios aliases = sales accounting admin
includes = /etc/samba/smb.conf.%L
L’option netbios aliases permet dans l’exemple précédent de créer 3 serveurs virtuels : sales,
accounting et admin. L’instruction includes et l’utilisation de la variables %L permettent de
paramétrer chacun des serveurs virtuels. Par exemples, le fichier de paramétrage du serveur
sales (/etc/samba/smb.conf.sales) pourrait ressembler à ceci :
[global]
workgroup = SALES
hosts allow = 192.168.10.255
[sales2004]
path = /home/samba/saless2004/
…
Occasionnellement, il est nécessaire de savoir quel sont les transactions effectuées sur un
serveur Samba. C’est pour cette raison qu’il existe un certain nombre d’option pour paramétrer la
journalisation des événements. Sous Linux, on utilise généralement syslog au lieu du fichier
samba.log. Voici un exemple utilisant le fichier samba.log.
[global]
log level = 2
log file = /var/log/samba.log
max log size = 50
debug times stamp = yes
Dans le tableau suivant une description des options utilisées est présentée :
Option Description
debug times stamp Ajoute l’heure avant chaque entrée dans le journal.
En utilisant les notions des sections précédentes un répertoire personne; pour l’usager dave peut
être créé de la façon suivante :
[dave]
path = /home/dave
comment = Répertoire personnel de Dave
writable = yes
valid users = dave
[dave]
path = %H
comment = Répertoire personnel de %U
writable = yes
valid users = dave
Lorsqu’il est nécessaire de gérer les répertoires personnels de plusieurs usagers, il est préférable
d’utiliser la section [home]. Voici un exemple de section:
[home]
comment =Répertoire personnel de %U
browseable = no
writable = yes
Pour illustrer le fonctionnement de la section [home], supposons que l’usager gill tente de se
connecter à un partage nommé [gill]. Si l’usager gill possède un compte usager sur le serveur,
Samba procède de la façon suivante :
1. Samba crée un nouveau partage appelé [gill] avec comme chemin /home/gill.
2. Samba prend les valeurs définit dans la section [global] puis dans la section [home] pour
définir les options de partage [gill].
Partage d’impression
Samba offre la possibilité de partager une imprimante. Avant de pouvoir partager une
imprimante avec Samba il faut qu’une imprimante soit installé sur le serveur avec lpd ou CUPS.
Références
Jeffrey Dean, « LPI Linux Certification in a Nutshell, A Desktop Quick Reference », O’Reilly, 2001.