Retour au blog
linux18 min de lecture9 juin 2026

Samba : partage de fichiers Linux/Windows — Guide complet

Tout ce qu'il faut savoir sur Samba : installation, configuration de smb.conf, partages publics/privés/groupe, intégration Active Directory, sécurité SMB3 et dépannage.

Samba est le pont entre le monde Linux et le monde Windows. Grâce au protocole SMB/CIFS, il permet à des machines Linux de partager des fichiers, des imprimantes et des répertoires avec des postes Windows — et vice versa — comme si tout était sur le même réseau homogène. Ce guide couvre l'installation, la configuration de partages publics et privés, la gestion des utilisateurs, l'intégration dans un domaine Active Directory et les bonnes pratiques de sécurité.

Qu'est-ce que Samba ?

Samba est une implémentation libre du protocole SMB (Server Message Block), aussi appelé CIFS (Common Internet File System). Ce protocole, développé à l'origine par Microsoft, est le standard de partage de fichiers sous Windows. Samba permet à Linux (et macOS) de :

  • Exposer des répertoires Linux en tant que partages réseau accessibles depuis Windows
  • Servir de contrôleur de domaine Active Directory (AD DC) — remplacer un Windows Server
  • Rejoindre un domaine Windows existant en tant que membre
  • Partager des imprimantes réseau via CUPS
  • Fournir une authentification centralisée (Kerberos, LDAP)

Samba supporte SMB1, SMB2 et SMB3. Désactivez toujours SMB1 en production — c'est le protocole exploité par WannaCry (EternalBlue). SMB3 apporte le chiffrement de bout en bout depuis Windows 8 / Windows Server 2012.

Installation sur Debian / Ubuntu

bash
# Mise à jour du système
apt update && apt upgrade -y

# Installation de Samba et des utilitaires
apt install -y samba samba-common-bin smbclient cifs-utils

# Vérification de la version installée
smbd --version
# Samba version 4.x.x

# Statut des services (3 services Samba)
systemctl status smbd     # démon principal SMB
systemctl status nmbd     # résolution NetBIOS (noms machines)
systemctl status winbind  # intégration domaine Windows

Sauvegarder la configuration par défaut

Avant toute modification, sauvegardez le fichier de configuration d'origine — c'est une habitude à prendre systématiquement.

bash
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

# Afficher la configuration active (commentaires exclus)
testparm -s

Structure de smb.conf

Le fichier /etc/samba/smb.conf est organisé en sections. La section [global] définit les paramètres globaux du serveur. Chaque autre section définit un partage (share).

ini
[global]
   workgroup = WORKGROUP          # Nom du groupe de travail Windows
   server string = Serveur Samba %v
   netbios name = SERVEUR-LINUX
   security = user                # Authentification par utilisateur Samba
   map to guest = bad user        # Utilisateurs inconnus → guest

   # Protocoles SMB autorisés (désactiver SMB1 obligatoire !)
   server min protocol = SMB2
   server max protocol = SMB3

   # Logs
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file

   # Performance
   socket options = TCP_NODELAY IPTOS_LOWDELAY
   read raw = yes
   write raw = yes
   use sendfile = yes

Créer un partage public (sans mot de passe)

Un partage public est accessible à n'importe qui sur le réseau sans authentification. Utile pour un NAS domestique ou un serveur de fichiers en environnement de confiance.

bash
# Créer le répertoire partagé
mkdir -p /srv/samba/public
chmod 0777 /srv/samba/public
chown nobody:nogroup /srv/samba/public
ini
# Ajouter dans /etc/samba/smb.conf
[Public]
   path = /srv/samba/public
   comment = Partage public accessible à tous
   browseable = yes
   writable = yes
   guest ok = yes
   create mask = 0664
   directory mask = 0775
bash
# Vérifier la syntaxe et redémarrer
testparm
systemctl restart smbd nmbd

Créer un partage privé avec authentification

Un partage privé nécessite un compte Samba. Important : les utilisateurs Samba sont distincts des utilisateurs Linux, mais doivent exister dans les deux systèmes.

bash
# 1. Créer l'utilisateur Linux (sans shell de connexion pour la sécurité)
useradd -M -s /sbin/nologin azuka

# 2. Créer l'utilisateur Samba et définir son mot de passe
smbpasswd -a azuka
# New SMB password: ••••••••
# Retype new SMB password: ••••••••
# Added user azuka.

# 3. Activer le compte Samba
smbpasswd -e azuka

# Lister les utilisateurs Samba
pdbedit -L

# Créer le répertoire et les permissions
mkdir -p /srv/samba/azuka
chown azuka:azuka /srv/samba/azuka
chmod 0700 /srv/samba/azuka
ini
# Partage privé dans smb.conf
[Privé-Azuka]
   path = /srv/samba/azuka
   comment = Répertoire privé Azuka
   browseable = no          # N'apparaît pas dans la liste réseau
   writable = yes
   valid users = azuka      # Seul azuka peut accéder
   create mask = 0600
   directory mask = 0700

Partage partagé entre membres d'un groupe

Un scénario courant : une équipe (développeurs, comptabilité) partage un espace commun en lecture/écriture.

bash
# Créer le groupe Linux
groupadd devteam

# Ajouter des utilisateurs au groupe
useradd -M -s /sbin/nologin alice
useradd -M -s /sbin/nologin bob
usermod -aG devteam alice
usermod -aG devteam bob

# Créer les comptes Samba
smbpasswd -a alice
smbpasswd -a bob

# Préparer le répertoire avec le sticky bit
mkdir -p /srv/samba/devteam
chown root:devteam /srv/samba/devteam
chmod 2775 /srv/samba/devteam
# Le sticky bit (2) fait que les nouveaux fichiers héritent du groupe
ini
[DevTeam]
   path = /srv/samba/devteam
   comment = Espace partagé équipe développement
   browseable = yes
   writable = yes
   valid users = @devteam   # @ désigne un groupe Linux
   create mask = 0664
   directory mask = 0775
   force group = devteam    # Nouveaux fichiers → groupe devteam

Partager les répertoires home des utilisateurs

Samba permet à chaque utilisateur d'accéder à son /home via le réseau. C'est la section [homes] magique.

ini
[homes]
   comment = Répertoires personnels
   browseable = no          # Le partage homes n'apparaît pas
   writable = yes
   valid users = %S         # %S = nom du partage = nom de l'utilisateur
   create mask = 0600
   directory mask = 0700

Avec [homes], un utilisateur alice qui se connecte à \\SERVEUR\alice accède automatiquement à /home/alice. Élégant et sans configuration par utilisateur.

Sécuriser Samba

Désactiver SMB1 (critique)

ini
[global]
   server min protocol = SMB2
   client min protocol = SMB2
   # SMB1 est vulnérable à EternalBlue / WannaCry — ne jamais activer

Activer le chiffrement SMB3

ini
[global]
   smb encrypt = required       # Force le chiffrement SMB3 (Windows 8+)
   # ou pour un partage spécifique :

[Confidentiel]
   path = /srv/samba/confidentiel
   smb encrypt = required
   valid users = @management

Restreindre les IPs autorisées

ini
[global]
   hosts allow = 192.168.1.0/24 127.0.0.1
   hosts deny = ALL
   interfaces = eth0 lo
   bind interfaces only = yes

Configurer le pare-feu UFW

bash
# Ports Samba nécessaires
ufw allow from 192.168.1.0/24 to any port 139 proto tcp
ufw allow from 192.168.1.0/24 to any port 445 proto tcp
ufw allow from 192.168.1.0/24 to any port 137 proto udp
ufw allow from 192.168.1.0/24 to any port 138 proto udp

# Vérification
ufw status numbered

Se connecter aux partages Samba

Depuis Windows

Dans l'Explorateur Windows, tapez dans la barre d'adresse :

bash
\\192.168.1.100\Public
# ou avec authentification :
\\192.168.1.100\Privé-Azuka

Pour monter un partage de façon permanente (lecteur réseau Z:) :

bash
net use Z: \\192.168.1.100\DevTeam /user:alice /persistent:yes

Depuis Linux (smbclient)

bash
# Lister les partages disponibles
smbclient -L //192.168.1.100 -U azuka

# Se connecter à un partage (shell interactif)
smbclient //192.168.1.100/Privé-Azuka -U azuka

# Commandes dans le shell smbclient
smb: > ls              # lister
smb: > get fichier.txt # télécharger
smb: > put backup.tar  # uploader
smb: > exit

Monter un partage Samba sur Linux (mount.cifs)

bash
apt install -y cifs-utils

# Montage temporaire
mount -t cifs //192.168.1.100/DevTeam /mnt/devteam   -o username=alice,password=motdepasse,uid=1000,gid=1000,iocharset=utf8

# Montage permanent dans /etc/fstab
# Créer un fichier de credentials sécurisé
cat > /etc/samba/.credentials << 'EOF'
username=alice
password=motdepasse
domain=WORKGROUP
EOF
chmod 600 /etc/samba/.credentials

# Dans /etc/fstab :
//192.168.1.100/DevTeam /mnt/devteam cifs credentials=/etc/samba/.credentials,uid=1000,gid=1000,iocharset=utf8,_netdev 0 0

# Tester le montage
mount -a

Samba comme contrôleur de domaine Active Directory

Samba 4 peut remplacer un Windows Server en jouant le rôle de contrôleur de domaine Active Directory (AD DC). Cela permet d'authentifier des postes Windows sans licence Windows Server.

bash
# Packages nécessaires
apt install -y samba winbind krb5-user krb5-config

# Provisionner le domaine AD
samba-tool domain provision   --realm=CORP.EXEMPLE.COM   --domain=CORP   --adminpass='MotDePasseAdmin123!'   --server-role=dc   --use-rfc2307   --dns-backend=SAMBA_INTERNAL

# Configurer Kerberos
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

# Démarrer Samba AD DC
systemctl unmask samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc

# Vérifier le niveau fonctionnel du domaine
samba-tool domain level show

# Tester l'authentification Kerberos
kinit administrator@CORP.EXEMPLE.COM
klist

Sur un AD DC, smbd, nmbd et winbind ne doivent PAS tourner — uniquement samba-ad-dc. Désactivez les trois services avant de démarrer le DC : systemctl disable smbd nmbd winbind.

Rejoindre un domaine Windows existant

Pour qu'une machine Linux rejoigne un domaine Active Directory existant (Windows Server ou Samba AD DC) :

bash
apt install -y samba winbind libnss-winbind libpam-winbind krb5-user

# smb.conf pour membre de domaine
cat > /etc/samba/smb.conf << 'EOF'
[global]
   workgroup = CORP
   realm = CORP.EXEMPLE.COM
   security = ads
   kerberos method = secrets and keytab
   winbind use default domain = yes
   winbind offline logon = yes
   template shell = /bin/bash
   template homedir = /home/%U
   idmap config * : backend = tdb
   idmap config * : range = 3000-7999
   idmap config CORP : backend = rid
   idmap config CORP : range = 10000-999999
EOF

# Configurer NSS pour utiliser winbind
sed -i 's/passwd:.*compat/passwd: compat winbind/' /etc/nsswitch.conf
sed -i 's/group:.*compat/group: compat winbind/' /etc/nsswitch.conf

# Rejoindre le domaine
net ads join -U administrator
# Password for administrator@CORP.EXEMPLE.COM: ••••••••

# Démarrer winbind
systemctl restart winbind

# Vérifier l'appartenance au domaine
wbinfo -u  # lister les utilisateurs du domaine
wbinfo -g  # lister les groupes du domaine
net ads info

Diagnostic et dépannage

bash
# Tester la configuration (syntaxe de smb.conf)
testparm

# Lister les connexions actives
smbstatus

# Lister les partages et connexions
smbstatus --shares
smbstatus --locks

# Tester la connexion à son propre serveur
smbclient -L localhost -U%    # partages anonymes
smbclient //localhost/Public -U%

# Tester l'authentification
smbclient //localhost/Privé-Azuka -U azuka

# Voir les logs en temps réel
tail -f /var/log/samba/log.smbd

# Modifier le niveau de verbosité des logs (0-10)
# Dans smb.conf [global] : log level = 3

# Vérifier les ports en écoute
ss -tlnp | grep -E '139|445|137|138'

Erreurs fréquentes et solutions

  • NT_STATUS_ACCESS_DENIED : vérifiez les permissions Linux du répertoire ET les droits Samba (valid users, read only)
  • NT_STATUS_LOGON_FAILURE : le compte n'existe pas dans la base Samba — lancez smbpasswd -a username
  • NT_STATUS_BAD_NETWORK_NAME : le nom de partage ne correspond pas — vérifiez avec testparm
  • Le partage n'apparaît pas sur Windows : vérifiez que nmbd tourne et que les ports 137-138 UDP sont ouverts
  • Fichiers créés sans les bonnes permissions : utilisez force create mode et force directory mode

Pour déboguer l'accès d'un utilisateur spécifique, augmentez temporairement le log level : echo '3' > /proc/sys/net/core/somaxconn puis consultez /var/log/samba/log.nom_machine.

Sources & références

  1. 1
    Samba.org — Documentation officielle

    Documentation complète de référence Samba 4

  2. 2
    Red Hat — Deploying Samba as an AD DC

    Guide Red Hat sur Samba comme contrôleur de domaine

  3. 3
    CVE-2017-7494 — SambaCry

    Vulnérabilité critique Samba 3.5+ permettant l'exécution de code à distance

  4. 4
    smb.conf man page

    Référence exhaustive de toutes les directives smb.conf

#samba#smb#linux#windows#active-directory#partage-fichiers#réseau

Testez vos configurations

Xytherion Tools propose des outils gratuits pour vérifier vos DNS, auditer votre SSL, tester SPF/DKIM/DMARC et bien plus — directement depuis votre navigateur.

Samba : partage de fichiers Linux/Windows — Guide complet — Xytherion Tools