Mettre en oeuvre d'un serveur Samba (partages Windows)
Le 2 janvier 2007, à 20:47 par Ulhume...

Samba est un outil émulant les protocols SMB/CIFS utilisés par Microsoft pour partager divers resources (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 rapidement des dossiers et des imprimantes à des client Windows.

Configuration du serveur

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

Ce fichier de configuration ressemble aux vieux fichier .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]. Suit tous les paramétres principaux du serveur Samba. Pour rentrer dans le vif du sujet, voici une section globale que nous allons décortiquer :

[global]
    # nommage du serveur
    workgroup = Mon_workgroup
    netbios name = SERVERSAMBA
    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

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 non l'accès à une ressource. Ainsi, si l'on partage un dossier linux que seul l'utilisateur toto a le droit de lire, l'utilisateur tutu 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 toto soit un utilisateur valide sur la machine Linux. Nous allors donc ajouter toto aux utilisateurs Samba par la commande

smbpasswd -a toto

En saisissant ici le même mot de passe que celui de l'utilisateur Linux. Ensuite, sous Windows, nous créerons un utilisateur toto en lui donnant, lui aussi, le même mot de passe. Ainsi, lorsque toto, 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 comporterment 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 deux paramétre ayant trait à l'encodage définissent le page de caractère utilisé par un windows français (850) et l'encodage du système de fichier de Linux (ici UTF-8 mais cela peut-être aussi ISO-8859-15).

Gestion du parcours des ressources

C'est un point assez important du paramétrage. En effet, cela permet à Samba d'être élu le plus rapidement possible "browser master", c'est à dire, qu'il sera la base de référence des machines ayant des partages. Dans notre cas, seule une machine partage, c'est Samba. Cependant, bien paramétrer cet aspect améliore notablement la rapidité d'affichage des partages disponibles sur le serveur Samba et 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 machin 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 optionelle et permet juste d'améliorer et de gérer 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écisement à 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 /mesFichiers avec le nom mesFichiers, j'ajouterais la section suivante :

[mesFichiers]
    writeable = yes
    path = /mesFichiers

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 = No

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.

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$. Nous allons donc utiliser Windows pour injecter dans ce partage les drivers d'une imprimante donnée.

Tout d'abord il faut ajouter dans /etc/samba/smb.conf le partage qui va recevoir les drivers :

[print$]
        path = /var/lib/samba/printers
        write list = @adm root
        guest ok = Yes

Ensuite, ajouter l'utilisateur root à samba (en mettant le même mot de passe !)

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

Commentaires

Répondre

Le contenu de ce champ est gardé secret et ne sera pas montré publiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.

Plus d'informations sur les options de formatage

Connexion utilisateur
Les derniers bavardages...