Vous êtes sur la page 1sur 19

Samba

Stéphane Gill

Stephane.Gill@CollegeAhuntsic.qc.ca

Table des matières

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

Paramétrage d’un client Windows 7


Créer des dossiers partagés 7
Utilisation d’un dossier partagé depuis un autre ordinateur 8

Paramétrage d’un client Linux 8


Paramétrage d’un serveur Samba 8
Paramètres généraux du serveur 13

Références 19

Document écrit par Stéphane Gill


© Copyright 2004 Stéphane Gill
Ce document est soumis à la licence GNU FDL. Permission vous est donnée de distribuer et/ou, modifier des copies de
ce document tant que cette note apparaît clairement.
Samba

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.

SMB/CIFS sous Linux

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

• AT&T Advanced Server for Unix

• SUN Solstice LM Server

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

© Copyright 2004 Stéphane Gill Page 2


Samba

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.

NetBIOS sur TCP/IP utilisent 3 ports :

• 137/UDP pour le résolution de noms NetBIOS (en diffusion ou via un serveur WINS)

• 138/UDP pour NetBIOS sans session

• 139/TCP pour NetBIOS avec session

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 :

© Copyright 2004 Stéphane Gill Page 3


Samba

• Le service workstation pour le côté client

• Le service server pour le côté serveur

Les commandes net config workstation et net config server permettent d'afficher
les transports que ces services peuvent utiliser :

C:\WINDOWS> net config workstation

Computer name \\GILL


Full Computer name gill.domus
User name gills

Workstation active on
NetbiosSmb (000000000000)
NetBT_Tcpip_{AB128BC0-4EA0-40B1-801A-D324891BD60F}
(525405FDC5F9)

Software version Windows 2002

Workstation domain WORKGROUP


Workstation Domain DNS Name (null)
Logon domain GILL

COM Open Timeout (sec) 0


COM Send Count (byte) 16
COM Send Timeout (msec) 250
The command completed successfully.

Les transports possibles apparaissent sous la ligne Workstation active on :

• 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

© Copyright 2004 Stéphane Gill Page 4


Samba

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

Pour installé le client Samba il suffit de taper la commande suivante :

rpm -ivh samba-2.0.6-x.i386.rpm

Installation du serveur

L'installation (contrairement à la configuration) du serveur est très simple à mettre en oeuvre. Il


suffit dans un premier temps de récupérer les fichiers RPM, puis dans un second temps de les
installer:

rpm -ivh samba-common-2.0.6-x.i386.rpm

rpm -ivh samba-client-2.0.6-x.i386.rpm

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.

© Copyright 2004 Stéphane Gill Page 5


Samba

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/

Vous devriez avoir les écrans suivants :

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

Le serveur devrait alors renvoyer les lignes suivantes:

Starting SMB services:


Starting NMB services:

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

Il existe une commande permettant de redémarrer Samba:

/etc/rc.d/init.d/smb restart

© Copyright 2004 Stéphane Gill Page 6


Samba

Paramétrage d’un client Windows

Créer des dossiers partagés

1. Depuis Poste de Travail, cliquez sur le dossier, le disque dur ou le lecteur de CD-ROM
que vous voulez partager.

2. Sélectionnez le menu Fichier, puis 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.

5. Cliquez sur le bouton OK.

© Copyright 2004 Stéphane Gill Page 7


Samba

Utilisation d’un dossier partagé depuis un autre ordinateur

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

2. Double-cliquez sur le dossier désiré.

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…

6. Sélectionnez un lecteur disponible puis cliquez sur le bouton Terminer.

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

Paramétrage d’un client Linux

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.

Pour voir ce que partage une machine donnée, utilisez :

/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

© Copyright 2004 Stéphane Gill Page 8


Samba

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

Ce qui devrait donner quelque chose comme cela :

Server time is Sat Aug 10 15:58:27 1996


Timezone is UTC+10.0
Password:
Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]

Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[]

Sharename Type Comment


--------- ---- -------
ADMIN$ Disk Remote Admin
public Disk Public
C$ Disk Default share
IPC$ IPC Remote IPC
OReilly Printer OReilly
print$ Disk Printer Drivers

This machine has a browse list:

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.

© Copyright 2004 Stéphane Gill Page 9


Samba

Pour utiliser le client, lancez :

/usr/sbin/smbclient service <mot de passe>

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 :

/usr/sbin/smbclient \\\\zimmerman\\public mon_mot_de_passe

où « mon_mot_de_passe » est votre mot de passe écrit tel quel.

Vous allez obtenir la ligne de commande suivante :

Server time is Sat Aug 10 15:58:44 1996


Timezone is UTC+10.0
Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]
smb: \>

Tapez « h » pour obtenir de l'aide sur smbclient :

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

© Copyright 2004 Stéphane Gill Page 10


Samba

Pour monter une ressource la syntaxe est la suivante:

# mount -t smbfs //ordi1/partage1 /mnt/test -o username=login_Windows

Pour démonter une ressource la syntaxe est la suivante:

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

© Copyright 2004 Stéphane Gill Page 11


Samba

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

Paramétrage d’un serveur Samba

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

Le fichier de paramétrage de Samba

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.

Il existe 3 sections principales:

• La section [global] définit des paramètres généraux sur le serveur

• La section [homes] définit le partage d'un répertoire personnel

• La section [printers] définit les imprimantes partagées par le serveur Section [global]

Voici un exemple de fichier /etc/samba/smb.conf :

[global]
workgroup = METRAN
encrypt passwords = yes
wins support = yes
log level = 1
max log size = 1000
read only = no
[homes]
browsable = no

© Copyright 2004 Stéphane Gill Page 12


Samba

map archive = yes


[printers]
path = /var/tmp
printable = yes
min print space = 2000
[test]
browsable = yes
read only = yes
path = /usr/local/samba/tmp

Paramètres généraux du serveur

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

Dans le tableau suivant les options utilisés sont décrites:

Option Description

netbios name Permet de donner un nom NetBIOS au serveur Samba.

workgroup Décrit le nom du workgroup auquel le serveur appartient.

server string Le commentaire qui apparait à coté du nom du serevur dans le


voisinage réseau.

© Copyright 2004 Stéphane Gill Page 13


Samba

Partager un répertoire quelconque

Il est possible de définir un accès personnalisé à n'importe quel répertoire de la machine en


créant une section portant le nom que le veut donner à la ressource. Voici un exemple de
section personnalisée :

[GILL]
path = /export/partage/gill
comment = Les données de Stephane
volume = Sample-Data-Drive
writable = yes

Le partage [GILL] permet de donner l’accès au répertoire /export/partage/gill au ordinateur


Windows du réseau. Le répertoire /export/partage/gill doit être créé à l’aide des commandes
suivantes:

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

path Permet de préciser le chemin du répertoire partagé.


directory

comment Définit un commentaire qui décrit le répertoire partagé.

volume Précise le nom de volume.

read only Définit si la permission est donné d’écrire dans le répertoire de partage.
writable

Partage d'un lecteur de CD-ROM

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]

© Copyright 2004 Stéphane Gill Page 14


Samba

comment = lecteur de CD-ROM


path = /mnt/cdrom
public = yes
writable = no
create mask = 0750

Test de la configuration

Le programme testparm permet de vérifier la syntaxe du fichier de configuration (smb.conf). Il est


conseillé d'exécuter cet utilitaire à chaque modification manuelle du fichier smb.conf. La syntaxe
de testparm est la suivante:

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

testparm smb.conf > /répertoires/fichier

© Copyright 2004 Stéphane Gill Page 15


Samba

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

hosts allow Adresse des clients autorisé à accéder le serveur Samba.

hosts deny Adresse des clients non-autorisé à accéder le serveur Samba.

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

© Copyright 2004 Stéphane Gill Page 16


Samba

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/

Journalisation des événements

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

log file Nom du fichier de journalisation de Samba.

log level Niveau compris entre 0 et 10, définissant la quantité de message à


journaliser.

max log size Taille maximum (en Koctet) du fichier de journalisation.

debug times stamp Ajoute l’heure avant chaque entrée dans le journal.

syslog Niveau du message envoyé à syslog (compris entre 0 et 10).

syslog only Utilisation de syslog seulement.

© Copyright 2004 Stéphane Gill Page 17


Samba

Partage du répertoire personnel

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

Il est possible d’abréger la définition de la section dave en utilisant la variable %U (username)


et %H (home directory).

[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].

3. Samba connecte l’usager gill au partage [gill].

© Copyright 2004 Stéphane Gill Page 18


Samba

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.

[1] SNIA CIFS document :


http://www.snia.org/English/Collaterals/Work_Group_Docs/NAS/CIFS/CIFS_Technical_Referenc
e.pdf

[2] Named Pipes, Sockets and other IPC : http://www.public.asu.edu/~mujtaba/page4.html

[3] Direct Hosting of SMB Over TCP/IP (Q204279) :


http://support.microsoft.com/support/kb/articles/Q204/2/79.ASP

[4] CIFS : Common Insecurities Fail Scrutiny : http://downloads.securityfocus.com/library/cifs.txt

© Copyright 2004 Stéphane Gill Page 19

Vous aimerez peut-être aussi