Présentation de SAMBA

 

Lorsque vous utilisez un réseau hétérogène composé de machines Linux, Win95/98 et NT, il vous est nécessaire de pouvoir partager et utiliser des ressources entre les postes. Samba est un jeu d'utilitaires permettant d'accéder à tous les services fournis par NetBIOS. Vous pourrez ainsi partager les arborescences de fichiers, les imprimantes et passer des messages à travers tout le réseau. En clair, Samba est l'interprète qui fait parler UNIX en langue Microsoft.

 

Samba est distribué sous licence GNU GPL. Il utilise le jeu de commandes SMB (Server Message Block) provenant de NetBIOS (Network Basic Input/Output system).La version 2.0.0 vient juste d'être mise à disposition sur le site www.samba.org. SMB a été mis au point conjointement par Microsoft, Intel et IBM. Il s'agit d'un LAN Manager pour TCP/IP.

 

Principe de Fonctionnement

 

SMB fonctionne en architecture client/serveur. En clair, le client (esclave) demande et le serveur (maître) renvoi une réponse. Il est important de savoir qu'une machine peut-être, à la fois, cliente et serveur.

Sur la base d'un réseau TCP/IP, les clients se connectent au serveur en utilisant NetBIOS. Ensuite, ils peuvent envoyer des commandes SMB (demandes) pour recevoir les informations requises. Il existe plusieurs dialectes dans le langage de commande SMB, parmi lesquels on retrouve :

 

Variante SMB

Nom du protocole

 

PC Network Program 1.0 (PC LAN 1.0)

Microsoft Networks 1.03

Microsoft Networks 3.0

LANMAN 1.0

DOS LM1.2X002

LM1.2X002

DOS LANMAN2.1

LANMAN2.1

Windows for Workgroups 3.1a

NT LM 0.12 NT

Samba NT LAN

CIFS 1.0 NT

 

Core Protocol

Core Plus Protocol

DOS LAN Manager

LAN Manager 1.0

LAN Manager 2.0

LAN Manager 2.0

LAN Manager 2.1

LAN Manager 2.1

LAN Manager 2.1 ?

LAN Manager 1.0 ?

Manager 1.0 ?

LAN Manager 1.0

 

Avantages :

L'avantage de Samba, c'est que ce logiciel permet à des postes de travail sous environnement Microsoft d'accéder de façon totalement transparente à un serveur Linux (ou tout autre serveur Unix sur lequel Samba aurait été porté). En fait, les postes sont « persuadés » d'avoir à faire à un serveur NT alors qu'il n'en est rien.

 

Mais quel intérêt, me direz-vous ? Réponse : bénéficier des qualités de Linux, à savoir :

 

- Linux est gratuit. Combien coûte une licence de NT serveur ?

 

- Linux est peu gourmand en ressources. On considère que pour délivrer une puissance égale à un serveur NT, Linux nécessite entre 50 et 70% de ressources en moins. En d'autres termes, un serveur Linux Pentium 166 Mhz avec 64 Mo de RAM fera l'affaire là où un serveur NT nécessiterait une machine deux, voire trois fois plus puissante avec deux, voire trois fois plus de RAM. Je suis certain que vous pensez que j'exagère, pourtant c'est vrai et cela a été prouvé à de nombreuses reprises.

 

si on raisonne à l'envers, prenez une machine sous Windows NT, remplacez NT par Linux et à configuration équivalente, vous noterez un gain de vitesse de 50% lié à une diminution notable de l'occupation de la RAM et du temps CPU. Je suis certain que les développeurs Windev confrontés aux inexplicables phénomènes de dégradation des temps de réponse lors d'une installation de base HyperFile sur un réseau NT doivent être sensibles à cet argument, de même ceux qui voient leurs index corrompus chaque jour...

 

- Linux est stable. L' « uptime » (durée de fonctionnement entre deux redémarrages) d'un serveur de fichiers et d'impressions NT est au mieux (chiffre volontairement optimiste) d'un mois. Si le serveur héberge en plus des applications telles qu'un serveur Web ou un serveur Exchange, il est prudent de l'arrêter et le redémarrer au minimum tous les 15 jours.


L'uptime d'un Linux correctement configuré se mesure en mois, parfois en années, sauf défaillance matérielle...

 

Inconvénients :

Cet exposé se voulant réaliste, je tiens à souligner également les inconvénients que présente l'utilisation de Linux / Samba. Il y a de faux inconvénients et des inconvénients réels :

 

- Faux inconvénients :

 

Le décideur se dit souvent « si c'est gratuit », c'est que ce n'est pas fiable. Cette assertion est fausse, rien n'est plus fiable qu'un logiciel libre. Imaginez que quand un bug est repéré, il est signalé immédiatement sur Internet, et le plus souvent corrigé dans les 24 heures. Des logiciels tels que le serveur web Apache sont virtuellement indestructibles, Samba est dans le même cas, Linux également. Pourtant l'expérience m'a montré qu'il est extrêmement difficile de persuader un responsable qu'il a tort sur ce point.

 

Le décideur se dit encore « si je paye, j'aurai un support technique, des responsables à engueuler si ça tombe en panne, des personnes compétentes pour me dépanner ». Là encore, cet argument ne tient pas car il existe maintenant des SSII spécialisées dans l'installation et la maintenance de logiciels libres. On paye les compétences, pas les licences. Et puis relisez le paragraphe précédent, de toute façon, les logiciels libres sont plus stables que la plupart des logiciels commerciaux.

- Inconvénients réels :

 

L'installation et l'administration d'un serveur Linux nécessitent de réelles compétences, et il paraît peu raisonnable de confier cela à une personne non formée.

 

Il est déraisonnable aussi (expérience vécue chez un client !)de confier l'administration d'un réseau NT ou Novell à une secrétaire après lui avoir payé deux jours de formation, je sais... Mais quand même, administrer un serveur Linux ne s'improvise pas. Cela dit, une fois l'installation et la configuration initiale réalisées, il n'y a pas grand-chose à faire, et la supervision peut facilement être réalisées à distance par Internet ou par modem.

 

Un autre inconvénient réel est qu'il est impossible (ou du moins irréaliste dans un contexte professionnel sur une machine en production) de faire tourner des exécutables Microsoft sur un serveur Linux. Cela signifie que si le serveur de l'entreprise fait à la fois office de serveur de fichiers et de serveur d'applications, la solution Linux/Samba est inadaptée, sauf à acquérir un second serveur dédié.

 

Installation de Samba

 

La première chose à faire, est de s'assurer que SAMBA est bien installé sur votre poste. Pour cela, vérifiez que les démons smbd et nmbd sont bien chargés grâce à la commande /etc/rc.d/init.d/smb status. Si ce n'est pas le cas, installez SAMBA (à partir du dossier RPMS du CDROM de votre distribution, lancez : rpm -ivh samba*).

 

Configuration de Samba

 

Le fichier de configuration de SAMBA est : /etc/smb.conf. Avant de le modifier, pensez à en faire une sauvegarde. Voici quelques uns des paramètres importants que comporte ce fichier :

Le fichier est structuré en sections pour en faciliter la lecture.

Chaque section, débute avec son nom entre crochets [ ] et se termine avec le début d'une autre section ou la fin du fichier.

Les lignes de commentaire débutent avec le symbole # (dièse) ou ; (point-virgule).

Dans chaque section, des valeurs sont attribuées à des paramètres avec la syntaxe paramètre = valeur. De manière générale, les sections sont les services et le contenu de la section représente les paramètres ou les propriétés de ce service.

 

Cependant, trois sections sont utilisées de manière différente :

 

[global] définit les paramètres pour l'ensemble du

serveur.

[homes] permet à un utilisateur de la machine Linux d'accéder à son répertoire de travail depuis un poste sous Windows.

[printers] définit les paramètres en rapport avec la gestion des imprimantes pour l'ensemble du serveur.

 

- Section [global]

Workgroup = Workgroup : indiquez le même nom que le groupe de travail de votre autre Workstation

netbios name = nom_netbios : nom de la machine sous laquelle elle apparaîtra dans l’explorateur Windows

share modes = yes : accès multi-utilisateurs

hosts allow = x.x.x 127 : permet d'autoriser en accès uniquement le réseau x.x.x.0 et l'interface de loopback.

 

- Section [homes]

Définit l'accès au répertoire personnel d'un utilisateur

comment = Home Directories

browsable = yes

writeable = yes (on peut modifier sont contenu)

create mode = 0777 (droit d’accès complet aux fichiers)

 

- Section [public]

Zone d'accès publique ici exemple pour partager un répertoire

 

comment = nom_du_répertoire vu dans le voisinage réseau

path = /home/samba (répertoire partagé)

public = yes (accessible par tous)

writeable = yes (on peut modifier sont contenu)

create mode = 0777 (droit d’accès complet aux fichiers)

 

Attention toutefois, si dans votre zone vous utilisez le paramètre

username = user, Windows refusera l'authentification par mot de passe non encryptés. Vous devez alors préciser :

 

- Section [global]

encrypted password = yes

smb password file = /etc/smbpasswd

 

Et mettre à jour votre fichier smbpasswd à l'aide de la commande :

smbpasswd -a user

 

Le principe est le même pour les imprimantes, lecteurs de CD, les applications...

Pour que vos modifications soient prisent en compte lancez :

/etc/rc.d/init.d/smb stop ( Pour arrêter le démon SAMBA )

/etc/rc.d/init.d/smb start ( Pour démarrer le démon SAMBA )

/etc/rc.d/init.d/smb restart (Pour redémarrer le démon SAMBA )

 

Pour lancer les démons au démarrage, lancez ntsysv et cochez [*] smb.

 

Smbmount : monter sous Linux des répertoires MS-Windows

Smbmount permet de monter (comme par NFS) des répertoires MS-Windows sur l'arborescence Linux et de les manipuler le plus naturellement du monde.

$smbmount //nom_serveur_windows/nom_ressource /mnt -f 777

smbmount utilise les '/' à la différence de smbclient.

Il est nécessaire de rajouter une entrée dans le fichier /etc/hosts pour nom_serveur_windows avec son adresse IP, pour que smbmount puisse marcher correctement.

Enfin, il est nécessaire de passer quelques paramètres pour assurer la compatibilité des droits de MS-Windows avec les droits Unix. La clause -f 777 met tous les fichiers en lecture-écriture pour tout le monde.
On peut bien sûr la combiner avec l'option -u uid et -g gid qui permettrons de définir les droits précis des fichiers de la ressource pour pallier les carences de MS-Windows dans ce domaine.

 

Exemples de connections

 

Exemple de connexion sur une machine Windows avec la commande smbclient.

 

 

 

Exemple de montage d'un disque distant Windows avec la commande smbmount.

 

 

 

Exemple de montage d'un disque distant Linux sous Windows (ici les propriétés de l'ordinateur distant).

 

 

 

Exemple de montage d'un disque distant Linux sous Windows : contenu du disque Linux(ici la racine : à ne jamais laisser comme cela pour une question de sécurité).

 

 

INDEX

 

NetBIOS : SMB utilise NetBIOS. Il s'agit historiquement du premier protocole réseau utilisé pour partager des fichiers entre micros. Il a été conçu par IBM et a trouvé sa première utilisation avec Windows for Worksgroup de Microsoft. NetBIOS existe sur trames 802.3 (natif) ou encapsulé (enrobé/emballé) dans les trames TCP/IP comme dans le cas de Samba.

Le protocole utilise un fonctionnement peu courant, où chaque machine possède un nom et tient à jour une table avec les noms et les adresses des autres machines. La couche ISO/OSI N°3 (réseau) n'étant pas utilisé, le protocole n'est pas routable. Il faut donc utiliser la diffusion broacasts TCP/IP dans le cas d'une encapsulation.

 

Domaine : Pour regrouper les utilisateurs postes de travail, on utilise un domaine. Un domaine est une entité logique. Elle n'a pas d'existence physique en terme de réseau. Le domaine entier est désigné par un nom. Celui-ci sera unique pour toutes les machines du domaine.

 

PDC ou serveur primaire : Il s'agit d'un serveur assurant la gestion de la table globale des utilisateurs. Les autres machines du domaine le consultent pour mettre à jour leur propre table.

 

BDC ou serveur backup : C'est un serveur primaire de secours. En cas de problème, il deviendra serveur primaire. Sa tâche est donc de conserver (à jour) une copie de la base des utilisateurs (table).

 

Serveur membre : Il s'agit d'un serveur, dans le sens où il tient à jour sa copie de la base des utilisateurs. La différence provient du fait qu'il ne peut pas remplacer le serveur primaire.

 

Ressource IPC : LAN Manager peut supporter les applications dites “réparties”. Une ressource spéciale IPC$ existe, permettant d'utiliser la communication inter-processus .

 

Nom de partage : Chaque ressource porte un nom unique sur chaque serveur. Attention, s'il existe plusieurs serveurs, il faut utiliser le Nom réseau .

 

Nom réseau : Le nom complet d'une ressource est composé du nom du serveur et du nom de la ressource. On parle alors du nom réseau de la ressource. Exemple : \\Gravage\cgrav est la ressource cgrav de la machine Gravage.

 

 

 

 

Page précédente