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