---
title: Samba
description: Configurer Samba sur Debian pour partager des dossiers sur votre réseau local et y accéder depuis Windows, macOS ou Linux.
---

:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}

Samba est un protocole permettant d'accèder à un dossier situé sur un disque réseau. Il peut être configuré sous Mac, Windows ou Linux.

De nombreux tutorials existent pour configurer Samba sous windows ou sur un NAS type Synology, ici nous nous concentrons sur Debian.

![samba](/img/global/smb.svg)

## Créer et configurer un dossier réseau partagé
::note

Ici, nous allons partager le dossier `/video` d'une machine distant que nous appelerons `machine-distante`. Nous accéderons à ce dossier par la machine nommée `machine-locale`. L'utilisateur de connexion au disque réseau sera `sambauser`.
::

::steps{level="3"}
### Installer le serveur samba

```bash [Terminal]
sudo apt update && sudo apt upgrade
sudo apt install samba smbclient cifs-utils
```

### Créer le dossier `/video`

```bash [Terminal]
sudo mkdir /video
```

### Configuration du partage

Ensuite nous allons éditer le fichier `/etc/samba/smb.conf`

```bash [Terminal]
sudo nano /etc/samba/smb.conf
```

::tip{icon=""}
✨ __Astuce :__ vous pouvez utiliser [File Browser](/fr/serveex/files/file-browser) pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
::

Localisez la variable `workgroup` et nommez votre workgroup, par exemple `workgroup = WORKGROUP`

Puis allez à la fin du fichier et collez la configuration suivante

```properties [smb.conf]
[video]
   comment = Dossier video
   path = /video
   writable = yes
   guest ok = no
   valid users = @smbshare
   force create mode = 770
   force directory mode = 770
   inherit permissions = yes
```

Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}.
### Terminé !
::

### Créer un utilisateur et un groupe pour Samba

Comme nous avons configuré un partage sécurisé, nous allons devoir créer un utilisateur et un groupe pour pouvoir y accéder à distance.

::steps{level="3"}
### Créer le groupe

```bash [Terminal]
sudo groupadd smbshare
```

Nous allons maintenant permettre au groupe d'avoir le controle sur le dossier `/video`.

```bash [Terminal]
sudo chgrp -R smbshare /video
```

Et maintenant nous allons donner les permissions nécessaires aux dossiers et fichier hérités.

```bash [Terminal]
sudo chmod 2775 /video
```
### Créer l'utilisateur

A présent nous allons ajouter un utilisateur nologin c'est à dire que cet utilisateur ne pourra pas se connecter sur le serveur pour faire des opérations, mais pourra tout de meme se connecter au service samba.

```bash [Terminal]
sudo useradd -M -s /sbin/nologin sambauser
```

Puis nous ajoutons l'utilisateur au groupe `sambashare` que nous avons créé précédemment.

```bash [Terminal]
sudo usermod -aG smbshare sambauser
```

Et nous allons configurer un mot de passe.

```bash [Terminal]
sudo smbpasswd -a sambauser
```

### Activer le compte Samba

```bash [Terminal]
sudo smbpasswd -e sambauser
```
### Terminé !
::

## Accéder à un dossier partagé

::steps{level="3"}
### Installer les paquets nécessaires

```bash [Terminal]
sudo apt update && sudo apt upgrade
sudo apt install cifs-utils
```

### Créer le dossier de destination

Nous allons créer un dossier sur notre serveur sur lequel sera monté le dossier partagé de notre `machine-distante`. C'est à dire que dans ce dossier nous retrouverons le contenu du dossier partagé de notre `machine-distante`. Ici nous appellerons ce dossier `/mnt/video`.

```bash [Terminal]
sudo mkdir /mnt/video
```

### Préparer le fichier .credentials

Afin de ne pas avoir systématiquement à rentrer notre utilisateur et mot de passe, nous allons créer un fichier `.credentials` stockant ces informations.

Nous allons le créer dans le dossier `/smb`.

```bash [Terminal]
sudo mkdir /smb
sudo nano /smb/.credentials
```

Configurez comme suit :

```properties [.credentials]
username=smbuser
password=motdepasse
```

* `smbuser` : L'utilisateur que nous avons configuré sur la `machine-distante`
* `motdepasse` : Le mot de passe que nous avons configuré sur la `machine-distante`

Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}.

Nous allons modifier les permissions du dossier afin que seul le propriétaire puis lire et écrire dans ce fichier.

```bash [Terminal]
sudo chmod 600 /smb/.credentials
```

### Monter le dossier partagé

::warning
__Attention :__ Si vous utilisez un pare-feu comme ufw, vous devez ajouter une règle pour autoriser votre machine distante à accéder à votre partage.
```bash [Terminal]
sudo ufw allow from <ip-de-la-machine-distante> to any app Samba
```
::
A présent nous allons monter le dossier.

```bash [Terminal]
sudo mount -t cifs -o credentials=/smb/.credentials //ip-machine-distante/video /mnt/video
```

Remplacez `ip-machine-distante` par l'adresse IP de votre `machine-distante`

Vérifiez que cela a fonctionné en tapant :

```bash [Terminal]
sudo mount -t cifs
```

Vous verrez différentes informations qui confirmerons le succès du montage.

Et voilà, à présent vous accédez au dossier /video de `votre machine-distante`, depuis votre `machine-locale` !

### (Optionnel) Automatiser le montage au démarrage

Par défaut, les dossiers partagés ne sont pas connectés automatiquement au redémarrage. Pour automatiser cet aspect, nous allons modifier le fichier `/etc/fstab`.

D'abord, sauvegardons notre fichier `fstab`.

```bash [Terminal]
sudo cp /etc/fstab /etc/fstab.bak
```

Puis nous allons ajouter une ligne à la fin du fichier comportant les informations de montages dans le fichier `fstab`.

```bash [Terminal]
sudo echo //ip-machine-distante/video    /mnt/video  cifs   _netdev,nofail,credentials=/smb/.credentials,x-systemd.automount,x-systemd.device-timeout=15 0 0 >> /etc/fstab
```

Redémarrez.

```bash [Terminal]
sudo reboot
```

Une fois redémarré, vérifiez que le montage est correct

```bash [Terminal]
sudo mount -t cifs
```
### Et voilà !
::

::tip
__Démonter le dossier partagé__

```bash [Terminal]
sudo umount -t cifs /mnt/video
```
::
