Artisan Numérique

/système/stockage/samba/système de fichier/ Le partage de fichiers avec Samba

Samba est un outil émulant les protocoles SMB et CIFS utilisés par Microsoft pour partager divers ressources (fichiers, imprimantes, etc...). Il permet aussi de monter un contrôleur de domaine Windows complet. Dans ce tutorial, l'objectif est plus modestement de configurer un serveur Samba capable de mettre à disposition des dossiers et des imprimantes en direction des client Windows (et oui, il m''en reste encore un :-)

Configuration du serveur

Un serveur samba s'installe sous Mandriva par un urpmi samba-server, à adapter pour d'autres distribution. Les fichiers des configurations sont alors placés en /etc/samba. Celui qui nous intéresse le plus est /etc/samba/smb.conf qui contient la configuration du serveur Samba à proprement parler.

Ce fichier de configuration ressemble aux vieux .ini sous Windows. C'est un fichier texte composés de sections (ex. [global]). En dessous de chaque section, se placent des variables et leurs valeurs (ex. browsable = no). Les commentaires sont quant à eux les lignes précédées du symbole #.

La section principale, généralement en tête du fichier de configuration est nommée [global]. Suivent alors tous les paramètres principaux du serveur Samba. Pour rentrer dans le vif du sujet, voici un exemple section globale que nous allons décortiquer :

[global]
    # nommage du serveur 
    workgroup = Mon_workgroup
    netbios name = NEPHILIA
    server string = Serveur Linux/Samba

    # gestion des utilisateurs
    security = user
    encrypt passwords = yes
    username map = /etc/samba/smbusers

    # gestion des fichiers
    hide dot files = Yes
    directory mask = 0770
    create mask = 0770
    case sensitive = No
    dos charset = 850
    unix charset = UTF-8
    oplocks = No

    # gestion des logs
    log file = /var/log/samba/log.%m
    max log size = 50

    # gestion du parcours des ressources
    os level = 255
    preferred master = Yes
    domain master = Yes
    local master = yes
    wins support = Yes
    dns proxy = No
    name resolve order = lmhosts wins host bcast
    guest account = nobody
    admin users = root @adm
    timeserver = yes

    # gestion des imprimantes
    printcap name = cups
    printing = cups

    # gestion des interfaces réseau
    bind interfaces only = yes
    interfaces = eth0
    socket address = 192.168.0.128
    hosts deny = 192.168.0.13
    socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
Section 'globale' du fichier de configuration SAMBA

Nommage du serveur

Le paramètre workgroup définit le nom du group de travail associé au serveur Samba. Il peut être différent du groupe de travail définit sous Windows. En revanche, il ne doit pas contenir de symboles ni espace, et surtout, aussi idiot cela puisse paraître, il doit commencer par une majuscule !!

Le paramètre netbios name indique le nom interne du serveur utilisé par le protocole NetBios. Il doit être sans symboles ni espace et en majuscules de préférence.

Le paramètre server string est une simple description textuelle du serveur qui sera affiché à côté de son nom, sous Windows.

Gestion des utilisateurs

Le paramètre Security indique que l'on utilise les droits de l'utilisateur pour autoriser ou ceux de la ressource partagée. Ainsi, si l'on partage un dossier linux que seul l'utilisateur gaston a le droit de lire, l'utilisateur robert n'aura aucune vue sur ce partage.

Les utilisateurs Samba ne sont pas directement repris des utilisateurs Linux (malheureusement). Il faut, au cas par cas, les ajouter aux utilisateurs Samba. Pour faire simple, imaginons que l'utilisateur gaston soit un utilisateur valide sur la machine Linux. Nous allons donc ajouter gaston aux utilisateurs Samba par la commande :

rootsmbpasswd -a gaston
mot_de_passe

En saisissant ici le même mot de passe que celui de l'utilisateur Linux, l'outil va générer une entrée dans le fichier /etc/samba/smbpasswd. Ensuite, sous Windows, nous créerons un utilisateur gaston en lui donnant, lui aussi, le même mot de passe. Ainsi, lorsque gaston, sous Windows ira chercher ses partages, il y accédera directement sans saisie de mot de passe.

Gestion des fichiers

Le paramètre hide dot files va permettre de rendre invisible les fichiers commençant par un point (fichiers cachés sous linux). case sensitive quant à lui permet de mimer le comportement de Windows en ne distinguant pas les cases de caractère. Enfin les deux paramètres mask indique les droits à appliquer aux dossiers et fichiers créés sous Windows.

Les paramètres dos charse et unix charse définissent respectivement la page de caractère utilisée par un windows, ici du français (850) et l'encodage du système de fichier de Linux (ici UTF-8).

Gestion du parcours des ressources

Notre objectif est ici de configurer Samba pour être élu le plus rapidement possible "browser master" (la base de référence d'autres machines ayant elles-aussi des partages) ce qui accélère sensiblement l'affichage des partages sur les postes clients, de même que la résolution des noms de machines. Vous pouvez vous reporter à la documentation de Samba pour mieux saisir les nuances de chacun de ses paramètres mais ce qu'ils indiquent en gros c'est que Samba est 1/ Le roi du monde (os level=255), 2/ Demande une élection de roi du monde dés son lancement (preferred master) 3/ Est un serveur wins (wins support = Yes) 4/ Est un serveur d'horloge (timeserver).

L'aspect serveur Wins permet à n'importe quel Windows d'appeler le serveur samba par son nom et non plus par son IP. Pour que ceci fonctionne correctement, il est cependant nécessaire de paramétrer correctement votre serveur dhcpd en plaçant la ligne option netbios-name-servers 192.168.0.128192.168.0.128 est l'adresse IP du serveur Samba. Ainsi chaque machine Windows, lorsqu'elle recevra son adresse IP, recevra aussi l'adresse du serveur Wins qui lui est nécessaire pour résoudre les noms. L'ordre de résolution est indiqué par le paramètre name resolve order.

Gestion des interfaces réseau

Cette partie est optionnelle et permet juste d'améliorer la sécurité au niveau des interfaces réseau. Il est indiqué que l'on ne se connecte qu'aux interfaces (donc par lo, par exemple), et plus précisément à l'interface eth0. On indique aussi que les clients portant l'IP 192.168.0.13 sont interdit de séjour sur Samba.

Ajout d'un partage

L'ajout d'un partage se fait alors très simplement en ajoutant à la fin du fichier smb.conf une nouvelle section portant le nom du partage. Par exemple, si je désire partager le dossier /partages avec le nom partages, j'ajouterais la section suivante :

[partages]
    comment = Le dossier partagé pour tous
    writeable = yes
    browseable = yes
    path = /partages
    create mask = 770
Déclaration d'un partage'

writeable indique que le dossier peut être écrit (si l'utilisateur a les droits pour cela), et browseable qu'il peut être parcouru. comment est une simple indication textuelle affichée par l'explorateur de windows au côté du partage. path est le chemin du partage et create mask fonctionne comme un umask.

Il n'y a besoin de rien d'autres car nous somme en mode sécurité user (voir plus haut). Ainsi donc, un utilisateur est autoriser à manipuler le partage dans les limites de ces droits sur le dossier d'origine sous Linux.

Ajout d'une imprimante partagée

Il existe deux méthodes pour partager une imprimante CUPS via Samba. La première consiste à installer sous Windows les drivers Postscript d'Adobe. Ainsi Windows imprime en Postcript qui est le langage natif des drivers cups.

La seconde méthode consiste à ne créer qu'un "tube" entre Windows et l'imprimante, et d'utiliser sur le poste client Windows les drivers natifs de l'imprimante à utiliser. C'est la seconde méthode qui est préférée car elle permet une meilleur utilisation des capacités de l'imprimante. Pour publier ainsi toutes les imprimantes CUPS dans Samba, il suffit d'ajouter la section suivante :

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        guest ok = Yes
        printable = Yes
        print command = lpr-cups -P %p -o raw %s -r # using client side printer drivers.
        browseable = Yes
Déclaration des imprimantes CUPS

La ligne print command est le tube dont nous parlions plus haut. Elle indique à Samba d'écrire tout ce qui vient de windows, sans modification, dans l'imprimante. Il faut donc maintenant installer le bon driver sous Windows.

Publication des pilotes d'imprimante

Ici aussi, deux possibilités. La première est d'utiliser le CD du constructeur pour installer les pilotes en locale sous Windows et de les associer à l'imprimante au moment de la connection. La seconde solution, plus élégante, consiste à injecter le dit driver dans Samba de sorte à ce que tout client Windows puisse imprimer sans installer de driver.

D'un point de vue générale, Windows s'attends à trouver les drivers d'une imprimante dans un partage nommé print$ que nous devons donc ajouter à notre configuration :

[print$]
        path = /var/lib/samba/printers
        write list = @adm root
        guest ok = Yes
Déclaration de l'emplacement pour les pilotes Windows'

Nous allons maintenant utiliser n'importe quel Windows sur le réseau pour injecter dans ce partage les drivers d'une imprimante donnée. Pour cela nous devons commencer par injecter un utilisateur "root" dans samba (en mettant le même mot de passe root que la machine Linux) : ##smbpasswd -a root mot de passe root.. `

Sur la machine Windows, connectez-vous en tant qu'administrateur. Allez dans le voisinage réseau puis sur la machine Samba. Il devrait y avoir un dossier "Imprimantes et Télécopieurs". Aller dans ce dossier et faites un click-droit sur l'imprimante à paramétrer. Dans l'onglet Avancé, cliquez sur "Nouveau Pilote". Sélectionnez "Disque fourni" (important pour injecter les drivers dans le partage). Insérez votre disque de drivers, sélectionnez le et validez.

Si tout c'est bien passé, le dossier /var/lib/samba/printers devrait maintenant contenir les drivers de votre imprimante et ces derniers sont donc utilisable pour toue prochaine installation de l'imprimante partagée.

Conclusion

Comme vous le voyez, la mise en place de ces partages n'est pas bien complexe et Samba commence à être un outil plutôt ben rôdé.