MISE EN PLACE D'UN SERVEUR DE FICHIERS AVEC SAMBA
Introduction et contexte

Cette procédure décrit l'installation et la configuration complète d'un serveur de fichiers Linux avec intégration Active Directory. Le serveur permettra le partage de fichiers avec authentification centralisée et gestion des droits via l'AD.

Environnement
Paramètre Valeur
Environnement CBAUDIMENT
Domaine AD cbaudiment.fr
Serveur AD 10-ServAD-DNS (172.30.10.11)
Serveur Fichiers 10-ServFich
OS Debian 13 (Trixie)
Partage /Fichiers (100 Go)
Objectifs
  • Joindre un serveur Linux au domaine Active Directory
  • Configurer un partage Samba accessible aux utilisateurs du domaine
  • Permettre la gestion des droits via les outils Windows standard
  • Assurer l'authentification unique (SSO) pour les utilisateurs
Prérequis
  • Serveur Debian 13 (Trixie) ou Ubuntu 24.04
  • Accès root au serveur Linux
  • Compte administrateur du domaine Active Directory
  • Résolution DNS fonctionnelle vers le contrôleur de domaine
  • Connectivité réseau entre le serveur Linux et le DC
Installation des paquets

Installation de tous les composants nécessaires pour l'intégration AD et le partage de fichiers.

Mise à jour du système
apt update
apt upgrade -y
Installation des paquets Samba et Kerberos
apt install -y samba winbind krb5-user libpam-winbind libnss-winbind smbclient acl

Configuration Kerberos pendant l'installation :

  • Royaume par défaut : CBAUDIMENT.FR (en MAJUSCULES)
  • Serveur Kerberos : 172.30.10.11
  • Serveur admin : 172.30.10.11
Configuration réseau
Configuration DNS

Éditer le fichier /etc/resolv.conf :

nameserver 172.30.10.11
search cbaudiment.fr
Configuration /etc/hosts

Ajouter l'entrée du contrôleur de domaine dans /etc/hosts :

172.30.10.11     10-ServAD-DNS.cbaudiment.fr 10-ServAD-DNS
Configuration Kerberos
Fichier /etc/krb5.conf

Éditer le fichier /etc/krb5.conf avec la configuration suivante :

[libdefaults]
    default_realm = CBAUDIMENT.FR
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
 
[realms]
    CBAUDIMENT.FR = {
        kdc = 172.30.10.11
        admin_server = 172.30.10.11
        default_domain = cbaudiment.fr
    }
 
[domain_realm]
    .cbaudiment.fr = CBAUDIMENT.FR
    cbaudiment.fr = CBAUDIMENT.FR
Synchronisation de l'heure

Kerberos nécessite une synchronisation horaire précise (maximum 5 minutes de décalage) :

apt install ntpdate -y
ntpdate -u 172.30.10.11
Test de Kerberos

Vérifier que l'authentification Kerberos fonctionne :

kinit admin.cbaudiment@CBAUDIMENT.FR
klist

Résultat attendu : le résultat doit afficher un ticket Kerberos valide.

Configuration Samba
Sauvegarde de la configuration par défaut
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Fichier /etc/samba/smb.conf

Remplacer le contenu du fichier /etc/samba/smb.conf par la configuration suivante :

[global]
    workgroup = CBAUDIMENT
    realm = CBAUDIMENT.FR
    security = ADS
    server role = member server
 
    # Winbind
    winbind use default domain = yes
    winbind enum users = yes
    winbind enum groups = yes
    winbind refresh tickets = yes
 
    # Templates
    template shell = /bin/bash
    template homedir = /home/%U
 
    # Mappage ID
    idmap config * : backend = tdb
    idmap config * : range = 3000-7999
    idmap config CBAUDIMENT : backend = rid
    idmap config CBAUDIMENT : range = 10000-999999
 
    # Logs
    log file = /var/log/samba/log.%m
    log level = 1
 
[Fichiers]
    comment = Serveur de fichiers de l'entreprise
    path = /Fichiers
    browseable = yes
    read only = no
 
    # Gestion des ACLs Windows
    vfs objects = acl_xattr
    map acl inherit = yes
    store dos attributes = yes
 
    create mask = 0770
    directory mask = 0770
Configuration NSS (Name Service Switch)

Éditer /etc/nsswitch.conf pour permettre la résolution des utilisateurs et groupes AD :

passwd: files systemd winbind
group:  files systemd winbind
shadow: files winbind
Test de la configuration
testparm

Résultat attendu : Loaded services file OK

Jonction au domaine Active Directory
Arrêt des services
systemctl stop smbd nmbd winbind
Jonction au domaine
net ads join -U admin.cbaudiment

Résultat attendu : Joined '10-SERVFICH' to dns domain 'cbaudiment.fr'

Démarrage et activation des services
systemctl start smbd nmbd winbind
systemctl enable smbd nmbd winbind
Vérifications
# Vérifier la jonction
net ads testjoin
 
# Lister les utilisateurs AD
wbinfo -u
 
# Lister les groupes AD
wbinfo -g
 
# Tester la résolution d'un utilisateur
getent passwd admin.cbaudiment
Configuration du partage de fichiers
Activation des ACLs sur le disque

Éditer /etc/fstab et ajouter l'option acl pour le disque contenant /Fichiers :

/dev/sdb1 /Fichiers  ext4  defaults,acl  0  2

Remonter le système de fichiers pour appliquer les changements :

mount -o remount,acl /Fichiers
Configuration des permissions de base
chown root:root /Fichiers
chmod 770 /Fichiers
 
# Donner accès au groupe 'utilisateurs du domaine'
setfacl -m "g:utilisateurs du domaine:rwx" /Fichiers
setfacl -m "d:g:utilisateurs du domaine:rwx" /Fichiers
Redémarrage de Samba
systemctl restart smbd nmbd
Tests d'accès depuis Windows
Accès via l'Explorateur Windows

Depuis un PC Windows joint au domaine, ouvrir l'Explorateur et taper dans la barre d'adresse :

\\10-ServFich\Fichiers

L'accès doit se faire automatiquement avec les credentials de l'utilisateur connecté (SSO).

Test local depuis le serveur
smbclient //localhost/Fichiers -U admin.cbaudiment
Gestion des droits depuis Windows

Grâce à la configuration vfs objects = acl_xattr, vous pouvez gérer les permissions directement depuis Windows comme sur un serveur de fichiers Windows classique.

Mappage automatique du lecteur réseau via GPO

Pour mapper automatiquement le lecteur réseau sur tous les postes du domaine :

  • Ouvrir Group Policy Management (gpmc.msc) sur le DC
  • Créer une nouvelle GPO : Mappage Lecteur Fichiers
  • Éditer la GPO
  • Naviguer : User Configuration > Preferences > Windows Settings > Drive Maps
  • Nouveau > Mapped Drive
Paramètre Valeur
Action Create (ou Replace)
Location \\10-ServFich\Fichiers
Reconnect Coché
Label as Serveur Fichiers
Drive Letter F: (ou selon choix)

Lier la GPO au domaine ou à l'OU concernée.

Redirection du dossier Documents via GPO

Cette GPO redirige le dossier Documents de l'utilisateur vers son dossier personnel sur le serveur.

Création de la GPO :

  • Dans la Console GPMC, clic droit sur l'OU cible
  • Créer un objet GPO → nommer : GPO_Redirection_Documents
  • Clic droit → Modifier

Configuration de la GPO :

Configuration utilisateur
└── Stratégies
    └── Paramètres Windows
        └── Redirection de dossiers
            └── Documents

Clic droit sur Documents → Propriétés

Onglet Cible :

Paramètre Valeur
Paramètre Rediriger le dossier de tout le monde vers le même emplacement
Emplacement du dossier cible Créer un dossier pour chaque utilisateur sous le chemin racine
Chemin racine \\10-ServFich\Dossiers_Utilisateurs\%username%\Documents

Onglet Paramètres :

Option Recommandation
Accorder à l'utilisateur des droits exclusifs sur Documents Coché
Déplacer le contenu de Documents vers le nouvel emplacement Coché
Appliquer aussi la stratégie aux systèmes d'exploitation antérieurs Décoché (sauf besoin)

Test de la GPO :

Sur un poste client :

gpupdate /force

Ouvrir l'Explorateur de fichiers → clic droit sur Documents → Propriétés → onglet Emplacement. Le chemin doit pointer vers \\10-ServFich\Dossiers_Utilisateurs\prenom.nom\Documents.

⚠️ Problème connu : si un profil local existe déjà, Windows ne déplace pas automatiquement les fichiers. Il faut supprimer le profil local et se reconnecter (voir section Dépannage).

Profils itinérants (Roaming Profiles)

Les profils itinérants permettent à l'utilisateur de retrouver son environnement complet (bureau, paramètres, Documents) sur n'importe quel poste du domaine.

Différence clé avec la redirection de dossiers :

  • Redirection de dossiers → uniquement les dossiers ciblés (Documents, Bureau…) sont sur le serveur
  • Profils itinérants → l'intégralité du profil Windows est stockée sur le serveur

Préparer le partage des profils dans smb.conf :

Créer un partage dédié dans /etc/samba/smb.conf :

[Profiles$]
    path = /srv/samba/profiles
    read only = no
    browseable = no
    create mask = 0600
    directory mask = 0700

Info : Le $ à la fin du nom masque le partage dans l'explorateur réseau.

Créer le dossier et définir les permissions :

mkdir -p /srv/samba/profiles
chown root:"Domain Users" /srv/samba/profiles
chmod 1770 /srv/samba/profiles
# Le bit sticky (1) empêche les utilisateurs de supprimer les dossiers des autres
smbcontrol all reload-config

Configurer les profils via GPO (méthode recommandée) :

  • Dans la Console GPMC, créer une GPO : GPO_Profils_Itinerants
  • Clic droit → Modifier
Configuration utilisateur
└── Stratégies
    └── Modèles d'administration
        └── Système
            └── Profils utilisateur

Activer : Définir le chemin d'accès itinérant pour tous les utilisateurs

Paramètre Valeur
État Activé
Chemin du profil \\10-ServFich\Profiles$\%username%

Méthode alternative — Par utilisateur dans ADUC :

Via Active Directory Users and Computers (dsa.msc) → double-clic sur l'utilisateur → onglet Profil → Chemin du profil : \\10-ServFich\Profiles$\%username%

Note : La méthode GPO est préférable car elle s'applique automatiquement à tous les nouveaux utilisateurs.

Test des profils itinérants :

  • Se connecter avec un utilisateur sur le poste A → effectuer une modification (ex : changer le fond d'écran, créer un fichier sur le Bureau)
  • Se déconnecter
  • Se connecter avec le même utilisateur sur le poste B
  • Les modifications doivent être présentes → le profil a bien été synchronisé depuis le serveur
Dépannage
Supprimer le profil local d'un utilisateur (méthode graphique)

Sur le poste concerné, connecté en administrateur local :

  • Clic droit sur "Ce PC" → Propriétés
  • → Paramètres système avancés
  • → Onglet "Paramètres utilisateur avancés" → Paramètres...
  • → Sélectionner le profil de l'utilisateur → Supprimer

Puis inviter l'utilisateur à se reconnecter : Windows crée un nouveau profil en récupérant les données depuis le serveur.

Supprimer le profil local via GPO (automatique)
Configuration ordinateur
└── Stratégies
    └── Modèles d'administration
        └── Système
            └── Profils utilisateur
  • Activer : Supprimer les copies mises en cache des profils itinérants
  • Activer : Supprimer les profils utilisateur antérieurs à un nombre de jours spécifié au redémarrage du système → ex : 30 jours
Résoudre l'erreur "Nous ne pouvons pas nous connecter à votre compte"

Cette erreur apparaît quand Windows a marqué le profil comme corrompu dans le registre (clé .bak). Sur le poste concerné, connecté en administrateur :

regedit

Naviguer vers :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

Chercher la clé correspondant au SID de l'utilisateur (commence par S-1-5-21-...) :

  • Si une clé se termine par .bak → la supprimer (ou la renommer en supprimant .bak)
  • Si deux clés existent pour le même SID (une normale + une .bak) → supprimer celle avec .bak

Redémarrer le poste → l'utilisateur peut se reconnecter normalement.

Résoudre le problème de Documents pointant en local sur un second poste

Ce problème est causé par un cache CSC (Client-Side Caching) corrompu. Windows a une ancienne entrée de synchronisation qui prend le dessus sur la GPO.

Solution : réinitialiser le cache CSC. Sur le poste concerné, connecté en administrateur :

  • Ouvrir regedit
  • Naviguer vers :
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CSC\Parameters

Créer une nouvelle valeur :

Type Nom Valeur
DWORD (32 bits) FormatDatabase 1

Redémarrer l'ordinateur. Windows vide le cache local des fichiers réseau et force une resynchronisation propre avec le serveur à la prochaine connexion.

Problèmes d'authentification

Symptôme : Cannot contact any KDC

  • Vérifier la résolution DNS vers le contrôleur de domaine
  • Vérifier la synchronisation de l'heure (ntpdate)
  • Vérifier la connectivité réseau (ping, telnet port 88)

Symptôme : NT_STATUS_ACCESS_DENIED

  • Vérifier les permissions sur le dossier partagé
  • Vérifier la configuration 'valid users' dans smb.conf
  • Vérifier que winbind fonctionne (wbinfo -u)
Problèmes de jonction au domaine

Symptôme : Failed to join domain

  • Vérifier que server role = member server est configuré
  • Vérifier les credentials de l'administrateur du domaine
  • Vérifier la configuration Kerberos (kinit doit fonctionner)
Activation des logs détaillés

Pour diagnostiquer des problèmes complexes, augmenter le niveau de log dans /etc/samba/smb.conf :

[global]
    log level = 3 auth:5 winbind:5

Puis redémarrer Samba et consulter les logs.

Bonnes pratiques préventives

Avant la première connexion d'un utilisateur sur un nouveau poste, exécuter :

gpupdate /force
net use \\10-ServFich\Dossiers_Utilisateurs

Cela garantit que :

  • Les GPO sont bien appliquées avant le chargement du profil
  • Le partage réseau est joignable
Commandes de maintenance et surveillance
Surveillance des connexions
# Voir les utilisateurs connectés
smbstatus
 
# Voir les fichiers ouverts
smbstatus -L
Consultation des logs
# Logs Samba en temps réel
tail -f /var/log/samba/log.smbd
 
# Logs Winbind
tail -f /var/log/samba/log.winbindd
Gestion des services
# Redémarrer Samba
systemctl restart smbd nmbd winbind
 
# Vérifier le statut
systemctl status smbd
systemctl status winbind
Vérification de la jonction AD
# Tester la jonction au domaine
net ads testjoin
 
# Informations sur le domaine
net ads info