Product SiteDocumentation Site

11.5. Partage Windows avec Samba

Samba est une suite d'outils qui permettent de gérer le protocole SMB (aussi appelé « CIFS ») sous Linux. Ce dernier est employé par Windows pour accéder aux partages réseau et aux imprimantes partagées.
Samba sait également jouer le rôle de contrôleur de domaine Windows. C'est un outil extraordinaire pour assurer une cohabitation parfaite entre les serveurs sous Linux et les machines de bureautique encore sous Windows.

11.5.1. Samba en serveur

Le paquet Debian samba contient les deux principaux serveurs de Samba 4 (smbd et nmbd).

11.5.1.1. Configuration avec debconf

Le paquet met en place une configuration minimale en posant quelques questions au cours de l'installation initiale. Il est vraiment recommandé de l'adapter en lançant la commande dpkg-reconfigure samba-common.
La première information nécessaire est le nom du groupe de travail auquel le serveur Samba va appartenir (la réponse est FALCOTNET dans le cas de Falcot).
Le paquet propose également d'identifier le serveur WINS grâce aux informations fournies par le démon DHCP. Les administrateurs de Falcot ont refusé cette option, puisque leur intention était d'employer Samba pour jouer aussi le rôle de serveur WINS !

11.5.1.2. Configuration manuelle

11.5.1.2.1. Modifications à smb.conf
Pour adapter le serveur aux besoins de Falcot, il faut modifier d'autres options dans le fichier de configuration de Samba, /etc/samba/smb.conf. Les extraits ci-dessous résument les changements effectués au sein de la section [global].
[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = FALCOTNET

# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
   wins support = yes 1

[...]

####### Authentication #######

# Server role. Defines in which mode Samba will operate. Possible
# values are "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller". 
#
# Most people will want "standalone sever" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
   server role = standalone server

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server.
   security = user 2

[...]

1

Indique que Samba doit jouer le rôle de serveur de noms Netbios (Wins) pour le réseau local.

2

C'est la valeur par défaut de ce paramètre. Comme il est central à la configuration de Samba, il est toutefois raisonnable de le renseigner de manière explicite. Chaque utilisateur doit s'authentifier avant de pouvoir accéder au moindre partage.
11.5.1.2.2. Ajout des utilisateurs
Chaque utilisateur de Samba ayant besoin d'un compte sur le serveur, il faut créer les comptes Unix puis enregistrer chaque utilisateur dans la base de données de Samba. La création des comptes Unix se réalise tout à fait normalement (avec la commande adduser par exemple).
L'ajout d'un utilisateur existant dans la base de données de Samba s'effectue par la commande smbpasswd -a utilisateur, qui demande le mot de passe interactivement.
On supprime un utilisateur avec la commande smbpasswd -x utilisateur. Un compte Samba peut n'être que gelé quelque temps avec la commande smbpasswd -d utilisateur, puis réactivé avec smbpasswd -e utilisateur.

11.5.2. Samba en client

Les fonctionnalités clientes de Samba donnent à une machine Linux l'accès à des partages Windows et à des imprimantes partagées. Les paquets Debian cifs-utils et smbclient regroupent les programmes clients nécessaires.

11.5.2.1. Le programme smbclient

Le programme smbclient interroge tous les serveurs SMB. Il accepte l'option -U utilisateur pour se connecter au serveur sous une autre identité. smbclient //serveur/partage accède au partage de manière interactive (comme le client FTP en ligne de commande). smbclient -L serveur donne la liste des partages disponibles (et visibles).

11.5.2.2. Monter un partage Windows

La commande mount permet de monter un partage Windows dans l'arborescence du système Linux (avec l'aide de mount.cifs fourni par cifs-utils).

Exemple 11.24. Montage d'un partage Windows

mount -t cifs //arrakis/shared /shared \
      -o credentials=/etc/smb-credentials
Le fichier /etc/smb-credentials ne sera pas lisible par les utilisateurs et respectera le format suivant :
username = utilisateur
password = mot_de_passe
On peut préciser d'autres options sur la ligne de commande, que la page de manuel mount.cifs(1) détaille. Deux options intéressantes permettent de forcer l'utilisateur (uid) et le groupe (gid) propriétaire des fichiers accessibles sur le montage afin de ne pas restreindre l'accès à root.
Il est aussi possible de configurer le montage d'un partage Windows dans /etc/fstab :
//serveur/shared /shared cifs credentials=/etc/smb-credentials
Un partage SMB/CIFS peut être démonté avec la commande umount standard.

11.5.2.3. Imprimer sur une imprimante partagée

Cups est une solution élégante pour imprimer sur une imprimante partagée par une machine Windows depuis un poste Linux. Si le paquet smbclient est installé, Cups offre la possibilité d'installer automatiquement une imprimante partagée par un poste Windows.
Voici les étapes à suivre :
  • Entrer dans l'interface de configuration de CUPS : http://localhost:631/admin.
  • Cliquer sur « Ajouter une imprimante ».
  • Choisir le périphérique de l'imprimante : Windows Printer via SAMBA.
  • L'URI décrivant l'imprimante doit avoir la forme suivante :
    smb://utilisateur:motdepasse@serveur/imprimante.
  • Saisir le nom qui identifiera cette imprimante de manière unique, puis une description pour cette imprimante et sa localisation. Ces informations seront utiles aux utilisateurs, et leur permettront d'identifier les imprimantes.
  • Indiquer les noms du fabricant et du modèle de l'imprimante, ou fournir directement un fichier de description d'imprimante (PPD).
Et voilà, l'imprimante est fonctionnelle !