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
|
# 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 :
# 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 :

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

L'idée, automontage, et d'avoir un nom qui correspond à ce qu'on souhaite.
On vérifie à nouveau :
|
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 :
|
sudo apt update |
sudo apt install samba |
|
On vérifie que tout est en place :
|
# 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 :
|
# Sauvegarde avec la date |
sudo cp -a /etc/samba/smb.conf /etc/samba/smb.conf.bak.$(date +%F) |
|
Si besoin d'un rollback :
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 = stuniverssur[DATA]: sans login, le client ne voit en principe que[Public].force user = stunivers: les fichiers créés via SMB appartiennent àstuniverssur le disque (cohérent avec ton arborescence actuelle).guest ok = yesuniquement 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 :
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 :
|
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 :
|
# 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 :
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é.
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 :
|
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 :
|
# 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 :
|
# 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 |
Commentaires
Aucun commentaire approuvé pour le moment.
Connectez-vous avec un compte commentateur pour publier un commentaire. Se connecter.