Pour partager un disque dur externe avec Samba sur Ubuntu 24.04, commencez par stabiliser son montage, puis créez un accès réservé aux utilisateurs autorisés. Les permissions du disque et celles de Samba doivent toutes deux permettre l’accès. Cette configuration convient à un réseau local et aux clients Windows, macOS, Linux et mobiles.
Sommaire
1. Donner au disque un point de montage durable
Samba expose des dossiers locaux avec le protocole SMB, souvent appelé SMB/CIFS. Il ne monte pas lui-même le disque USB. Identifiez d’abord sa partition, son système de fichiers et son éventuel point de montage :
lsblk -f
Repérez le disque à l’aide de sa taille et de son étiquette. /dev/sdb1 est un exemple, pas une valeur à copier sans vérification. Un montage sous /media/votre-nom-utilisateur peut convenir pour un essai, mais dépendre de l’ouverture de session. Pour un partage permanent, préférez /mnt/disque-externe.
Monter la partition sans la reformater
Si la partition est déjà montée, fermez les applications qui l’utilisent et démontez-la proprement avant de changer son emplacement. Ces commandes ne formatent pas le disque :
sudo mkdir -p /mnt/disque-externe
sudo mount /dev/sdb1 /mnt/disque-externe
findmnt /mnt/disque-externe
La dernière commande doit afficher la partition attendue. Si rien ne s’affiche, ne poursuivez pas : vous risqueriez de partager le dossier vide situé sur le disque système plutôt que le contenu du disque externe.
Enregistrer le montage dans fstab
Récupérez l’UUID avec sudo blkid /dev/sdb1, puis sauvegardez et ouvrez le fichier de montage :
sudo cp /etc/fstab /etc/fstab.bak
sudo nano /etc/fstab
Pour une partition ext4 uniquement, ajoutez cette ligne en remplaçant UUID_REEL par l’identifiant réel :
UUID=UUID_REEL /mnt/disque-externe ext4 defaults,nofail 0 2
Testez la ligne avec sudo mount -a, puis vérifiez le résultat avec findmnt /mnt/disque-externe. L’option nofail permet au système de démarrer si le disque est absent, mais ne garantit pas que Samba pourra accéder aux fichiers. L’option _netdev concerne les montages réseau, pas ce disque USB local.
Après un redémarrage, vérifiez que le disque est bien monté avant de tester le partage. Un service Samba actif ne prouve pas que les fichiers sont disponibles. Si le disque est absent au démarrage, le chemin peut désigner un dossier vide sur le disque système. Ce contrôle permet aussi de repérer une configuration qui ne fonctionne qu’après une intervention manuelle.
2. Préparer les comptes et les droits sur les fichiers
Installez le serveur Samba et les outils de contrôle :

sudo apt update
sudo apt install samba samba-common-bin smbclient
Dans les exemples qui suivent, remplacez alice par le nom d’un compte Linux existant. Samba possède sa propre base de mots de passe : un compte Linux seul ne suffit pas pour se connecter au partage.
sudo groupadd -f partage
sudo usermod -aG partage alice
sudo smbpasswd -a alice
sudo smbpasswd -e alice
Choisissez un mot de passe dédié. Après l’ajout au groupe, ouvrez une nouvelle session pour que les groupes du compte alice soient actualisés dans le terminal.
Adapter les permissions au système de fichiers
Sur ext4, créez un dossier dédié au partage plutôt que de modifier récursivement les droits de tout le disque :
sudo mkdir -p /mnt/disque-externe/Partage
sudo chown root:partage /mnt/disque-externe/Partage
sudo chmod 2770 /mnt/disque-externe/Partage
Le groupe partage peut lire et écrire dans ce dossier. Le bit setgid favorise la transmission du groupe aux nouveaux sous-dossiers. Vérifiez l’accès local avec sudo -u alice touch /mnt/disque-externe/Partage/test-local. L’utilisateur doit également pouvoir traverser les dossiers parents pour atteindre le partage.
Sur NTFS ou exFAT, les commandes chown et chmod ne fonctionnent généralement pas comme sur ext4 : les droits dépendent des options de montage. Récupérez les identifiants numériques avec id alice et getent group partage, puis adaptez les options uid, gid et umask au pilote utilisé. Un masque 0007 vise à limiter l’accès au propriétaire et au groupe. N’utilisez pas la ligne fstab prévue pour ext4 sur ces formats, et évitez chmod 777.
3. Déclarer un partage authentifié et limiter son exposition
Sauvegardez la configuration Samba avant de la modifier :
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo nano /etc/samba/smb.conf
Ajoutez à la fin le bloc ci-dessous. Chaque ligne doit être saisie séparément dans le fichier :
[DisqueUSB]
path = /mnt/disque-externe/Partage
browseable = yes
read only = no
guest ok = no
valid users = @partage
force group = partage
create mask = 0660
directory mask = 0770
Le nom entre crochets devient le nom du partage réseau. read only = no autorise l’écriture côté Samba, mais les permissions locales du système de fichiers doivent elles aussi l’autoriser. valid users = @partage limite les connexions aux membres du groupe.
Validez la configuration, puis démarrez et activez le service :
testparm
sudo systemctl enable –now smbd
sudo systemctl restart smbd
sudo systemctl status smbd
Pour partager plusieurs disques ou dossiers, ajoutez un bloc distinct avec un nom et un chemin différents. Pour empêcher les modifications, définissez read only = yes.
Si UFW est actif, limitez l’accès à votre sous-réseau. Adaptez cet exemple à votre réseau réel :
sudo ufw allow from 192.168.1.0/24 to any app Samba
sudo ufw status
Le profil Samba couvre TCP 445 et 139 ainsi qu’UDP 137 et 138. SMB direct utilise TCP 445 ; les autres ports servent aux fonctions NetBIOS historiques. Vérifiez qu’aucune règle plus large n’annule cette restriction. Ne redirigez pas les ports Samba depuis Internet : pour accéder au partage de l’extérieur, utilisez plutôt un VPN.
4. Se connecter et vérifier l’écriture depuis chaque appareil
Repérez l’adresse du serveur avec ip addr. Les exemples ci-dessous utilisent 192.168.1.100, à remplacer par l’adresse de votre machine Ubuntu. Une réservation DHCP dans le routeur évite que cette adresse change.
- Windows : saisissez \\192.168.1.100\DisqueUSB dans la barre d’adresse de l’Explorateur. Connectez-vous avec alice et son mot de passe Samba. Vous pourrez ensuite connecter un lecteur réseau.
- macOS : dans le Finder, choisissez Aller, puis Se connecter au serveur, et saisissez smb://192.168.1.100/DisqueUSB.
- Linux : saisissez cette même adresse smb:// dans un gestionnaire de fichiers compatible.
- Android : ajoutez un serveur SMB dans une application de fichiers compatible.
- iPhone ou iPad : dans l’app Fichiers, choisissez Se connecter au serveur, puis connectez-vous comme utilisateur enregistré.
Depuis Ubuntu, vérifiez aussi la connexion avec smbclient //192.168.1.100/DisqueUSB -U alice. Créez un fichier depuis un appareil client, ouvrez-le, puis supprimez-le : voir les dossiers ne suffit pas à confirmer que l’écriture fonctionne. L’accès par adresse IP peut fonctionner même si le serveur n’apparaît pas dans la découverte réseau. nmbd ne garantit pas la découverte sur tous les clients modernes.
5. Dépanner dans l’ordre : disque, service, réseau, identifiants
Ne modifiez pas toutes les permissions dès le premier refus. Vérifiez chaque couche séparément :
- Dossier vide ou indisponible : contrôlez lsblk -f et findmnt, puis vérifiez le chemin indiqué par path.
- Connexion impossible : vérifiez systemctl status smbd, testparm et sudo ufw status.
- Mot de passe refusé : réinitialisez-le avec sudo smbpasswd alice. Sous Windows, fermez les sessions SMB existantes et supprimez les identifiants mémorisés pour le serveur.
- Lecture possible, écriture refusée : retestez la commande touch avec le compte alice, puis vérifiez les permissions et l’éventuel montage en lecture seule.
- Coupures USB : examinez le câble, l’alimentation et les messages avec journalctl -k avant de modifier les réglages de veille.
Pour préciser les erreurs, consultez sudo journalctl -u smbd et le fichier /var/log/samba/log.smbd. Avant de débrancher le disque, arrêtez les transferts et démontez-le proprement. Sur un réseau gigabit, le débit peut atteindre environ 100 à 115 Mo/s dans de bonnes conditions, sans que cette vitesse soit garantie : les performances dépendent aussi du disque, de l’USB, du Wi-Fi et de la charge du serveur.




