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.
Samba (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...
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 |
|
IPX/SPX |
Pilote Réseau |
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.
- Le serveur est constitué de deux applications (appelées démons):
- smbd, noyau du serveur, fournissant les services d'authentification et
d'accès aux ressources
- nmbd, permettant de montrer les services offerts par Samba (affichage des serveurs Samba
dans le voisinage réseau, ...)
- le client: smbclient est un client pour linux fournissant une interface permettant
de transférer des fichiers, accèder à des imprimantes
- smbtar: permettant d'effectuer un transfert de ou vers un fichier TAR sous linux
- testparm vérifiant la syntaxe du fichier smb.conf, le fichier
de configuration 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
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
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:
- La section [global] définit des paramètre 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
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
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
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 contiendra 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
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
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
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
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.
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
|