Vous êtes sur la page 1sur 19

Samba

Stphane Gill Stephane.Gill@CollegeAhuntsic.qc.ca

Table des matires


Introduction SMB/CIFS sous Linux Protocole SMB/CIFS Installation de Samba Installation du client Installation du serveur Activation de SWAT Dmarrage de Samba Paramtrage dun client Windows Crer des dossiers partags Utilisation dun dossier partag depuis un autre ordinateur Paramtrage dun client Linux Paramtrage dun serveur Samba Paramtres gnraux du serveur Rfrences 2 2 3 5 5 5 5 6 7 7 8 8 8 13 19

Document crit par Stphane Gill Copyright 2004 Stphane Gill Ce document est soumis la licence GNU FDL. Permission vous est donne de distribuer et/ou, modifier des copies de ce document tant que cette note apparat clairement.

Samba

Introduction
La palette des systmes dexploitation de Microsoft est trs largement rpandue en tant que plates-formes de poste de travail. Nanmoins, le systme dexploitation Unix (Linux) est trs apprci, en particulier dans le domaine des serveurs, pour la gestion de serveurs de bases de donnes, de serveurs de fichiers et de serveurs de communication. Il est ncessaire de mettre en place des produits complmentaires pour transformer le PC en client NFS, pour avoir accder un ordinateur Unix partir dun PC fonctionnant sous un systme dexploitation Microsoft.

SMB/CIFS sous Linux


Cependant, dans le cas dun systme dexploitation aussi souple que Unix, il ne devrait pas tre trs difficile de mettre en place le protocole de communication que Microsoft utilise sur ces produits pour partager des ressources et permettre les accs. Quelques constructeurs ont commenc il y a dj quelques annes diffuser des produits permettant de rpondre de manire 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, sest rvl extrmement stable, et reprsente ainsi une alternative particulirement intressante. Il a t dvelopp par un australien portant le nom de Andrew Tridgell. Sa maintenance est ralise 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 dpartements informatiques de certaines trs grandes entreprises. Vous trouverez les informations concernant Samba sur le page daccueil de ce produit : http://www.samba.org

Copyright 2004 Stphane Gill

Page 2

Samba

Protocole SMB/CIFS
NetBIOS est un protocole de niveau session utilis trs largement dans les rseaux de systmes 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 fonctionnalits de partage de ressources en environnement Windows (partage de fichiers et d'imprimantes), ainsi que les fonctionnalits d'administration distance, il apparait vident que NetBIOS sur TCP/IP est un protocole omniprsent, 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 rsolution 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 prcdemment, puisque NetBIOS sur TCP/IP est activ par dfaut, aussi bien sur Windows 2000 que sur Windows XP. Au niveau systme [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 Stphane Gill

Page 3

Samba

Le service workstation pour le ct client Le service server pour le ct 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 Full Computer name User name Workstation active on NetbiosSmb (000000000000) NetBT_Tcpip_{AB128BC0-4EA0-40B1-801A-D324891BD60F} (525405FDC5F9) Software version Workstation domain Workstation Domain DNS Name Logon domain COM Open Timeout (sec) COM Send Count (byte) COM Send Timeout (msec) The command completed successfully. Windows 2002 WORKGROUP (null) GILL 0 16 250 \\GILL gill.domus gills

Les transports possibles apparaissent sous la ligne Workstation active on : NetbiosSmb dsigne le transport de CIFS dans TCP directement (port TCP 445, sans couche NetBIOS) [3]. NetBT_Tcpip_... dsigne le transport de CIFS dans NetBIOS sur TCP/IP, sur l'un des adaptateurs rseau. CIFS est un protocole relativement complexe, ayant connu de nombreuses volutions qui ont abouti plusieurs versions du protocole, appeles dialectes. La complexit du protocole, la

Copyright 2004 Stphane Gill

Page 4

Samba

faiblesse des protocoles d'authentification utiliss ainsi que des erreurs d'implmentations ont t la cause d'un certain nombre de vulnrabilits dans les systmes Windows [4].

Installation de Samba
Avant d'installer Samba, il faut bien videmment rcuprer les fichiers RPM ou bien les sources, et ajouter les protocoles TCP/IP et NetBIOS sur les machines clientes afin de leur permettre d'accder 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 trs simple mettre en oeuvre. Il suffit dans un premier temps de rcuprer 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 associs ces applications, mais permet galement d'ajouter des fichiers ou imprimantes partags, de lancer les dmons smbd et nmbd, de vrifier les connexions aux ressources partages, et de grer les mots de passe.

Copyright 2004 Stphane Gill

Page 5

Samba

Avant dactiver SWAT, il faut diter le fichier /etc/xinetd.d/swat et de mettre: disable=no. Pour accder Swat, lancez un navigateur et entrez l'url suivante : http://localhost:901/ Vous devriez avoir les crans suivants :

Dmarrage de Samba
Aprs installation, le serveur de Samba devrait normalement tre apte dmarrer (sans aucun partage de fichiers ou d'imprimante) en lanant 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 contrler que les deux dmons sont correctement lancs /etc/rc.d/init.d/smb status smbd (pid 1054) is running... nmbd (pid 1056) is running... Il existe une commande permettant de redmarrer Samba: /etc/rc.d/init.d/smb restart

Copyright 2004 Stphane Gill

Page 6

Samba

Paramtrage dun client Windows

Crer des dossiers partags


1. Depuis Poste de Travail, cliquez sur le dossier, le disque dur ou le lecteur de CD-ROM que vous voulez partager. 2. Slectionnez le menu Fichier, puis Partager 3. Cliquez sur Partager ce dossier, puis cliquez sur le bouton Autorisations. Par dfaut, tout le monde peut accder votre dossier partag. Vous pouvez restreindre les droits de Tout le monde en cochant ou dcochant les autorisations. 4. Si vous voulez ajouter un utilisateur en particulier, cliquez sur le bouton Ajouter, puis dfinissez cet utilisateur. 5. Cliquez sur le bouton OK.

Copyright 2004 Stphane Gill

Page 7

Samba

Utilisation dun dossier partag depuis un autre ordinateur


1. Double-cliquez sur licne Favoris rseau, Tout le rseau, contenu entier, Rseau Microsoft Windows, puis double-cliquez sur licne de lordinateur o se trouve le dossier partag. 2. Double-cliquez sur le dossier dsir. 3. Si vous dsirez assigner une lettre logique au dossier partag, suivez ces instructions. 4. Double-cliquez sur licne Favoris rseau, Tout le rseau, contenu entier, Rseau Microsoft Windows, puis double-cliquez sur licne de lordinateur o se trouve le dossier partag. 5. Cliquez sur le dossier dsir, slectionnez le menu Fichier, puis slectionnez Connecter un lecteur rseau 6. Slectionnez un lecteur disponible puis cliquez sur le bouton Terminer. Note: Si un mot de passe est ncessaire, Windows vous le demandera, et vous devez saisir le mot de passe pour ce dossier partag.

Paramtrage dun client Linux


smbclient
Un client SMB pour un hte 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 transfrer des fichiers entre un serveur Windows et un client Linux. Pour voir ce que partage une machine donne, utilisez : /usr/sbin/smbclient -L hte o hte 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 rpertoires ou des machines qu'il partage pour vous. A moins que le serveur SMB n'aient aucune protection, vous

Copyright 2004 Stphane 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 --------ADMIN$ public C$ IPC$ OReilly print$ Type ---Disk Disk Disk IPC Printer Disk Comment ------Remote Admin Public Default share Remote IPC OReilly Printer Drivers

This machine has a browse list: Server --------HOPPER KERNIGAN LOVELACE RITCHIE ZIMMERMAN La browse list (liste des machines) montre quels sont les autres serveurs SMB partageant des ressources sur le rseau. Comment ------Samba 1.9.15p8 Samba 1.9.15p8 Samba 1.9.15p8 Samba 1.9.15p8

Copyright 2004 Stphane 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'accder un rpertoire en accs public sur une machine appele zimmerman, le service sera nomm \\zimmerman\public. Nanmoins, cause des restrictions de l'interprteur 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 get more md translate cancel newer setmode smb: \> Si vous savez utiliser ftp, vous ne devriez pas avoir besoin de lire la page de manuel de smbclient. dir mget mask rmdir lowercase stat archive help lcd put del rd print quit tar ~? cd mput rm prompt printmode q blocksize ~! pwd rename mkdir recurse queue exit tarmode

smbfs
Les utilitaires smbmount et smbumount permettent de monter de dmonter des ressources SMB en tant que systme de fichiers distant (pour peu que le noyau supporte le systme de fichiers SMB).

Copyright 2004 Stphane 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 dmonter une ressource la syntaxe est la suivante: # umount /mnt/test

Nautilus
Vous pouvez galement utiliser Nautilus pour afficher les partages Samba disponibles sur votre rseau. Slectionnez Bouton menu principal (sur le panneau) => Serveurs rseau pour afficher une liste des groupes de travail Samba sur votre rseau. 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 icne apparat pour chaque groupe de travail SMB disponible sur le rseau.

Comme le montre la figure pecdente, il y a une icne pour chaque ordinateur appartenant au groupe de travail. Cliquez deux fois sur une icne pour afficher le partage Samba sur l'ordinateur donn. Si une combinaison nom d'utilisateur/mot de passe est ncessaire, le systme vous invitera la spcifier.

Copyright 2004 Stphane Gill

Page 11

Samba

Vous pouvez galement spcifier une combinaison nom d'utilisateur/mot de passe dans la barre Emplacement: en suivant la syntaxe suivante (remplacez utilisateur, mot-de-passe, nom-duserveur et nom-du-partagepar les valeurs appropries): smb://utilisateur:mot-de-passe@nom-du-serveur/nom-du-partage

Paramtrage dun serveur Samba


Les dmon smbd et nmbd de Samba sont contrler par un seul fichier ASCII ; smb.conf. Ce fichier peut comtenir plus de 300 instructions diffrentes. Dans cette section, un survol du paramtrage de Samba est prsent.

Le fichier de paramtrage de Samba


La configuration de Samba est effectue par l'intermdiaire d'un fichier de configuration unique: /etc/samba/smb.conf. Ce fichier dcrit les ressources que l'on dsire partager, ainsi que les permissions/restrictions qui leur sont associes. Le fichier /etc/samba/smb.conf se dcoupe selon des sections comprenant chacune un ensemble de lignes de paramtres du type attribut = valeur. Une ligne commenant par un # est une ligne de commentaires. Il existe 3 sections principales: La section [global] dfinit des paramtres gnraux sur le serveur La section [homes] dfinit le partage d'un rpertoire personnel La section [printers] dfinit les imprimantes partages 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 Stphane 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

Paramtres gnraux du serveur


La section [global] est obligatoire, elle doit donc toujours se trouver dans le fichier de configuration. Cest dans cette section que les paramtres globaux du serveur sont dfinis. 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 utiliss sont dcrites: Option netbios name workgroup server string Description Permet de donner un nom NetBIOS au serveur Samba. Dcrit le nom du workgroup auquel le serveur appartient. Le commentaire qui apparait cot du nom du serevur dans le voisinage rseau.

Copyright 2004 Stphane Gill

Page 13

Samba

Partager un rpertoire quelconque


Il est possible de dfinir un accs personnalis n'importe quel rpertoire de la machine en crant une section portant le nom que le veut donner la ressource. Voici un exemple de section personnalise : [GILL] path = /export/partage/gill comment = Les donnes de Stephane volume = Sample-Data-Drive writable = yes Le partage [GILL] permet de donner laccs au rpertoire /export/partage/gill au ordinateur Windows du rseau. Le rpertoire /export/partage/gill doit tre cr laide des commandes suivantes: mkdir /export/partage/gill chmod 777 /export/partage/gill Dans le tableau suivant les options utiliss dans lexemple sont dcrites: Option path directory comment volume read only writable Dfinit un commentaire qui dcrit le rpertoire partag. Prcise le nom de volume. Dfinit si la permission est donn dcrire dans le rpertoire de partage. Description Permet de prciser le chemin du rpertoire partag.

Partage d' lecteur de CD-ROM un


Il est ainsi possible de partager un lecteur de CD-ROM (celui-ci devant tre pralablement mont), en crant par exemple une section [cd-rom] comme suit: [CD-ROM]

Copyright 2004 Stphane 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 vrifier la syntaxe du fichier de configuration (smb.conf). Il est conseill d'excuter 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 vrifie que la syntaxe, non le fonctionnement). Afin de pouvoir visualiser correctement les rsultats, vous pouvez rediriger la sortie vers un fichier par la commande testparm smb.conf > /rpertoires/fichier

Copyright 2004 Stphane Gill

Page 15

Samba

Options rseaux
Samba offre la possibilit de modifier certains paramtres rseaux afin damliorer la scurit et de permettre un serveur doffrir des services sur 2 sous-rseau la fois. Dans lexemple suivant le serveur Samba accde simultanment le sous-rseau 192.168.220.0 et le sous-rseau 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 hosts allow hosts deny interfaces bind interface only

Description Adresse des clients autoris accder le serveur Samba. Adresse des clients non-autoris accder le serveur Samba. Liste des interfaces sur lequel le serveur Samba est autoris offrir des services. Force Samba utiliser seulement les interfaces dfinit dans loption interface.

Serveurs virtuels
Les serveurs virtuels sont utiliss pour donner lillusion quil existe plusieurs serveurs Samba. Cette technique est trs simple implanter comme le montre lexemple suivant : [global] netbios aliases = sales accounting admin includes = /etc/samba/smb.conf.%L Loption netbios aliases permet dans lexemple prcdent de crer 3 serveurs virtuels : sales, accounting et admin. Linstruction includes et lutilisation de la variables %L permettent de

Copyright 2004 Stphane Gill

Page 16

Samba

paramtrer chacun des serveurs virtuels. Par exemples, le fichier de paramtrage 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 vnements


Occasionnellement, il est ncessaire de savoir quel sont les transactions effectues sur un serveur Samba. Cest pour cette raison quil existe un certain nombre doption pour paramtrer la journalisation des vnements. Sous Linux, on utilise gnralement 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 utilises est prsente : Option log file log level max log size debug times stamp syslog syslog only Description Nom du fichier de journalisation de Samba. Niveau compris entre 0 et 10, dfinissant la quantit de message journaliser. Taille maximum (en Koctet) du fichier de journalisation. Ajoute lheure avant chaque entre dans le journal. Niveau du message envoy syslog (compris entre 0 et 10). Utilisation de syslog seulement.

Copyright 2004 Stphane Gill

Page 17

Samba

Partage du rpertoire personnel


En utilisant les notions des sections prcdentes un rpertoire personne; pour lusager dave peut tre cr de la faon suivante : [dave] path = /home/dave comment = Rpertoire personnel de Dave writable = yes valid users = dave Il est possible dabrger la dfinition de la section dave en utilisant la variable %U (username) et %H (home directory). [dave] path = %H comment = Rpertoire personnel de %U writable = yes valid users = dave Lorsquil est ncessaire de grer les rpertoires personnels de plusieurs usagers, il est prfrable dutiliser la section [home]. Voici un exemple de section: [home] comment =Rpertoire personnel de %U browseable = no writable = yes Pour illustrer le fonctionnement de la section [home], supposons que lusager gill tente de se connecter un partage nomm [gill]. Si lusager gill possde un compte usager sur le serveur, Samba procde de la faon suivante : 1. Samba cre un nouveau partage appel [gill] avec comme chemin /home/gill. 2. Samba prend les valeurs dfinit dans la section [global] puis dans la section [home] pour dfinir les options de partage [gill]. 3. Samba connecte lusager gill au partage [gill].

Copyright 2004 Stphane Gill

Page 18

Samba

Partage dimpression
Samba offre la possibilit de partager une imprimante. Avant de pouvoir partager une imprimante avec Samba il faut quune imprimante soit install sur le serveur avec lpd ou CUPS.

Rfrences
Jeffrey Dean, LPI Linux Certification in a Nutshell, A Desktop Quick Reference , OReilly, 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 Stphane Gill

Page 19