Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Ceci est une ancienne révision du document !


smb.conf : le fichier de configuration de Samba

Le fichier /etc/samba/smb.conf est le seul fichier de configuration de Samba. Ce fichier est composé de sections (dont le nom est entre crochets) :

? [global]
: paramètres généraux et les paramètres par défaut des différents partages
? [printers] et [print$]
: spécifiques au partage d'imprimantes,
? [homes]
: Partage du répertoire personnel d'un utilisateur (son répertoire $HOME)
: Il apparaîtra dans la liste des partages avec le nom d'utilisateur du client (s'il est identifié),
? [le_nom_d'un_partage]
: Pour chaque partage

Les commentaires débutent par un point-virgule (;) ou un dièse (#). Toutes lignes commençant par un de ces symboles ne seront pas interprétées par Samba.

[global] = paramètres généraux

? workgroup
: groupe de travail dans lequel votre serveur apparaîtra lorsqu'il sera interrogé par les clients.
: Note that this parameter also controls the Domain name used with the security = domain setting.
: __Par défaut__: **workgroup = WORKGROUP**
: Exemple : workgroup = MYGROUP
? log file
: Nom du fichier journal Samba (également appelé fichier de débogage).
: Pas de valeur par défaut
: Exemple : log file = /usr/local/samba/var/log.%m
:           un fichier journal par machine plutôt qu'un fichier global.
:           Facilite la lecture des journaux.
? max log size
: taille maximale du fichier journal en kilo-octets
: Si la taille est dépassée, Samba renomme le fichier en ajoutant une extension .old
: Une taille de 0 signifie aucune limite.
: __Par défaut__: **max log size = 5000**
: Exemple : max log size = 1000
? logging
: Ce paramètre configure les backends de journalisation
: Plusieurs backends peuvent être spécifiés en même temps, avec différents niveaux de journalisation pour chaque backend.
: Le paramètre est une liste de backends, où chaque backend est spécifié comme backend[:option][@loglevel].
: Le paramètre 'option' peut être utilisé pour transmettre des options spécifiques au backend.
: Le niveau de journalisation d'un backend est facultatif, s'il n'est pas défini pour un backend, tous les messages sont envoyés à ce backend.
: Le niveau de journalisation des paramètres détermine les niveaux de journalisation globaux, tandis que les niveaux de journalisation spécifiés ici définissent ce qui est envoyé aux différents backends.
: Lorsque la journalisation est définie, elle remplace les paramètres syslog et syslog uniquement.
: Certains backends ne sont disponibles que lorsque Samba a été compilé avec les bibliothèques supplémentaires.
: Liste des backends de journalisation :
  : - syslog
  : - file
  : - systemd
  : - lttng
  : - gpfs
  : - ringbuf :
    : Le backend ringbuf prend un argument facultatif **ringbuf:size=NBYTES** pour modifier la taille de la mémoire tampon utilisée, la valeur par défaut est de 1 Mo
: __Par défaut__: **logging =**
: Exemple: logging = syslog@1 file
? panic action
: option de développement qui permet d'appeler une commande système lorsque smbd plante.
: Généralement utilisé pour attirer l'attention sur un problème qui est survenu.
: __Par défaut__:  **panic action =**
: Exemple: panic action = "/bin/sleep 90000"
? server role
: Mode de fonctionnement du serveur Samba
: __Par défaut__: server role = auto -> Samba fonctionne selon le paramètre de sécurité ou s'il n'est pas spécifié comme un simple serveur de fichiers qui n'est connecté à aucun domaine.
: Les alternatives sont server role = standalone ou server role = member server, qui relie Samba à un domaine Windows, ainsi que server role = domain controller, qui exécute Samba en tant que contrôleur de domaine Windows.
: Utilisez server role = standalone et map to guest pour configurer des partages sans mot de passe (partages invités).
: SERVER ROLE = AUTO
  : Valeur par défaut de server role, oblige Samba à consulter le paramètre security (s'il est défini) pour déterminer server role
: SERVER ROLE = STANDALONE
  : Si la sécurité n'est pas non plus spécifiée, il s'agit du paramètre de sécurité par défaut dans Samba.If security is also not specified, this is the default security setting in Samba. In standalone operation, a client must first "log-on" with a valid username and password (which can be mapped using the username map parameter) stored on this machine. Encrypted passwords (see the encrypted passwords parameter) are by default used in this security mode. Parameters such as user and guest only if set are then applied and may change the UNIX user to use on this connection, but only after the user has been successfully authenticated.
         SERVER ROLE = MEMBER SERVER
         This mode will only work correctly if net(8) has been used to add
         this machine into a Windows Domain. It expects the encrypted
         passwords parameter to be set to yes. In this mode Samba will try
         to validate the username/password by passing it to a Windows or
         Samba Domain Controller, in exactly the same way that a Windows
         Server would do.
         Note that a valid UNIX user must still exist as well as the account
         on the Domain Controller to allow Samba to have a valid UNIX
         account to map file access to. Winbind can provide this.
         SERVER ROLE = CLASSIC PRIMARY DOMAIN CONTROLLER
         This mode of operation runs a classic Samba primary domain
         controller, providing domain logon services to Windows and Samba
         clients of an NT4-like domain. Clients must be joined to the domain
         to create a secure, trusted path across the network. There must be
         only one PDC per NetBIOS scope (typcially a broadcast network or
         clients served by a single WINS server).
         SERVER ROLE = CLASSIC BACKUP DOMAIN CONTROLLER
         This mode of operation runs a classic Samba backup domain
         controller, providing domain logon services to Windows and Samba
         clients of an NT4-like domain. As a BDC, this allows multiple Samba
         servers to provide redundant logon services to a single NetBIOS
         scope.
         SERVER ROLE = ACTIVE DIRECTORY DOMAIN CONTROLLER
         This mode of operation runs Samba as an active directory domain
         controller, providing domain logon services to Windows and Samba
         clients of the domain. This role requires special configuration,
         see the Samba4 HOWTO
         Default: server role = AUTO
         Example: server role = ACTIVE DIRECTORY DOMAIN CONTROLLER
? guest ok = yes/no
: (synonyme : public)
? server string = nomduserveur
: identification de la machine (habituellement quelque chose comme //Serveur Samba//)
? hosts allow = adresses IP
: variable très importante pour la sécurité du réseau : définit les adresses IP 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 permettent de charger automatiquement les imprimantes du système au lieu de les configurer individuellement.
? printing = système
: système de gestion d'impression à utiliser. Les choix possibles sont **bsd**, **sysv**, **plp**, **lprng**, **aix**, **hpux** ou **qnx**.
? guest account = login
: nom d'un utilisateur invité. Il est impératif de l'ajouter au système. Sinon, l'utilisateur **nobody** est utilisé par défaut.
? security = type
: gestion de la sécurité :
  * par utilisateur (user)
  * ou par serveur (server).
? password server = nomdeserveur
: avec la gestion de sécurité par le serveur : précise un nom de serveur.
? password level =
? user level =
: taille minimum pour le mot de passe et le nom d'utilisateur.
? encrypt passwords = yes
: Active le cryptage du mot de passe. Ne pas oublier le **s** dans le nom de variable, souvent source d'erreurs.
? smb passwd file = /etc/smbpasswd
: 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 autorisent une synchronisation des mots de passe SMB avec ceux de la machine Unix
: Attention, c'est inutile si on veut seulement autoriser le changement de mot de passe SMB. Un mauvais choix ici peut s'avérer catastrophique pour la politique de sécurisation.
? username map = fichier
: spécifie un fichier d'utilisateurs différents de celui du système.
? include = /chemin/smb.conf %m
: intègre des paramètres supplémentaires en fonction du nom NetBIOS du demandeur. %m représente le nom NetBIOS.
? socket options = TCP_NODELAY
: Améliore souvent les performances réseau. D'autres astuces dans le fichier speed.txt livré avec la documentation de Samba
? interfaces = adresses IP
: adresses IP des interfaces réseau en cas d'utilisation de plusieurs périphériques.
? local master = no
: exclut le serveur Samba pour qu'il ne devienne pas un serveur membre (voir LMF 4)
? os level = chiffre
: niveau de compétence du serveur dans l'élection sur serveur primaire. inutile si local master = no.
? domain master = yes
: le serveur Samba peut être serveur de domaine et collecter des informations pour tenir à jour sa propre table de sous-réseau. A ne pas activer si le 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 -> augmente les chances du serveur Samba d'être élu.
? domain controller = nomdeserveur
: nom d'une machine NT qui joue le rôle de serveur de domaine primaire.
? name resolve order = wins lmhosts bcast
: ordre dans lequel se fera la résolution des noms et des adresses IP. Ce paramètre vise à 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
: casse par défaut : minuscule (à l'opposé de upper pour majuscule)
? case sensitive = no
: Désactive la gestion de la casse des caractères.

[homes]

? comment = Home Directories
: commentaire ou très court descriptif.
? browseable = no
: Interdit le parcours du répertoire.
? writable = yes
: Autorise l'écriture dans le répertoire.

Autres :

? guest ok = yes/no
: (synonyme : public)
? force user = yes/no
: (synonyme : public)

Autres sections

Les autres sections déterminent les ressources susceptibles d'être partagées.

Exemple 1

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
  • Emplacement physique sur la machine Unix : /home/samba/toto.
  • Répertoire public non imprimable (ce n'est pas une ressource d'impression).
  • Peut être parcouru et lu par tous les utilisateurs,
  • Permission d'écriture limitée au groupe totogrp.

Exemple 2

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.

Conclusion

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.

Voir aussi