SAMBA


Introduction

Un des principaux intérêts des réseaux est la possibilité de partager des fichiers.

Il existe des protocoles (notamment le FTP, File Transfert Protocol) permettant de transférer des fichiers à l'aide de commandes à travers un réseau hétérogène (constitué de machines de types et de systèmes d'exploitation différents). Toutefois, ce type de manipulation est assez fastidieux. Ainsi, les réseaux Microsoft Windows (actuellement très répandus dans les réseaux locaux) offrent une manière totalement transparente de partager des fichiers, en permettant notamment la copie par simple glisser-déposer.
Cependant, ce type de réseau ne permet à la base qu'un partage de fichiers entre machines fonctionnant avec un système Microsoft Windows ou OS/2. Ainsi, si vous possèdez une machine sous linux, il existe une solution: utiliser Samba. D'autre part, Samba permet de définir des niveaux d'accès très pointu très proche de celui proposé par un serveur Windows NT. Samba est donc une alternative économique et robuste à un recours à un serveur Windows NT.

Qu'est-ce que Samba ?

Samba (http://www.samba.org/) est un serveur de fichiers pour Linux (en licence GNU GPL, donc libre) compatible avec les réseaux Microsoft Windows. C'est-à-dire qu'il permet de partager les fichiers et les imprimantes d'un serveur linux avec les ordinateurs d'un réseau microsoft windows, et de manière totalement transparente: Linux passe pour un serveur Windows NT aux "yeux" des clients Windows. Les clients pour Microsoft Windows deviennent alors en quelque sorte des clients Linux...

Comment fonctionne Samba ?

Le protocole de communication permettant cette communication entre Windows est Linux s'appelle SMB (Server Message Block). Mis au point par Microsoft en 1987, en reprenant un concept mis au point par IBM en 1985 (NetBIOS), ce protocole s'appuie sur NetBIOS (ainsi que TCP/IP). L'intérêt de TCP/IP provient du fait qu'il a été très largement adopté. Ainsi TCP/IP est déjà implémenté sur la plupart des systèmes d'exploitation (Unix, Linux, AmigaOS, MacOS, OS/2, ...). selon le schéma suivant :

Applications
SMB
NetBIOS
TCP/IP NetBEUI
IPX/SPX
Pilote Réseau

Architecture de Samba

Samba est constitué d'un serveur et d'un client, ainsi que de quelques outils permettant de réaliser des services pratiques ou bien de tester la configuration.

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.

L'installation (contrairement à la configuration) 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-2.0.6-x.i386.rpm
rpm -ivh samba-client-2.0.6-x.i386.rpm
ou bien de façon plus générale:
rpm -ivh samba-*.rpm

Premier 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
On lui préfèrera les deux commandes suivantes:
/etc/rc.d/init.d/smb stop
/etc/rc.d/init.d/smb start

Configuration de Samba

La configuration de Samba est effectuée par l'intermédiaire d'un fichier de configuration unique: smb.conf. Ce fichier est située dans le répertoire /usr/local/samba/lib.

Ce fichier décrit les ressources que l'on désire partager, ainsi que les permissions/restrictions qui leur sont accosiée. Le fichier smb.conf se découpe selon des rubriques (chacune référencé par une ligne contenant le nom de la section entre crochets) 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:

Section [global]

Voici un exemple de section [global]:

[global]
    # même nom de groupe que celui sous Windows (Voisinage réseau)
workgroup = UNDERTAKER

    # aucun compte invité 
guest account = nobody ; 

    # accès multi-utilisateur 
share modes = yes ; 

    # Adresse IP de la carte réseau du serveur 
    # et masque de sous-réseau
interfaces = 10.194.2.100/255.255.255.0 

    # emplacement du fichier printcap (imprimantes sur le serveur Linux)
printcap = /etc/printcap
    # partage de toutes les imprimantes définies dans printcap
load printers = yes

    # fichier journal de Samba
log level = 1
log file = /var/log/samba/log.%m

    # mode de sécurité : (user / share / server)
security = user

    # restreindre l'accès a certains sous-réseaux
hosts allow = 15.144.    127.
    # empecher l'accès à certaines machines
hosts allow = 15.144.  EXCEPT 155.144.179.2

Partage du répertoire personnel

La section [homes] permet de définir l'accès au répertoire personnel de chaque utilisateur. Voici un exemple de section:

[HOMES]
# commentaire visible depuis le voisinage reseau
comment =Répertoire personnel 

# affichage de la ressource pour tous
browseable = no 

# possibilité d'écrire sur la ressource
writable = yes 

create mask = 0750 

Partager un répertoire quelconque

Il est possible de définir une accès personnalisé à n'importe quel répertoire de la machine en céant une section portant le nom que le veut donner à la ressource. Celui-ci contientdra entre autres un paramètre path donnant le chemin d'accès à la ressource.

Voici un exemple de section personnalisée:

[CCM]
# commentaire visible depuis le voisinage reseau
comment = Répertoire Ca Marche

# chemin d'acces a la ressource
path = /home/ccm

# affichage de la ressource pour tous
browseable = no 

# chemin d'acces a la ressource
public = no

# utilisateur autorise a acceder a la ressource
user = jeff,meandus,tittom

# possibilité d'écrire sur la ressource
writable = yes 

create mask = 0750 

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]
# commentaire visible depuis le voisinage reseau
comment = lecteur de CD-ROM

# chemin d'accès au lecteur
path = /mnt/cdrom

# accessible à tous
public = yes

# impossibilité d'écrire sur la ressource
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

Accéder à une ressource Samba sous Linux

Le client Samba (smbclient) permet de fournir une interface en ligne de commande pour accéder aux ressources Samba à partir d'une machine de type Unix.

smbclient permet en premier lieu de vérifier l'existence d'une serveur Samba sur le réseau et de lister les ressources qu'il partage grâce à la commande:

smbclient nom_serveur_smb

Une fois les ressources identifiées, il est possible d'accèder à chacune d'entre elles par la commande:

smbclient \\\nom_serveur_smb\\ressource -U nom_utilisateur
Un mot de passe devrait être demandé à l'utilisateur. Il suffit ensuite d'envoyer des commandes FTP afin d'envoyer/recevoir des fichiers ou bien de parcourir les répertoires de la ressource.

L'accès à une imprimante se fait par la commande

smbclient \\\nom_serveur_smb\\ressource -P

Envoyer un message

Le client Samba permet aussi d'envoyer des messages sur un client LanManager (pour peu que la machine distante permette de gérer ce type de message, comme par exemple avec WinPopUp). La syntaxe d'envoi d'un message (de moins de 1600 octets) est la suivante:

smbclient -M nom_de_la_machine
Lorsque vous avez fini d'écrire le message, il faut appuyer simultanément sur Ctrl+D.

Monter une ressource Samba partagée

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

Pour monter une ressource la syntaxe est la suivante:

smbmount //nom_serveur_smb /point_de_montage

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

smbumount /point_de_montage