Partager un répertoire avec Samba sur Debian 13 (public / privé)

Partager un répertoire avec Samba sur Debian 13 (public / privé)

0 commentaire(s)

A chaque fois que j'ai besoin de permettre l'accès à un répertoire Samba, suite à une réinstallation de mon Debian, je suis un autre tuto.

J'oublie systématiquement d'une fois à l'autre, parce qu'il peut s’écouler trois ans entre deux réinstallations.

De ce fait, voici mon tuto, pour moi, et pour vous, parce que ça doit certainement servir.

Je précise directement que je mettrais à jour ce tuto au grés des version de Debian qui sortirons, pour moi et pour vous.

Nos objectif du jour :

  • Monter le répertoire suivant /mnt/DATA/ au démarrage du système avec l'utilisations de disks, l'application graphique
  • Installer Samba
  • Paramétrer Samba pour un partage publique accessible en lecture seule (/mnt/DATA/Public)
  • Paramétrer Samba pour un partage avec authenfication en lecture / écriture (/mnt/DATA)

1. Avant de commencer


Il est préférable d'être dans la liste des sudoers, mais ce n'est pas obligatoire, on pourra le faire root (commande su).

Je précise qu'il faut éviter de se connecter en su, mauvaise habitude que j'ai trop souvent.

2. Vérifications


Pour ne pas vous perdre, nous allons vérifiers ces éléments :

  • Vérifion que le répertoire publique existe, et ces droits.
  • Faisons de même avec le répertoire privée.
  • Vérifions si notre utilisateur privé existe
Bash
# Vérifions que nos répertoire existe, privée et publique
ls -ld /mnt/DATA /mnt/DATA/Public
# Vérifion si le disque DATA est monté au démarrage
mount | grep DATA
# Regardons si notre utilisateur stunivers est connu du système :
id stunivers

Voici la sortie obtenu dans notre cas :

Text
# ls -ld /mnt/DDAS /mnt/DDAS/Public
drwxrwx--- 15 stunivers 1005 4096 18 mai 12:52 /mnt/DATA
drwxrwxrwx 6 stunivers stunivers 4096 18 mai 13:37 /mnt/DATA/Public
# mount | grep DATA
# id stunivers
uid=1000(stunivers) gid=1000(stunivers) groupes=1000(stunivers),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),100(users),101(netdev),102(scanner),106(bluetooth),108(lpadmin)

2. Le montage automatique


Le montage conciste à rendre visible et accessible votre volume, clef usb, disque dur par le système.

Sur linux, dépendant des distributions, et pour votre sécurité, ce n'est pas automatique comme sur Windows.

Ici, dans notre cas, on veut que ça le soit.

A l'époque je me rendais dans fstab, je m'amusais avec le fichier jusqu'à obtenir ce montage automatique.

C'est une affaire de syntaxe, mais avec ma dyslexie je loupais trop souvent de choses.

De fait, disks (ou disques en français) est bien plus pratique pour moi, vous le retrouverez dans vos applications gnome :

Retrouver Gnome Disks dans vos applications

une fois dans disks, vous pouvez paramétré quelque chose comme ceci :

Comment j'ai configurer le montage automatique

L'idée, automontage, et d'avoir un nom qui correspond à ce qu'on souhaite.

On vérifie à nouveau :

Bash
mount | grep DDAS
/dev/sda2 on /mnt/DATA type ext4 (rw,nosuid,nodev,relatime,x-gvfs-show)

3. Installation de Samba


C'est plutot simple, on met à jour le système, et on utilise apt pour l'installer :

Bash
sudo apt update
sudo apt install samba

On vérifie que tout est en place :

Bash
# on liste les 3 binaires smbd, nmbd et testparm
ls -l /usr/sbin/smbd /usr/sbin/nmbd /usr/bin/testparm
# Samba est lancé en service, on vérifie le status
systemctl status smbd nmbd --no-pager

4. Ecriture de notre smb.conf


4.1. Sauvegarde du fichier d'origine


Dans l'idée, au cas ou on ferait une bêtise, faisons une sauvgarde :

Bash
# Sauvegarde avec la date
sudo cp -a /etc/samba/smb.conf /etc/samba/smb.conf.bak.$(date +%F)

Si besoin d'un rollback :

Bash
sudo cp -a /etc/samba/smb.conf.bak.AAAA-MM-JJ /etc/samba/smb.conf
sudo systemctl restart smbd nmbd

4.2. Ecrire notre smb.conf


Voila le contenu qu'on utilisera pour remplacer le contenu d'origine, l'idée c'est d'ajouter, d'adapter ça à nos besoins :

[global]
workgroup = WORKGROUP
server string = Servbian DATA
security = user
map to guest = Bad User
guest account = nobody
# Hide shares the connecting identity cannot access
access based share enum = yes
# Useful on a home LAN; adjust if you use a domain later
server role = standalone server
disable netbios = no
smb ports = 445 139
logging = file
log file = /var/log/samba/log.%m
max log size = 1000
# -----------------------------------------------------------------------------
# Authenticated only: full DATA tree for user stunivers
# Not listed for anonymous / guest clients thanks to access based share enum
# -----------------------------------------------------------------------------
[DATA]
comment = Private DATA storage
path = /mnt/DATA
valid users = stunivers
browseable = yes
guest ok = no
read only = no
force user = stunivers
create mask = 0660
directory mask = 0770
veto files = /lost+found/
# -----------------------------------------------------------------------------
# Guest-visible public folder
# -----------------------------------------------------------------------------
[Public]
comment = Public folder (no login required)
path = /mnt/DATA/Public
browseable = yes
guest ok = yes
read only = no
force user = stunivers
create mask = 0664
directory mask = 0775

Points clés :

  • map to guest = Bad User : un login inconnu / vide tombe en compte invité (nobody).
  • access based share enum = yes + valid users = stunivers sur [DATA] : sans login, le client ne voit en principe que [Public].
  • force user = stunivers : les fichiers créés via SMB appartiennent à stunivers sur le disque (cohérent avec ton arborescence actuelle).
  • guest ok = yes uniquement sur [Public].

J'ai vraiment pris du temps pour avoir la conf la plus propre, je voulais vraiment rien laisser transparaitre.

5. Valider la syntaxe du fichier


Le truc bien avec Samba, c'est qu'il vous laisse pas dans le jus à écrire votre fichier et à vous renvoyer des erreurs cons.

L'utilitaire testparm livré avec est très utile pour valider votre fichier smb.conf :

Bash
testparm -s
Load smb config files from /etc/samba/smb.conf
lpcfg_do_global_parameter: WARNING: The "raw NTLMv2 auth" option is deprecated
Loaded services file OK.
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)
Server role: ROLE_STANDALONE

Normalement la commande doit vous retourner une entête proche, et vous dire que les fichiers sont ok, et vous recracher machinalement le contenu de votre smb.conf

Pour ceux qui s'inquiète par rapport à Weak crypto is allowed, sachez que debian autorise la compatibilité même jusqu'à SMB 1 de mémoire. De notre coté, on force SMB 3 pour profiter des avancés de sécurité qu'il propose.

6. Créer notre utilisateur pour samba


Samba ne connais pas Stunivers, en fait les utilisateurs de votre Debian et ceux de Samba sont distincts

De ce fait, vous devréer le créer :

Bash
sudo smbpasswd -a stunivers
New SMB password:
Retype new SMB password:
Added user stunivers.

7. Les droits d'accès


Vous l'aurez vu, nous avons une arborescence /mnt/DATA en privé, et /mnt/DATA/Public ou Public est dans DATA

De ce fait, il est important que pour un autre groupe unix que Stunivers, aucun droit ne soit ajouté.

On va s'assurer que les droits soit donc cohérant en ce sens pour l'utilisateur stunivers :

Bash
# Changement de propriétaire pour l'utilisateur stunivers
sudo chown -R stunivers:stunivers /mnt/DATA/
# Redéfinission des droits au cas ou pour DATA (stunivers à les droits, les autres rien)
sudo chmod -R 770 /mnt/DATA/
# en publique c'est autre chose, on veut que stunivers est tous les droits, et des droits en lecture pour les autres
sudo chmod -R 775 /mnt/DATA/Public/

Pourquoi chmod -R et chown -R ? y'a toujours un moment ou on oublie une permission, ou les choses ne se passent pas comme prévu.

C'est clairement radicale, mais je déteste y revenir, au moins la c'est définit.

Une petite vérification avec ls et on est bon :

Bash
ls -ld /mnt/DATA/
ls -ld /mnt/DATA/Public/

7. Redémarrer les services


Redémarrer les services est important, votre serveur Samba tel qu'il à été installé à connaissance de l'ancien fichier smb.conf.

Aussi, on va s'assurer que le service de notre serveur soit au démarrage, et qu'on force l'arrêt de nmbd (pour netbios), plus du tout utilisé.

Bash
sudo systemctl enable --now smbd
sudo systemctl disable --now nmbd
sudo systemctl status smbd --no-pager

Si vous n'avez pas fait de faute dans votre smb.conf, vérifié avec testparm, vous devriez avoir ceci :

Text
sudo systemctl enable --now smbd
sudo systemctl disable --now nmbd
sudo systemctl status smbd --no-pager
Synchronizing state of smbd.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable smbd
Synchronizing state of nmbd.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install disable nmbd
Removed '/etc/systemd/system/multi-user.target.wants/nmbd.service'.
Removed '/etc/systemd/system/nmb.service'.
● smbd.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smbd.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-10-12 14:55:09 CEST; 40min ago
Invocation: e0631a439d694b7fae8d53bdf08e9783
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 15836 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 3 (limit: 18519)
Memory: 23.1M (peak: 23.9M)
CPU: 168ms
CGroup: /system.slice/smbd.service
├─15836 /usr/sbin/smbd --foreground --no-process-group
├─15840 "smbd: notifyd" .
└─15841 "smbd: cleanupd "
oct. 12 14:55:09 Servbian systemd[1]: Starting smbd.service - Samba SMB Daemon...
oct. 12 14:55:09 Servbian update-apparmor-samba-profile[15829]: grep: /etc/apparmor.d/samba/smbd-sh… nom
oct. 12 14:55:09 Servbian update-apparmor-samba-profile[15832]: diff: /etc/apparmor.d/samba/smbd-sh… nom
oct. 12 14:55:09 Servbian systemd[1]: Started smbd.service - Samba SMB Daemon.
Hint: Some lines were ellipsized, use -l to show in full.

8. Configuration pour ufw ou firewalld


L'idée d'un pare-feu c'est de ne laisser entrer / sortir que ce qui doit.

Il en existe des matériels, une boite ou on branche notre pc d'un coté, internet de l'autre (me tapez pas, c'est une simplification volontaire).

Mais dans mon cas, c'est le pc lui même qui mettra notre pare-feu logiciel entre le réseau et nous.

Petit tuto ici pour l'installer et le configurer :

Bash
# installation
sudo apt install ufw
# connexion root complet (outil sensible)
su -
# ouverture des ports pour samba
ufw allow 445/tcp
ufw allow 139/tcp
# rechargement des configurations
ufw reload
# activation de ufw
ufw enable

9. Test depuis un autre pc


Vous pouvez soit le faire graphiquement, soit en ligne de commande comme ici :

Bash
# connection publique au répertoire publique
smbclient //192.168.1.250/Public -N
# tapez ls pour lister les fichiers, et faite ctrl+c si vous voyez votre arborescence
ls
# connexion en tant que stunivers au répertoire DATA
smbclient //192.168.1.250/DATA -U stunivers

10. Dépannage express


Symptôme Piste
smbd ne démarre pas journalctl -u smbd -e --no-pager + testparm -s
Guest ne voit rien map to guest = Bad User, guest ok = yes sur [Public], redémarrage smbd
DATA visible sans login Confirme access based share enum = yes et guest ok = no / valid users = stunivers sur [DATA]
Accès refusé sur DATA smbpasswd -a stunivers, droits propriétaire sur /mnt/DATA, force user = stunivers
Écriture Guest impossible mode de /mnt/DATA/Public (ex. 1)=à777 / 777), read only = no, force user = stunivers
Invisible depuis Windows ping IP, ports 445/139, pare-feu, essayer l’IP plutôt que le hostname
Groupe 1005 « UNKNOWN » cosmétique tant que stunivers est owner ; sinon chgrp stunivers /mnt/DATA ou créer le groupe manquant

Vous aimerez peut-être aussi :

Commentaires

Aucun commentaire approuvé pour le moment.

Connectez-vous avec un compte commentateur pour publier un commentaire. Se connecter.