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

The package sets up a minimal configuration during the initial installation in /etc/samba/smb.conf by plainly copying /usr/share/samba/smb.conf. So you should really run dpkg-reconfigure samba-common to adapt it:
On first installation the only piece of required information is the name of the workgroup where the Samba server will belong (the answer is FALCOTNET in our case).
In case of a package update (from the old stable Debian version) or if the SMB server has already been configured to use a WINS server (wins server), the package also proposes identifying the WINS server from the information provided by the DHCP daemon. The Falcot Corp administrators rejected this option, since they intend to use the Samba server itself as the WINS server.

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 server" 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

   obey pam restrictions = yes

[...]

# "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

Indicates that Samba should act as a Netbios name server (WINS) for the local network. This option had been removed from the default configuration in Buster and must be added manually if desired.

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.21. 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
Unmounting an SMB/CIFS share is done with the standard umount command.

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 !