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 3 (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 possible de reprendre cette étape de la configuration avec la commande dpkg-reconfigure samba-common samba.
La première information demandée est le nom du groupe de travail auquel le serveur Samba appartient (dans notre cas, la réponse est FALCOTNET). Une autre question demande s'il faut employer les mots de passe chiffrés ; la réponse est « oui » : cela est nécessaire pour fonctionner avec les clients Windows les plus récents et cela augmente la sécurité (la contrepartie étant l'obligation de gérer les mots de passe des utilisateurs de manière séparée des mots de passe Unix).
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 !
Finalement, l'ordinateur demande de choisir comment les démons sont démarrés : soit par l'intermédiaire de inetd, soit en tant que démons indépendants. Cette seconde option fut retenue parce que l'emploi d'inetd ne se justifie que si Samba est utilisé très occasionnellement, ce qui n'est pas le cas chez Falcot.

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

# server string is the equivalent of the NT Description field
   server string = %h server (Samba %v)

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

[...]

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

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html 
# in the samba-doc package for details.
   security = user 2

# You may wish to use password encryption.  See the section on
# 'encrypt passwords' in the smb.conf(5) manpage before enabling.
   encrypt passwords = true

# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
   passdb backend = tdbsam

[...]

########## Printing ##########

# If you want to automatically load your printer list rather
# than setting them up individually then you'll need this
   load printers = yes 3

# lpr(ng) printing. You may wish to override the location of the
# printcap file
;   printing = bsd
;   printcap name = /etc/printcap

# CUPS printing.  See also the cupsaddsmb(8) manpage in the
# cups-client package.
   printing = cups 4
   printcap name = cups

1

Indique que Samba doit jouer le rôle de serveur de nom 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.

3

Demande à Samba de partager automatiquement toutes les imprimantes existantes en local dans la configuration de Cups. Il est toujours possible de restreindre les droits sur ces imprimantes en définissant des sections appropriées dans le fichier.

4

Documente le système d'impression employé, en l'occurrence Cups.
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 fait 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.1.2.3. Transformation en contrôleur de domaines
Cette section indique comment les administrateurs de Falcot sont allés encore plus loin en transformant le serveur Samba en contrôleur de domaines offrant des profils errants (qui permettent aux utilisateurs de retrouver leur bureau quelle que soit la machine sur laquelle ils se connectent).
Tout d'abord, ils ont ajouté des directives supplémentaires dans la section [global] du fichier de configuration :
domain logons = yes              1
preferred master = yes           
logon path = \\%L\profiles\%U    2
logon script = scripts/logon.bat 3

1

Active la fonctionnalité de contrôleur de domaine.

2

Indique l'emplacement des répertoires personnels des utilisateurs. Ceux-ci sont stockés sur un partage dédié afin de pouvoir activer des options spécifiques (en l'occurrence profile acls, qui est nécessaire pour la compatibilité avec Windows 2000, XP et probablement Vista).

3

Indique le script batch (non interactif) à exécuter à chaque ouverture de session sur la machine Windows cliente. En l'occurrence, il s'agit de /var/lib/samba/netlogon/scripts/logon.bat. Le script doit être au format DOS (les lignes étant séparées par un retour chariot et un saut de ligne ; il suffit d'exécuter unix2dos sur le fichier créé depuis Linux pour s'en assurer).
Les commandes les plus couramment employées dans ces scripts permettent de créer automatiquement des lecteurs réseau et de synchroniser l'heure de l'ordinateur.

Exemple 11.27. Fichier logon.bat

net time \\ARRAKIS /set /yes
net use H: /home
net use U: \\ARRAKIS\utils
Deux partages supplémentaires et leurs répertoires associés ont aussi été créés :
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no

[profiles]
comment = Profile Share
path = /var/lib/samba/profiles
read only = No
profile acls = Yes
Il faut également créer les répertoires personnels de tous les utilisateurs (/var/lib/samba/profiles/utilisateur), chacun d'entre eux devant être propriétaire de son répertoire personnel.

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.28. 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 !