Serveur de fichiers Debian : installer et configurer Samba 4
Sommaire
I. Présentation
Dans ce tutoriel, je vous propose d'installer et configurer Samba 4 sur un serveur Debian 11 afin de créer un serveur de fichiers sous Linux, avec un partage de fichiers.
Qu'est-ce que Samba ?
Samba est une application libre qui tourne sous Linux et qui permet de créer un serveur de fichiers en s'appuyant sur l'implémentation du protocole SMB (CIFS). C'est précisément cette fonctionnalité qui va nous intéresser aujourd'hui, mais sachez que Samba permet également de partager des imprimantes et de créer un véritable contrôleur de domaine Active Directory (prise en charge des GPO, Kerberos, LDAP, DNS, etc.).
Quels sont les prérequis pour suivre ce tutoriel ?
Pour suivre ce tutoriel, vous avez besoin :
- D'une machine sous Linux, pour ma part Debian 11 (selon la distribution quelques commandes peuvent changer)
- D'un poste client sous Windows pour tester l'accès au partage, pour ma part Windows 11 (mais Windows 10 fera très bien l'affaire)
Quel est l'objectif de ce tutoriel ?
Nous allons installer le paquet Samba sous Debian 11 dans le but de monter un serveur de fichiers. Ce serveur de fichiers contiendra un seul partage nommé tout simplement "Partage" et il sera accessible par plusieurs utilisateurs. Nous verrons également comment accéder à ce partage depuis un poste client.
Si vous découvrez le protocole SMB à l'occasion de ce tutoriel, rendez-vous à la fin de l'article !
Ready ? Go !
II. Installer Samba sous Debian 11
Note : les commandes sont exécutées directement avec l'utilisateur "root" mais si vous agissez depuis un compte administrateur (autre que root), pensez à préfixer les commandes avec "sudo".
Connectez-vous sur votre machine Linux et mettez à jour la liste des paquets :
apt-get update
Ensuite, installez le paquet "samba" :
apt-get install -y samba
Suite à l'installation, on peut afficher la version actuelle de Samba via la commande smbd :
smbd --version
Version 4.13.5-Debian
Pour afficher le statut du serveur Samba, et voir s'il est démarré ou arrêté, voici la commande à exécuter :
systemctl status smbd
Avant de passer à la suite, nous allons activer le démarrage automatique de smbd (Samba) :
systemctl enable smbd
Maintenant, passons à la création du partage Samba.
III. Créer son premier partage sous Samba
La création du partage va s'effectuer en plusieurs étapes : la configuration de Samba dans un premier temps, et la préparation du groupe, de l'utilisateur et du dossier du partage dans un second temps.
A. Configurer le partage dans smb.conf
Le fichier de configuration de Samba est "/etc/samba/smb.conf", nous allons l'éditer :
nano /etc/samba/smb.conf
Ajoutez ensuite les lignes suivantes pour déclarer notre partage :
[partage] comment = Partage de données path = /srv/partage guest ok = no read only = no browseable = yes valid users = @partage
Quelques explications :
- [partage] : sert à spécifier le nom du partage entre "[]", c'est le nom qui devra être utilisé pour accéder au partage
- comment : description du partage
- path : chemin vers le dossier à partager, sur le serveur
- guest ok : accès invité au partage (par défaut "no"). Si vous décidez d'activer cette option, vous devez configurer l'option "guest account" qui par défaut prend la valeur "nobody".
- read only : partage accessible uniquement en lecture seule (yes ou no)
- browseable : le partage doit-il être visible ou masqué si on liste les partages du serveur avec un hôte distant (découverte réseau). La valeur "yes" permet de le rendre visible.
- valid users : spécifier les utilisateurs ou les groupes qui ont les droits d'accès au partage (les droits sur le système de fichiers doivent être cohérents vis-à-vis de cette autorisation). On précise un utilisateur avec son identifiant et un groupe avec son identifiant précédé du caractère "@". Pour indiquer plusieurs valeurs, séparez-les par une virgule.
La configuration étant terminée, sauvegardez le fichier et redémarrez le service smbd :
systemctl restart smbd
B. Créer un utilisateur et le groupe "partage"
Le groupe "partage" que nous avons déclaré dans la configuration n'existe pas. Nous allons créer le groupe, ainsi qu'un utilisateur nommé "it-connect" et qui sera membre de ce groupe.
Créez l'utilisateur "it-connect" et définissez son mot de passe :
adduser it-connect
Pour que l'utilisateur puisse se connecter au partage, il faut l'autoriser dans Samba, en plus de la création au sein du système Linux. Pour cela, il faut utiliser la commande "smbpasswd" pour déclarer l'utilisateur et lui créer un mot de passe Samba (ce dernier pouvant être différent du mot de passe du compte sur le système).
Voici la commande pour ajouter l'utilisateur "it-connect" :
smbpasswd -a it-connect
Lorsqu'un utilisateur exécute lui-même la commande "smbpasswd", cela lui permet de modifier lui-même son mot de passe Samba.
L'utilisateur étant prêt, nous allons créer le groupe "partage" :
groupadd partage
Avec gpasswd ou usermod, ajoutez l'utilisateur "it-connect" au groupe "partage" :
gpasswd -a it-connect partage
Le tour est joué pour l'utilisateur et le groupe !
C. Préparer le dossier du partage
Le partage va être hébergé à l'emplacement "/srv/partage" de notre serveur. Commençons par créer le dossier :
mkdir /srv/partage
Ensuite, on va attribuer le groupe "partage" comme groupe propriétaire de ce dossier :
chgrp -R partage /srv/partage/
Puis, nous allons ajouter les droits de lecture/écriture à ce groupe sur ce dossier :
chmod -R g+rw /srv/partage/
On peut vérifier la configuration des droits avec la commande suivante :
ls -l /srv/
Tout est prêt, nous pouvons tester depuis un poste client mais avant cela lisez le point suivant.
D. Le partage [homes] de Samba
Dans sa configuration par défaut, Samba dispose d'un partage nommé [homes]. En fait, il ne s'agit pas réellement d'un partage nommé "homes" mais cette configuration spécifique permet de créer un partage personnel pour chaque utilisateur qui se connecte sur votre machine Linux.
De cette façon, l'utilisateur "it-connect" dispose d'un partage personnel (correspondant à son dossier personnel définit au niveau de Linux) accessible à l'adresse suivante :
\\<nom-du-serveur>\it-connect
Il faut savoir que, par défaut, ces partages sont accessibles en lecture seule et l'utilisateur ne voit que son propre partage, après s'être authentifié au serveur.
Si vous souhaitez désactiver ces partages car vous n'en avez pas l'utilité, il suffit de commenter les différentes lignes (la ligne [homes] ainsi que les directives en dessous) dans le fichier smb.conf et de redémarrer le service Samba.
IV. Accéder au partage Samba depuis Windows
Pour tester l'accès au partage, j'ai pris une machine Windows mais j'aurais pu utiliser un client sous Linux également. Pour accéder au partage, il y a plusieurs possibilités : à partir de l'explorateur de fichiers Windows, d'un lecteur réseau, de la commande net use voire même New-PSDrive en PowerShell.
Utilisons la méthode la plus courante pour accéder à un partage : un chemin UNC directement dans la barre d'adresse de l'Explorateur de fichiers. Pour ma part, ma machine se nomme "debian-11", ce qui donne :
\\debian-11\partage
Note : vous pouvez utiliser l'adresse IP à la place du nom si vous rencontrez des difficultés.
Le message accès refusé apparaît, c'est normal, car je dois m'authentifier, donc j'utilise le compte "it-connect" et le mot de passe saisit lors de l'exécution de la commande "smbpasswd".
Parfait ! J'accède bien à mon partage Samba depuis Windows ! Je peux même créer un fichier puisque j'ai accès en lecture / écriture.
Sur le serveur Linux, on peut lister le contenu de notre partage :
ls -l /srv/partage/
Il n'y a pas quelque chose qui vous choc ?
Si l'on regarde les droits du fichier "IT-Connect.txt", on peut voir que l'utilisateur propriétaire est "it-connect" et que le groupe propriétaire est "it-connect" également. En bref, il n'y a que l'utilisateur "it-connect" qui peut modifier ce fichier. Les autres utilisateurs pourront seulement le lire.
C'est gênant, car l'objectif c'est que plusieurs utilisateurs puissent accéder à ce partage et travailler sur les mêmes fichiers et dossiers. Nous allons voir comment ajuster la configuration de notre partage dans Samba.
V. Améliorer la gestion des droits sur le partage Samba
Au sein du fichier smb.conf et de notre bloc [partage], nous allons ajouter trois options :
create mask = 0660 directory mask = 0770 force group = partage
- L'option "create mask" va permettre de définir les droits par défaut sur les fichiers (lecture/écriture pour l'utilisateur propriétaire et le groupe propriétaire seulement)
- L'option "directory mask" va permettre de définir les droits par défaut sur les dossiers
- L'option "force group" va permettre de forcer le groupe "partage" comme groupe propriétaire des fichiers et dossiers
Ce qui donne :
[partage]
comment = Partage de données
path = /srv/partage
guest ok = no
read only = no
browsable = yes
valid users = @partage
create mask = 0660
directory mask = 0770
force group = partage
Une fois cet ajustement effectué, sauvegardez la configuration et redémarrez le service :
systemctl restart smbd
Ensuite, les droits sur les nouveaux dossiers et fichiers permettront la collaboration entre plusieurs utilisateurs :
VI. Désactiver le SMB v1 sur Samba
Pour des raisons de sécurité (voir article ci-dessous), je vous rappelle qu'il est déconseillé d'utiliser le protocole SMB v1. C'est pour cette raison que nous allons configurer le serveur Samba de manière à désactiver le SMB v1.
Retournez dans le fichier "smb.conf" et sous le bloc [global], ajoutez ces deux lignes :
min protocol = SMB2 client min protocol = SMB2
Cela va permettre d'imposer le SMB v2 comme version minimale pour négocier une connexion SMB avec notre serveur Samba. Si vous souhaitez imposer le SMB v3, remplacez "SMB2" par "SMB3".
VII. Découvrir le protocole SMB
Le partage de fichiers avec Samba s'appuie sur le protocole SMB, mais connaissez-vous réellement ce protocole ? Je vous propose une introduction avec mon article "Le protocole SMB pour les débutants", disponible également au format vidéo.
Pour finir, voici le lien vers la documentation de Samba pour aller plus loin.
Salut ! 🙂
Étant Gestionnaire IT (orienté infra), depuis 7 ans, je voulais te dire que c’est vraimen cool la démarche de ton site !
Y’a plein de petit truc sympa (même si on utiliserai pas tout y’a bien quelques truc qui m’ont bien renseigner).
Continue en tout cas à publier, je suis abonné ^^
Bonjour,
Je rejoins le commentaire de Xavier, ce site est une mine d’or.
Merci de nous faire partager votre expertise et continuez comme cela.
@+
Merci beaucoup pour l’expérience que tu viens de partager avec nous
Très pratique, merci !
Un article sur le lien possible avec un serveur LDAP est il prévu ?
un tuto pour en faire un contrôleur de domaine est en cours ?
c’est possible de faire du dfs-r entre un serveur avec samba et un filer windows ?
Hello, honnêtement je ne sais pas… jamais testé!
Salut. Un grand merci pour ce tuto qui à fonctionner du premier coup. Au moment ou j’ai decouvert ton tuto j’expérimentais la mise en place d’un OpenVPN sur la même Débian 11 avec une connection depuis un W10. La connexion s’effectue très bien. Je souhaite maintenand accèder au dossier « partage » depuis le W10 via la connexion VPN mais je n’y arrive pas. J’ai beau utiliser les méthodes que tu préconise et qui marche en local, mais pas avec le VPN. Si tu a un idée merci d’avance. Et bonne continuation.
Bonjour,
merci pour l’article, très bien expliqué.
Attention, petite coquille néanmoins :
Dans la configuration des partages, c’est browseable au lieu de browsable.
Bonjour Geo,
Bien vu… Merci ! Je vais corriger 🙂
Bonjour,
Très claire et bien expliqué
Juste une question :
J’accède bien à mon partage depuis mon pc perso, mais comment faire pour y accéder avec mon pc pro qui appartient à un ad ?
Merci pour ces explications au top, mon serveur Samba fonctionne ! Et tu détailles chaque étape, génial !
Un grand merci pour ce tuto très intéressant et facile à suivre. Il m’a permis de récupérer l’accès à un partage réseau SAMBA que j’avais perdu suite à la mise à niveau de DEBIAN Buster vers DEBIAN Bluseyes sur un Raspberry.
Sans avoir toutes les compétences requises, je ne voyais pas l’intérêt de mettre en place un lecteur réseau sous Windows 10 et pourtant, c’est cette démarche qui m’a finalement permis de retrouver l’accès au dossier « partage » du Raspberry depuis un PC sous Windows grâce à son explorateur de fichier via le SMB2 Linux du Raspberry.
Merci pour ce tres bon tuto sur le partaga samba avec linux , fonctionne du premier coup sur debian 12
Bonjour,
Suite à l’abandon par Orange du partage d’un disque USB sur Livebox, je voudrais accrocher ce disque sur une machine Linux pour en partager le contenu sur les machines du reseau local domestique.
Du coup, je suppose qu’il y a quelques opérations supplémentaires à réaliser non ? Montage du disque par exemple ?
Merci en tout cas pour ce tuto très clair
Bonjour,
Ton site est vraiment cool, et je te remercie grandement pour ce tuto très clair.
Je vais l’utiliser pour me créer un serveur de fichiers dans une VM dans ma freebox Delta, et dont les fichiers n’y seront accessibles que depuis un partage protégé.
Bonjour,
Apprenti, en admin sys et réseau, j’admir bien votre site, et vos tuto.
je te remercie très infinement.