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 GtkSamba ou SambaConfig 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 = adressesIP 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 connections 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 maxi 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*authentication*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'optenir de meilleures performances réseau. Consultez le fichier speed.txt livré avec la documentation de samba pour connaître d'autres astuces.
interfaces = adressesIP 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 = /homes/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'interê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.