Samba

Partage de fichiers Linux / Windows.

Préparation

sudo apt install samba smbclientInstaller
sudo groupadd partageCréer le groupe
sudo usermod -aG partage jediAjouter l’utilisateur
sudo mkdir -p /srv/partageCréer le dossier
sudo chown root:partage /srv/partageAffecter le groupe
sudo chmod 2770 /srv/partageDroits + SGID
sudo smbpasswd -a jediCréer le compte Samba

Directives principales de smb.conf

DirectiveRôleExemple
pathChemin réel du dossier partagé sur le serveur.path = /srv/partage
browseableAffiche ou masque le partage dans la découverte réseau. Le partage reste accessible par son chemin si l'utilisateur le connaît.browseable = yes
read onlyInterdit ou autorise l'écriture. read only = no autorise l'écriture si les droits Linux le permettent.read only = no
valid usersListe les utilisateurs ou groupes autorisés. Le symbole @ désigne un groupe.valid users = @partage
invalid usersInterdit explicitement un utilisateur ou un groupe, même s'il serait autorisé autrement.invalid users = stagiaire
force groupForce les nouveaux fichiers à utiliser un groupe donné.force group = partage
create maskDroits maximaux des nouveaux fichiers.create mask = 0660
directory maskDroits maximaux des nouveaux dossiers.directory mask = 2770
guest okAutorise l'accès sans compte. À éviter pour un partage métier.guest ok = no

Exemple de partage géré par groupe

[Commun]
    path = /srv/partage
    browseable = yes
    read only = no
    guest ok = no
    valid users = @partage
    force group = partage
    create mask = 0660
    directory mask = 2770

La bonne pratique est de gérer l'accès avec des groupes : on ajoute ou retire l'utilisateur du groupe sans modifier smb.conf.

Interdire exceptionnellement un utilisateur

# Une ligne commençant par # est un commentaire et n'est pas appliquée.
# invalid users = utilisateur_test

# Ligne active : l'utilisateur est explicitement interdit.
invalid users = utilisateur_test
Tu as raison : une liste d'utilisateurs individuels devient vite ingérable. invalid users est utile pour une exception temporaire, mais la gestion normale doit se faire par groupes Linux, groupes Samba ou groupes Active Directory.

Ordre réel des permissions

  1. Samba vérifie valid users et invalid users.
  2. Le système Linux vérifie propriétaire, groupe, permissions et éventuellement ACL.
  3. Pour écrire, l'utilisateur doit être autorisé par Samba et par les droits du système de fichiers.

smb.conf

[Partage]
    path = /srv/partage
    browseable = yes
    read only = no
    valid users = @partage
    force group = partage
    create mask = 0660
    directory mask = 2770

Vérifier

testparmTester smb.conf
sudo systemctl restart smbdRedémarrer
smbclient -L localhost -U jediLister les partages

🚨 Réflexe TSSR

  • testparm
  • systemctl status smbd
  • smbclient -L localhost -U utilisateur
  • ls -ld /srv/partage
  • id utilisateur
  • getfacl /srv/partage

💡 À retenir

Les droits Samba et les droits Linux doivent tous les deux autoriser l’accès.

⚠ Pièges fréquents

Ajouter l’utilisateur au groupe mais oublier de se déconnecter puis se reconnecter.

✔ Vérification

testparmCommande de vérification
systemctl is-active smbdCommande de vérification
smbclient -L localhost -U utilisateurCommande de vérification
ls -ld /srv/partageCommande de vérification

🎯 Ce que le jury attend

  • Créer le groupe
  • Configurer les droits
  • Créer le compte Samba
  • Tester smb.conf
  • Tester le partage

Directives importantes de smb.conf

DirectiveRôle
pathChemin du partage
browseableVisible sur le réseau
read onlyLecture seule
guest okAutorise l'accès invité
valid usersUtilisateurs ou groupes autorisés
invalid usersUtilisateurs interdits
force groupForce le groupe propriétaire
create maskDroits des nouveaux fichiers
directory maskDroits des nouveaux dossiers
[Partage]
path = /srv/partage
browseable = yes
read only = no
guest ok = no
valid users = @GG_Partage
create mask = 0660
directory mask = 2770
force group = GG_Partage

Bonne pratique : utiliser des groupes (@GG_Partage) plutôt que des utilisateurs individuels afin de faciliter l'administration.

testparm
smbclient -L localhost
smbstatus