Vous êtes sur la page 1sur 11

Installer et configurer Samba

• Description
• Installation
• Configuration de Samba
o Configuration des postes Windows
• Tester la configuration
o Sur le serveur Linux
o Sur les postes Windows
• Outils et utilitaires pour Samba

Sur votre réseau local, vous avez certainement besoin de partager vos
resources Linux avec les autres postes sous Windows connectés à ce même
réseau, Linux permet l'utilisation d'un "LAN Manager" grâce au protocole SMB
de Samba.
Samba est un service qui permet, sur le réseau local, aux autres PCs sous
Windows3.11/95/98/NT de partager des resources avec des machines sous
Linux..
La description ci-dessous a pour but de vous permettre d'installer un partage
des ressources à l'aide de Samba, mais pour une configuration plus "pointue",
vous devrez consulter la doc fournie avec Samba .

Description
Samba vous permet "d'exporter" différents périphériques connectés à la machine
Linux comme les, fichiers, imprimantes, partitions(disques durs), lecteurs ... pour
rendre accessibles ces périphériques aux machines sous Windows, et inversement.
Le bon fonctionnement de Samba dépend essentiellement de son fichier de
configuration .

-Samba utilise les commandes SMB, provenant de NetBIOS, qui fonctionne en


architecture client/serveur .
-NetBIOS (Network Basic Input/Ouput System) a été conçu par IBM et utilisé pour
"Microsoft Windows for Worksgroup", il existe en natif sur trames 802.3 ou encapsulé
dans des trames TCP/IP pour l'utilisation de Samba .
-SMB (Server Message Block) a été conçu conjointement par Intel, IBM et Microsoft,
c'est un "LAN Manager" pour TCP/IP .
-IPC est un LAN Manager supportant les application "réparties" .
-Nom_du_Serveur est le nom NetBIOS de la machine patageant des ressources .
-Nom_de_Partage est le nom unique attribué à chaque ressource (partagée) sur
chaque serveur .
-Nom_de_Reseau est le nom complet , nom_du_serveur\nom_de_partage, utilisé s'il
existe plusieurs serveurs.

Samba utilise plusieurs programmes pour gérer le partage des ressources :


/usr/sbin/smbd démon, serveur gérant les connexions des clients SMB
/usr/sbin/nmbd démon, serveur de nom NetBIOS des clients
/usr/bin/smbclient pour se connecter aux ressources SMB partagées des postes
Windows
/usr/bin/smbmount pour monter les ressouces SMB comme un système de fichiers
sous Linux

Installation
Vous trouverez la dernière version 2.0.7 à l'adresse http://fr.samba.org/samba/, mais
si vous utilisez une RedHat 6.0 ou 5.2, mieux vaut installer la version correspondante
à votre distribution se trouvant, pour une RedHat 6.0, dans le répertoire
/Binary_Packages/redhat/RPMS/6.0 du site FTP ftp.samba.org/pub/samba/

Pour installer un RPM :


rpm -ivh samba-2.0.6-19991110.i386.rpm
L'installation, en plus des différents binaires, va créer : Un répertoire
/var/spool/samba, le fichier de configuration est /etc/smb.conf, éventuellement un
répertoire /home/samba et un script /etc/rc.d/init.d/smb pour lancer
automatiquement Samba au démarrage du système.
Vérifiez l'existence de ces liens ou créez les avec les commandes :
ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc1.d/K26smb
ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc2.d/K26smb
ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc3.d/S91smb
ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc4.d/K26smb
ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc5.d/S91smb
ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc6.d/K26smb

Pour lancer samba, il suffit de taper la commande /etc/rc.d/init.d/smb start

Configuration
Commencez par faire une copie de votre fichier de configuration :
cp /etc/smb.conf /etc/smb.conf.sav
Editez le fichier de configuration /etc/smb.conf pour le modifier en fonction de vos
besoins .

ATTENTION ! Il existe plusieurs GUI (Interfaces utilisateur graphiques) qui


permettent d'éditer smb.confpour configurer Samba,.
MAIS ces interfaces ne permettent que de visualiser certains paramètres de ce
fichier, et si vous les utilisez pour modifier smb.conf vous risquez de perdre une
partie des informations qu'il contient !!!
Vous trouverez des GUI comme sambaconf ou gtksamba ... Voir en fin de page les
adresses internet .
Swat est un utilitaire livré avec Samba et qui permet d'afficher votre fichier smb.conf
dans un navigateur en entrant l'url : http://localhost:901/
Vous pouvez par contre utiliser ces GUI pour monter les répertoires partagés ou faire
du monitoring .

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


[global]
workgroup = MYGROUP
server string = Samba Server
printcap name = /etc/printcap
load printers = yes
log file = /var/log/samba/log.%m
max log size = 50
security = user
socket options = TCP_NODELAY
dns proxy = no
#============================ Share Definitions
==============================

[homes]
comment = Home Directories
browseable = no
writeable = yes

[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writeable = no
printable = yes

Commentaires :
[global] définition des paramètres globaux
workgroup le nom de votre groupe de travail, celui qui apparaitra dans le voisinage
réseau sous windows.
server string description du serveur Samba
printcap name pour partager les imprimantes, /etc/printcap contient les imprimantes
configurées .
log file pour garder une trace de la connexion de chaque macine, %m sera remplacé
par le nom de chaque machine.
max log size taille maximun de ce fichier Log, en Kilo octets.
security vérification du niveau de sécurité, user , server ou share sont possibles .
socket options pour améliorer les performances
dns Proxy pour résoudre les noms NETBIOS .
[home] paramètres pour les répertoires HOME des utilisateurs, login identique sous
Linux et sous Windows.
[tmp] exporter le répertoire tmp pour effectuer des échanges de fichiers.
[printers] définitions des imprimantes et du chemin du spooler .
guest ok pour autoriser le compte guest à imprimer, si vous mettez yes vous devez
ajouter dans la section [global] cette ligne :
"guest account=pcguest"(ou un autre) pour "inviter" l'utilisateur pcguest, si non guest
account sera égale par défaut à nobody, et il faut également créer un compte pour
l'utilisateur définit par guest dans le fichier /etc/passwd .
Pour plus d'information sur les différents paramètres, vous trouverez de la doc sous
/usr/doc/samba-2.0.x/docs/ , au format html dans le sous répertoire htmldocs ou
au format ascii (text) dans le sous répertoire textdocs :
pour "security" le fichier security_level.txt, pour "socket options" le fichier
speed.txt , ...etc.
Consultez également la page de manuel : man smb.conf

Nous allons maintenant prendre l'exemple, un peu plus élaboré, d'un fichier qui
autorise :
_ uniquement les machines du réseau 192.168.154.0 et loopback
_ tous les utilisateurs à se partager un répertoire commun /home/samba
_ un répertoire /home/dao pour les utilisateurs du groupe dao et en lecture seule
pour tous les autres
_ un réperoire privé /home/niche pour les seuls utilisateurs droopy et snoopy
_ et en fin un répertoire différent pour chaque machine portant le nom de chaque
machine sous /home/pc/ , ces répertoires /home/pc/win1 /home/pc/win2 ... devront
exister .
/etc/smb.conf :

#======================= Global Settings


=====================================
[global]
workgroup = MYGROUP
server string = Samba Server

# Important pour la securite : permet de restreindre l'acces


aux
# machines du reseau local et au "loopback" .
# Voir page de manuel smb.conf .
hosts allow = 192.168.154. 127.

load printers = yes

# par defaut "guest account = nobody"


; guest account = pcguest

log file = /var/log/samba/log.%m


max log size = 100

# Voir security_level.txt et Passwords.txt.


security = user

# Voir speed.txt et les pages de manuel.


socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

dns proxy = no

#============================ Share Definitions


==============================
[homes]
comment = Home Directories
browseable = no
writeable = yes

# Repertoire commun /home/samba


[samba]
comment = Network Samba Service
path = /home/samba
; guest ok = yes
read only = no
; share modes = no
public = yes

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Pour autoriser le compte "guest" à imprimer, mettre :
# "public = yes" et "guest ok = yes"
guest ok = no
writeable = no
printable = yes

# Repertoire pour le groupe DAO, en lecture seule


# pour les autres utilisateurs, les droits sur /home/dao
# sont attribues à la creation des utilisateurs et du groupe.
# "public=yes" pour ne pas avoir à saisir de mot de passe .
[dao]
comment = Public DAO
path = /home/dao
public = yes
writeable = yes
printable = no
write list = @dao

# Repertoire prive, accessible uniquement


# par les utilisateurs "droopy" et "snoopy"
[niche]
comment = Private Niche
path = /homes/niche
valid users = droopy snoopy
public = no
writeable = yes
printable = no

# Le repertoire sous /home/pc/ sera different suivant


# les machines qui se connectent.
# Pour utiliser un repertoire par utilisateur à la place
# de machine, il suffit de remplacer %m par %u .
[pchome]
comment = PC Directories
path = /home/pc/%m
public = no
writeable = yes

[dao] le nom_de_partage sera dao .


public = yes pour ne pas avoir à saisir de mot de passe .
valid users = droopy, snoopy certaines versions nécessite la virgule .
ATTENTION! Samba ne va pas créer les répertoires partagés, il faut donc utiliser la
commande mkdir pour la création de tous ces répertoires déclarés dans le fichier
smb.conf avant de lancer Samba .
Après avoir modifié le fichier /etc/smb.conf, pour faire prendre en compte les
modifications, tapez :
/etc/rc.d/init.d/smb stop
/etc/rc.d/init.d/smb start
ou simplement : /etc/rc.d/init.d/smb restart

tuxserv:/admin $ /etc/rc.d/init.d/smb restart


Shutting down SMB services:
[ OK ]
Shutting down NMB services:
[ OK ]
Starting SMB services:
[ OK ]
Starting NMB services:
[ OK ]
tuxserv:/admin $

Nous allons maintenant définir, dans le fichier /etc/lmhosts, le nom NETBIOS des
machines windows pour que Samba fasse la correspondance entre les adresses IP
et les noms des machines Windows.
Editez ou créez le fichier /etc/lmhosts :

# /etc/lmhosts

127.0.0.1 localhost

192.168.154.10 win1
192.168.154.11 win2

Configuration des postes Windows :


Vous devez avoir installer le pilote de votre carte Ethernet, Ajoutez le client Microsoft
et les protocoles NetBEUI et TCP/IP pour votre carte Ethernet .
Vous attribuez une adresse IP à votre machine (Protocole TCP/IP de la carte
Ethernet), pour que Linux puisse contacter ce poste, cette adresse IP est déclaré
dans le fichier /etc/hosts sur le serveur Linux Samba .

Dans le panneau de configuration vous sélectionnez (double-click) l'icône


réseau :
* Dans l'onglet Configuration :
_Avec le bouton [ Ajouter... ], vous ajoutez :
Client / Microsoft / Client pour les réseau Microsoft ,
Protocole / Microsoft / NetBEUI ,
Protocole / Microsoft / TCP/IP .
* Puis sélectionnez l'onglet Identification :
Nom de l'ordinateur : win1 (Nom NetBIOS de la machine)
Groupe de travail : MYGROUP (Nom du groupe de travail Windows)
Description de l'ordinateur : Poste Multimédia
* Puis sélectionnez l'onglet Configuration :
Double-click sur TCP/IP -> Nom_de_la_carte_ethernet
_Onglet Adresse IP :
Cochez Spécifier une adresse IP
Adresse IP : 192.168.154.11 (adresse IP de la machine déclarée dans /etc/hosts du
serveur Linux Samba)
Masque de sous réseau : 255.255.255.0

Depuis le Bureau, sélectionnez (double-click) l'icône Voisinage réseau :


Si votre réseau Windows est correctement configuré, vous devez voir, au moins,
votre machine "win1" .
Si le serveur Samba-Linux fonctionne, vous devez également voir vos machines
Linux.
_ Cliquez sur Se connecter à un lecteur Le nom du lecteur qui apparaîtra dans
l'explorateur de fichier est déjà sélectionné .
_ Entrez le chemin de la ressource : \\smbserver\dao par exemple.
Les noms NetBIOS, des machines ne doivent pas dépasser les 15 caractères et 8
caractères pour les noms des ressources .

En cas de difficultés, essayez de trouver de l'aide depuis l'aide en ligne de Windows ,


accessible depuis n'importe quelle fenêtre "?" Index/Dépanneur réseau.

Tout comme sous Linux, Windows utilise un fichier C:\WINDOWS\lmhosts contenant


les noms DNS ou adresses IP et le nom NetBIOS correspondant.

# lmhosts

tuxserv.linux.fr smbserver
win2.linux.fr win2
192.168.154.12 win3

Vous trouverez certainement un fichier C:\WINDOWS\LMHOSTS.SAM pour vous


aider

Pour éviter la mise à jour des fichiers lmhosts sur chaque client Windows, il est
préférable d'utiliser un serveur WINS
Samba peut être utilisé comme serveur WINS, aucun paramétrage n'est requis sur le
serveur Samba-Linux faisant office de serveur WINS, mais par contre, comme il ne
peut y avoir qu'un seul serveur WINS, sur les autres serveurs Samba-Linux il faut
ajouter l'adresse IP du serveur WINS au fichier /etc/smb.conf :

[global]
workgroup = MYGROUP
server string = Samba Server

wins support = no
wins server = 192.168.154.1
Tester Samba
Le fichier /usr/doc/samba-2.0.x/docs/textdocs/DIAGNOSIS.TXT vous aidera pour
tester le fonctionnement de Samba .

Après modification du fichier /etc/smb.conf, il est prudent de tester la syntaxe de


smb.conf : Pour cela un utilitaire /usr/bin/testparm est disponible .
Il suffit de taper la commande : testparm

tuxserv:/admin $ testparm
Load smb config files from /etc/smb.conf
Processing section "[homes]"
Processing section "[samba]"
Processing section "[printers]"
Processing section "[dao]"
Processing section "[pchome]"
Loaded services file OK.
Press enter to see a dump of your service definitions

Et si tout va bien, relancez ensuite Samba : /etc/rc.d/init.d/smb restart

Serveur Linux :
Chaque machine pouvant être indifféremment client ou serveur, nous allons
prendre un exemple :

Supposons que la machine Linux s'appelle "tuxserv" et la machine Windows se


nomme "win1" et partage un répertoire "apps", pour tester smbclient afin d'accéder
depuis Linux aux resources de la machine "win1" .

Lister les ressources sur le serveur Linux :

tuxserv:/admin $ smbclient -L tuxserv


Added interface ip=192.168.154.1 bcast=192.168.154.255
nmask=255.255.255.0
Password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.0.6]

Sharename Type Comment


--------- ---- -------
samba Disk Network Samba Service
tmp Disk Temporary file space
pchome Disk PC Directories
IPC$ IPC IPC Service (Samba Serveur)
lp Printer
lp1 Printer
stylus Printer

Server Comment
--------- -------
TUXSERV Samba Server
WIN1 Win Mmedia

Workgroup Master
--------- -------
MYGROUP TUXSERV
tuxserv:/admin $

Lister les ressources sur le serveur distant Windows :

tuxserv:/admin $ smbclient -L win1


added interface ip=192.168.154.10 bcast=192.168.154.255
nmask=255.255.255.0
Password:

Sharename Type Comment


--------- ---- -------
APPS Disk
HP Printer
PRINTER$ Disk
STYLUS Printer
IPC$ IPC Communication entre processus
distants

Server Comment
--------- -------

Workgroup Master
--------- -------
tuxserv:/admin $

Se connecter à la ressource du serveur distant:

tuxserv:/admin $ smbclient //win1/apps


added interface ip=192.168.154.10 bcast=192.168.154.255
nmask=255.255.255.0
Password:
smb: \> ls
RECYCLED DHS 0 Wed Feb 2
21:23:30 2000
MVAPPS D 0 Wed Feb 23
17:55:10 2000
Adaptec D 0 Wed Feb 2
19:49:52 2000
ADOBE D 0 Wed Feb 2
19:50:52 2000
DICO DR 0 Wed Feb 2
20:02:12 2000
DOCUMENT D 0 Wed Feb 2
20:02:22 2000
EXPRESS DR 0 Wed Feb 2
20:03:16 2000
ATLASWA DR 0 Wed Feb 2
20:03:38 2000
TEMP D 0 Wed Feb 2
20:46:08 2000
Graphic D 0 Wed Feb 2
20:04:22 2000
host-news D 0 Wed Feb 2
20:10:52 2000
Internet D 0 Wed Feb 2
20:11:00 2000
PTWin63 D 0 Wed Feb 2
20:47:48 2000
TELES D 0 Sat Jul 1
19:21:36 2000
Comm D 0 Wed Feb 2
20:42:08 2000
UnZip D 0 Wed Feb 2
20:46:24 2000
MSOFFICE D 0 Wed Feb 2
21:01:14 2000
Lotus D 0 Wed Feb 2
21:08:42 2000
StarOffice5 D 0 Wed Feb 2
21:21:00 2000
Claris Corp D 0 Wed Feb 23
16:53:20 2000
Watch&Smile D 0 Wed Feb 2
21:23:54 2000
Media D 0 Wed Feb 2
20:49:16 2000
Caere D 0 Wed Feb 23
17:59:22 2000
OnLinePP D 0 Sat Jul 1
19:05:24 2000
Audio D 0 Tue Oct 3
15:26:02 2000

50222 blocks of size 131072. 27433 blocks available


smb: \> quit
tuxserv:/admin $

Pour vous connecter à une ressource, vous pouvez utiliser cette syntaxe :
smbclient \\\nom_du_serveur\\nom_de_partage -U nom_utilisateur
nom_du_serveur est le nom NetBIOS de la machine partageant des ressources
SMB, nom_de_partage est le nom affecté à la ressource partagée, fichier, partition,
imprimante ...etc
Un mot de passe vous sera alors demandé, c'est celui qui correspond à l'utilisateur
Windows .

smbmount :
Il est possible aussi pour accéder à ces ressources de monter ces ressources
comme une partition sur votre système avec /usr/bin/smbmount.
Ce montage, qui s'effectue de la même façon que pour un CDRom ou comme NFS,
est certainement plus simple à manipuler, mais il faut que le support du système de
fichiers SMB soit inclus dans votre noyau.
La syntaxe se smbmount ressemble à : smbmount
//nom_du_serveur/nom_de_partage /nom_du_point_de_montage, par exemple :
smbmount //win1/apps /mnt/samba/win1/apps .
LinNeighborhood est un GUI très agréable à utiliser pour interfacer smbmount .
Dans les dernières versions de Samba smbmount ne fait plus parti du package
samba mais du package smbfs et il faut le récupérer depuis un site FTP .
Vous trouverez en bas de cette page les adresses internet pour récupérer ces outils.
Postes Windows :
Vous allez pouvoir vérifier maintenant que les ressources sont accessible depuis le
voisinage réseau sur les PCs Windows .
ATTENTION! Pour accéder à un compte utilisateur sur le serveur Samba (Linux)
vous devez absolument utilisez le même login (compte utilisateur) sous Windows.

Sur les PC sous Windows, dans l'explorateur de fichiers, menu outils/connecter un


lecteur réseau, vous devez saisir le chemin des répertoires exportés par le serveur
Linux :
_ Ressources:
Répertoire dao : \\nom_du_serveur\nom_de_partage, par exemple \\Destux\dao
où dao est la ressource partagée de la machine Destux .
Utilisation de tmp pour faire des transferts de fichier : \\nom_du_serveur\tmp
_ Utilisateurs :
Pour l'exportation du même login sous Linux et sous Windows :
\\nom_du_serveur\nom_du_login
Pour atteindre le répertoire /home/freddy, "logez" vous en "freddy" sous Windows,
depuis l'explorateur, cliquez sur l'icône connecter lecteur réseau et sélectionnez ou
saisissez le chemin correspondant:
il va y avoir alors une demande de saisie du mot de passe pour
l'utilisateur(nom_du_login) en question, c'est le mot de passe de l'utilisateur sous
Linux.

En cas de doute ou de problème, consultez :


Le SMB-HOWTO
Le fichier /usr/doc/samba-2.0.x/docs/textdocs/DIAGNOSIS.TXT
Et la page de manuel smb.conf

Utilitaires pour Samba


En plus des GUI pour éditer smb.conf :
sambaconf (sambaconfig-0.8.0.6.tar.gz) www.geocities.com/grymse/sambaconfig/
une interface "LinNeighborhood" www.bnro.de/~schmidjo/ qui ressemble au
voisinage réseau de Windows.
gtksamba www.open-systems.com/gnosamba/
Vous trouverez sous KDE un monitor samba depuis le menu
":Configuration"/":Imformation"/":Etat de Samba".
komba2 komba.sourceforge.net un GUI pour KDE.
Et pour l'utilisation de smbmount (smbfs-2.0.2-6.i386.rpm):
ftp://fr.rpmfind.net/linux/contrib/libc6/i386/
Sous Debian un simple "apt-cache search samba" vous donnera la liste des utilitaires
pour samba.