# Monter un partage CIFS (SMB) sur votre système Linux
Cet article explique comment monter un partage Windows sur Linux via le protocole SMB (**S**erver **M**essage **B**lock). SMB est un **protocole client-serveur** qui permet d'**accéder à des ressources via le réseau** par exemple : des fichiers, des dossiers, ou des imprimantes partagées.
Le protocole propriétaire SMB de Microsoft est pris en charge par défaut sous Windows. Sous Linux, l'accès à un partage SMB implique l'installation d'un paquet spécifique nommé samba.
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Le protocole SMB a porté plusieurs noms selon les versions. Pour cette raison, il n'est par rare de parler de SMB, CIFS ou SMB-CIFS (surtout en environnement Linux).</span>
# Prérequis
Pour réaliser ce tutoriel, vous avez besoin de 2 machines connectées sur le même réseau local :
- Sous Microsoft Windows 10 ou 11.
- Créer un compte local, utilisateur standard, nommé "*fabien*".
- Créer un partage Windows nommé "*Windows-Share*".
- Configurer les permissions de partage sur autoriser les modifications pour "*fabien*".
- Une machine Linux de type Debian 12 avec ou sans environnement de bureau (gnome ou autre).
- Les deux machines doivent être connectées au même réseau local, par exemple : 192.168.1.0/24.
> [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Ce tutoriel n'explique pas comment partager un dossier sous Windows.</span>
Pour accéder au partage Windows depuis la machine Debian 12, il faut installer le paquet "*cifs-utils*" nécessaire pour monter un partage SMB (CIFS).
- Ouvrir une session non-root sous Debian 12.
- Ouvrir un terminal et exécutez les commandes suivantes.
```
sudo apt-get update
sudo apt-get install cifs-utils -y
```
Pour accéder au partage réseau nommé "*Windows-Share*", il faut au préalable définir un point de montage local sur la machine Linux.
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Un point de montage sous Linux est un dossier local que le système Linux va pouvoir associer à une ressource. Par exemple : le contenu d'un DVD ou d'un dossier partagé. </span>
Il convient donc de créer un répertoire qui servira à mapper le partage distant. Dans cet exemple, nous allons créer le répertoire "*/mnt/partage*".
```
sudo mkdir /mnt/partage
```
# Monter le partage de façon éphémère
Nous allons à présent utiliser la commande `mount` pour monter le partage dans le système de fichiers local grâce aux options suivantes :
- `-t cifs` : spécifie le protocole à utiliser pour accéder au dossier partagé (SMB).
- `//192.168.1.10/Windows-Share` : indique l'adresse complète du partage réseau au format UNC
- `/mnt/partage` : indique le point de montage local où le contenu du partage réseau sera accessible une fois monté.
- `-o username=fabien` : fournit le nom d'utilisateur pour s'authentifier sur le partage réseau.
```
sudo mount -t cifs //19.168.1.10/Windows-Share /mnt/partage -o username=fabien
```
> [!warning] Remarque ! <span style="font-weight: normal; color: var(--text-normal)"> Si votre système DNS est opérationnel, il est recommendé d'utiliser le nom complet de la machine Windows (FQDN) à la place de son IP. </span>
> [!info] A savoir !<span style="font-weight: normal; color: var(--text-normal)"> Sur Linux, les chaînes qui commencent par deux barres obliques (`//`) sont reconnues comme des chemins UNC (Convention de Nommage Universelle).</span>
La commande `mount` vous demande de saisir le mot de passe de façon interactive. S'il n'y a pas d'erreur dans la console, l'opération s'est déroulée avec succès. Pour confirmer que le partage est bien monté :
- Utilisez la commande `ls` (**l**i**s**t) pour afficher le contenu du dossier "*/mnt/partage*"
```
ls -lah /mnt/partage
```
- Utilisez la commande `df` (**d**isk **f**ree) pour constater la du point de montage.
```
df -h
```
> [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Cette configuration ne sera pas persistante après reboot. Le répertoire "**/mnt/partage**" sera toujours présent, mais le partage distant ne sera plus monté après le redémarrage !</span>
# Démonter un partage CIFS sur Linux
Pour démonter le partage, il suffit de redémarrer la machine ou d'utiliser la commande `umount` en spécifiant le point de montage ciblé :
```
sudo umount /mnt/partage
```
# Monter le partage de façon persistante
Pour rendre cette configuration persistante au redémarrage de la machine Linux, nous allons configurer le fichier "*fstab*" et créer un fichier sécurisé contenant les identifiants de connexion.
Dans un premier temps créer le fichier "*/etc/.smb-partage-creds*", pour stocker les identifiants :
```
sudo nano /etc/.smb-partage-creds
```
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Sous Linux les fichiers dont le nom commence par "`.`" sont des fichiers cachés. Utiliser `ls -a` pour les afficher.</span>
Indiquez le nom d'utilisateur et le mot de passe de cette façon dans le fichier :
```
username=fabien
password=P@ssword!
```
Enregistrez et fermez le fichier, puis modifiez les permissions afin d'empêcher les accès non autorisés sur ce fichier :
```
sudo chmod 600 /etc/.smb-partage-creds
```
Pour confirmer que ce fichier n'est accessible que par le compte root utiliser la commande :
```
sudo ls -lah /etc/.smb-partage-creds
```
Il faut à présent tester l'authentification avec le fichier sécurisé :
```
sudo mount -t cifs //192.168.1.10/Windows-Share /mnt/partage -o credentials=/etc/.smb-partage-creds
```
Si l'opération s'est correctement exécutée, modifiez le fichier "*/etc/fstab*" pour ajouter un point de montage automatique.
```
sudo nano /etc/fstab
```
Puis, dans ce fichier, nous allons ajouter cette ligne :
- `//192.168.1.10/Windows-Share` : partage distant à monter
- `/mnt/partage` : point de montage local
- `cifs` : protocole de fichiers à utiliser (SMB)
- `credentials=/etc/.smb-partage-creds` : fichier qui contient les identifiants d'accès au partage SMB.
- `_netdev` : utilisé pour retarder le montage jusqu’à ce que le réseau soit opérationnel.
- `0 0` : Désactivation des options de **dump** et de **pass** (vérification du système de fichiers).
```
//192.168.1.10/Windows-Share /mnt/partage cifs credentials=/etc/.smb-partage-creds,_netdev 0 0
```
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Il est possible de spécifier les identifiants directement dans fstab mais cela n'est pas recommandé.</span>
Enregistrez et fermez le fichier "*fstab*" puis vérifier que la nouvelle configuration est opérationnelle :
- Démonter le point de montage avec `umount`.
- Ensuite exécuter la commande :
```
sudo mount -a
```
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> La commande `mount -a` sous Linux a pour rôle de **monter automatiquement tous les systèmes de fichiers** définis dans `/etc/fstab`, **à condition qu'ils ne soient pas déjà montés** et qu'ils ne soient pas marqués avec l'option `noauto`.</span>
Si la commande précédente s'exécute sans erreur, vous n'avez plus qu'à redémarrer votre machine Linux pour tester la configuration.
```
sudo reboot
```
Une fois le système redémarré, ouvrez une session terminale et exécutez à nouveau la commande :
```
df -h | grep /mnt/partage
```
Si le volume CIFS est monté, son point de montage apparaîtra dans la liste des volumes avec la même taille et informations qu’avant le reboot.
# Conclusion
En suivant les étapes précédentes, vous devriez être en mesure de monter un partage de fichiers SMB-CIFS de façon temporaire ou permanente, et de le déconnecter du système. Si vous rencontrez des difficultés :
- Vérifiez la syntaxe de vos commandes.
- Vérifier les identifiants (login et mot de passe).
- Vérifiez les permissions du compte utilisateur au niveau du partage distant.
## Référence
- Ubuntu : [How to mount cifs shares permanently](https://ubuntu.com/server/docs/how-to-mount-cifs-shares-permanently)
- IT-CONNECT : [Monter un partage CIFS sous Linux](https://www.it-connect.fr/monter-un-partage-cifs-sous-linux/)