Samba : le fichier de configuration

Le mois précédent, nous avons vu le fonctionnement général des partages de ressources SMB. Rappelons avant de commencer cet article sur le fichier de configuration que Samba permet à un système Unix de voir et de partager des ressources à la mode Windows.

Le fichier smb.conf est le seul fichier de configuration de Samba. C'est à cet endroit que toutes les caractéristiques de votre système SMB vont être paramétrées. Il existe des utilitaires comme Gnosamba ou Samba Config qui permettent de modifier ou créer un fichier de configuration de manière conviviale. Cependant, il est absolument nécessaire de connaître la syntaxe du fichier, ne serait-ce qu'en cas de gros problème.

Le fichier est organisé en plusieurs sections, chacune d'elles ayant un rôle particulier à jouer. Les commentaires débutent toujours avec un symbole point-virgule (;) ou dièse (#). Toutes lignes commençant par un de ces symboles ne seront pas interprétées par Samba. Les sections sont délimitées par un nom spécifié entre crochets. Elles se terminent par la déclaration d'une nouvelle section ou la fin du fichier.

La première section détermine les paramètres généraux. Celle-ci est appelée [global] et regroupe les paramètres suivants :

workgroup = nomdugroupe
Permet de spécifier le nom du groupe de travail.

server string = nomduserveur
Spécifie l'identification de la machine, habituellement quelque chose comme Serveur Samba.

hosts allow = adresses IP
Cette variable est très importante pour la sécurité du réseau, elle permet de définir quelles adresses IP sont autorisées à contacter le serveur Samba. Exemple : 192.168.0. 192.168.5. 127. autorise les machines ayant une adresse IP du réseau local 192.168.0.xxx et 192.168.5.xxx. 127. permet d'autoriser les connexions sur l'adresse loopback à des fins de test.

printcap name = /etc/printcap
load printers = yes

Ces deux variables vous permettent de charger automatiquement les imprimantes de votre système plutôt que de les configurer individuellement.

printing = système
Permet de spécifier, si nécessaire, le système de gestion d'impression à utiliser. Les choix possibles sont bsd, sysv, plp, lprng, aix, hpux ou qnx.

guest account = login
Vous permettra de spécifier le nom d'un utilisateur invité. Si vous utilisez cette option, il est impératif de l'ajouter au système. Sinon l'utilisateur nobody est utilisé par défaut.

log file = /chemin/log.%m
Permet de créer un fichier journal par machine plutôt que global. N'hésitez pas à utiliser cette option, la lecture des journaux n'en sera que plus facile.

Max log size = taille
Spécifie la taille maximum des fichiers journaux en Ko.

security = type
Permet de choisir, à l'instar de Windows, une gestion de sécurité par utilisateur (user) ou par serveur (server).

password server = nomdeserveur
Est une option utilisable avec la gestion de sécurité par le serveur. On précise donc un nom de serveur.

password level = et user level =
Permettent de spécifier une taille minimum pour le mot de passe et le nom d'utilisateur.

encrypt passwords = yes
Active le cryptage du mot de passe. Notez la présence du S dans le nom de variable, souvent source d'erreurs.

smb passwd file = /etc/smbpasswd
Permet de spécifier un fichier de mots de passe cryptés.

unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = * New * UNIX * password * %n\n
* ReType * new * UNIX * password * %n\n * passwd: * all * authentification * tokens * updated * successfully *

Ces variables permettent d'autoriser une synchronisation des mots de passe SMB avec ceux de la machine Unix. Attention, si vous désirez uniquement autoriser le changement de mot de passe SMB, vous n'avez pas besoin d'activer ces variables ! Un mauvais choix ici peut s'avérer catastrophique pour votre politique de sécurisation. Vous voilà prévenu.

username map = fichier
Permet de spécifier un fichier d'utilisateurs différents de celui du système.

include = /chemin/smb.conf %m
Permet d'intégrer des paramètres supplémentaires en fonction du nom NetBIOS du demandeur. %m représente le nom NetBIOS.

socket options = TCP_NODELAY
Permet habituellement d'obtenir de meilleures performances réseau. Consultez le fichier speed.txt livré avec la documentation de Samba pour connaître d'autres astuces.

interfaces = adresses IP
Spécifie les adresses IP des interfaces réseau dans le cas d'une utilisation de plusieurs périphériques.

local master = no
Permet d'exclure le serveur Samba afin qu'il ne devienne pas un serveur membre (voir LMF 4)

os level = chiffre
Permet de définir le niveau de compétence du serveur dans l'élection sur serveur primaire. Cette variable est inutile si local master = no.

domain master = yes
Spécifie que le serveur Samba peut être un serveur de domaine et collecter des informations pour tenir à jour sa propre table de sous-réseau. N'activez pas cette option si votre réseau possède déjà une machine NT qui fait ce travail.

preferred master = yes
Déclenche une élection de serveurs primaires au démarrage. Ceci a pour effet de grossir les chances du serveur Samba d'être élu.

domain controller = nomdeserveur
Indique le nom d'une machine NT jouant le rôle de serveur de domaine primaire.

name resolve order = wins lmhosts bcast
Indique l'ordre dans lequel se fera la résolution des noms et des adresses IP. Ceci est principalement un paramètre visant à optimiser la vitesse du système.

wins support = yes
Active la résolution WINS (Windows Internet Name Serving)

dns proxy = yes
Demande à Samba d'utiliser la fonction nslookups pour la résolution des noms NetBIOS.

preserve case = no
Désactive ou active la préservation de la casse des caractères.

default case = lower
Spécifie la casse par défaut comme minuscule (à l'opposé de upper pour majuscule)

case sensitive = no
Désactive la gestion de la casse des caractères. Prenez garde en utilisant cette option. Elle peut vous faire tourner en rond un bon bout de temps.

La section suivante est [homes]. Elle comprend trois variables :

comment = Home Directories
Permet d'ajouter un commentaire ou un très court descriptif.

browseable = no
N'autorise pas le parcours du répertoire.

writable = yes
Autorise l'écriture dans le répertoire.

Ces deux options peuvent sembler contradictoire. Mais il est tout à fait possible d'écrire dans un répertoire sans pour autant avoir la permission d'en lire le contenu. Les autres sections déterminent les ressources susceptibles d'être partagées. Exemple : une ressource disque appelée toto sera déclarée comme suit :

[toto]
comment = essai de partage
path = /home/samba/toto
public = yes
writable = yes
printable = no
write list = @totogrp

L'emplacement physique sur la machine Unix sera /home/samba/toto. Il s'agit d'un répertoire public non imprimable (ce n'est pas une ressource d'impression). Il peut être parcouru et lu par tous les utilisateurs, mais la permission d'écriture se limite au groupe totogrp.

Dans le cas d'une imprimante [priprime] la section sera

[priprime]
comment = Imprimante de test
valid users = nicolas
path = /home/nicolas
printer = nicolas_printer
public = no
writable = no
printable = yes

Ici, la ressource est imprimable, mais non inscriptible. Cette ressource est réservée à l'utilisateur nicolas et n'est donc pas public. Dernier point, le chemin de la ressource est placé dans le répertoire personnel de l'utilisateur d'où l'intérêt de pouvoir y écrire sans pour autant avoir la permission de le parcourir. Notre parcours du fichier smb.conf est à présent terminé.

Nous venons de voir les options les plus importantes, mais il en existe bien d'autres. Pour toutes les connaître, tapez man smb.conf. Vous pouvez également lire l'importante documentation fournie avec Samba et habituellement placée dans /usr/doc.

Linux Magazine France n° 5 - Avril 99

How-to français sur SMB