Restructure the Samba tutorial with steps components

This commit is contained in:
Djeex
2026-08-30 23:33:59 +02:00
parent 21a5eb670e
commit 588139bfa7
2 changed files with 110 additions and 99 deletions
+48 -41
View File
@@ -12,22 +12,23 @@ There are many tutorials for setting up Samba on Windows or on NAS systems like
![samba](/img/global/smb.svg) ![samba](/img/global/smb.svg)
## Sharing a Network Folder ## Create and configure a Shared Network Folder
::note ::note
In this example, we will share the `/video` folder from a remote machine called `remote-machine`. We will access this folder from a machine called `local-machine`. The user connecting to the network drive will be `sambauser`. In this example, we will share the `/video` folder from a remote machine called `remote-machine`. We will access this folder from a machine called `local-machine`. The user connecting to the network drive will be `sambauser`.
:: ::
::steps{level="3"}
### Install Samba Server ### Install Samba Server
```sh ```bash [Terminal]
sudo apt update && sudo apt upgrade sudo apt update && sudo apt upgrade
sudo apt install samba smbclient cifs-utils sudo apt install samba smbclient cifs-utils
``` ```
### Create the `/video` Folder ### Create the `/video` Folder
```sh ```bash [Terminal]
sudo mkdir /video sudo mkdir /video
``` ```
@@ -35,14 +36,14 @@ sudo mkdir /video
Now, edit the file `/etc/samba/smb.conf`. Now, edit the file `/etc/samba/smb.conf`.
::tip ```bash [Terminal]
__Tip:__ You can use [File Browser](/serveex/files/file-browser) to navigate and edit your files instead of using terminal commands.
::
```sh
sudo nano /etc/samba/smb.conf sudo nano /etc/samba/smb.conf
``` ```
::tip{icon=""}
✨ __Tip:__ You can use [File Browser](/serveex/files/file-browser) to navigate and edit your files instead of using terminal commands.
::
Find the `workgroup` variable and name your workgroup (e.g., `workgroup = WORKGROUP`). Find the `workgroup` variable and name your workgroup (e.g., `workgroup = WORKGROUP`).
Then scroll to the end of the file and add the following configuration: Then scroll to the end of the file and add the following configuration:
@@ -60,66 +61,65 @@ Then scroll to the end of the file and add the following configuration:
``` ```
Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ctrl+X"} to exit. Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ctrl+X"} to exit.
### Done !
::
### Create a Samba User and Group ### Create a Samba User and Group
Since we're using a secured share, we need to create a user and group to access it remotely. Since we're using a secured share, we need to create a user and group to access it remotely.
Create the group: ::steps{level="3"}
### Create the group
```sh ```bash [Terminal]
sudo groupadd smbshare sudo groupadd smbshare
``` ```
Give the group control over the `/video` folder: Give the group control over the `/video` folder:
```sh ```bash [Terminal]
sudo chgrp -R smbshare /video sudo chgrp -R smbshare /video
``` ```
Set inherited permissions: Set inherited permissions:
```sh ```bash [Terminal]
sudo chmod 2775 /video sudo chmod 2775 /video
``` ```
### Create the user
Now add a no-login user — this user cannot log into the server but can access Samba. Now add a no-login user — this user cannot log into the server but can access Samba.
```sh ```bash [Terminal]
sudo useradd -M -s /sbin/nologin sambauser sudo useradd -M -s /sbin/nologin sambauser
``` ```
Add the user to the `smbshare` group: Add the user to the `smbshare` group:
```sh ```bash [Terminal]
sudo usermod -aG smbshare sambauser sudo usermod -aG smbshare sambauser
``` ```
Set a Samba password: Set a Samba password:
```sh ```bash [Terminal]
sudo smbpasswd -a sambauser sudo smbpasswd -a sambauser
``` ```
Enable the Samba account: ### Enable the Samba account
```sh ```bash [Terminal]
sudo smbpasswd -e sambauser sudo smbpasswd -e sambauser
``` ```
### Done !
```sh ::
sudo ufw allow from remote-ip to any app Samba
```
## Accessing a Shared Folder ## Accessing a Shared Folder
--- ::steps{level="3"}
\::
### Install Required Packages ### Install Required Packages
```sh ```bash [Terminal]
sudo apt update && sudo apt upgrade sudo apt update && sudo apt upgrade
sudo apt install cifs-utils sudo apt install cifs-utils
``` ```
@@ -128,7 +128,7 @@ sudo apt install cifs-utils
We will create a folder on our local machine where the remote `/video` folder will be mounted — e.g., `/mnt/video`. We will create a folder on our local machine where the remote `/video` folder will be mounted — e.g., `/mnt/video`.
```sh ```bash [Terminal]
sudo mkdir /mnt/video sudo mkdir /mnt/video
``` ```
@@ -138,7 +138,7 @@ To avoid typing our username and password every time, create a `.credentials` fi
Create it in the `/smb` folder: Create it in the `/smb` folder:
```sh ```bash [Terminal]
sudo mkdir /smb sudo mkdir /smb
sudo nano /smb/.credentials sudo nano /smb/.credentials
``` ```
@@ -157,15 +157,20 @@ Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ct
Set proper file permissions: Set proper file permissions:
```sh ```bash [Terminal]
sudo chmod 600 /smb/.credentials sudo chmod 600 /smb/.credentials
``` ```
### Mount the Shared Folder ### Mount the Shared Folder
::warning
__Warning:__ If you're using ufw as firewall, you need to add a rule to allow your remote server to access to your share.
```bash [Terminal]
sudo ufw allow from <your-remote-ip> to any app Samba
```
::
Now mount the folder: Now mount the folder:
```sh ```bash [Terminal]
sudo mount -t cifs -o credentials=/smb/.credentials //remote-ip/video /mnt/video sudo mount -t cifs -o credentials=/smb/.credentials //remote-ip/video /mnt/video
``` ```
@@ -173,7 +178,7 @@ Replace `remote-ip` with your `remote-machine`'s IP address.
Verify the mount: Verify the mount:
```sh ```bash [Terminal]
sudo mount -t cifs sudo mount -t cifs
``` ```
@@ -181,38 +186,40 @@ Youll see details confirming the mount is successful.
Now you can access the `/video` folder of the `remote-machine` from your `local-machine`! Now you can access the `/video` folder of the `remote-machine` from your `local-machine`!
### Auto-mount on Boot ### (Optional) Auto-mount on Boot
By default, shares aren't auto-mounted after reboot. To automate this, edit the `/etc/fstab` file. By default, shares aren't auto-mounted after reboot. To automate this, edit the `/etc/fstab` file.
First, back it up: First, back it up:
```sh ```bash [Terminal]
sudo cp /etc/fstab /etc/fstab.bak sudo cp /etc/fstab /etc/fstab.bak
``` ```
Then add the mount configuration line: Then add the mount configuration line:
```sh ```bash [Terminal]
sudo echo //remote-ip/video /mnt/video cifs _netdev,nofail,credentials=/smb/.credentials,x-systemd.automount,x-systemd.device-timeout=15 0 0 >> /etc/fstab sudo echo //remote-ip/video /mnt/video cifs _netdev,nofail,credentials=/smb/.credentials,x-systemd.automount,x-systemd.device-timeout=15 0 0 >> /etc/fstab
``` ```
Reboot the machine: Reboot the machine:
```sh ```bash [Terminal]
sudo reboot sudo reboot
``` ```
After rebooting, verify the mount: After rebooting, verify the mount:
```sh ```bash [Terminal]
sudo mount -t cifs sudo mount -t cifs
``` ```
### And done!
::
And done! ::tip
__Unmount the Shared Folder__
### Unmount the Shared Folder ```bash [Terminal]
```sh
sudo umount -t cifs /mnt/video sudo umount -t cifs /mnt/video
``` ```
::
+62 -58
View File
@@ -4,37 +4,30 @@ description: Configurer Samba sur Debian pour partager des dossiers sur votre r
--- ---
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60} :ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# Samba
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. 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. De nombreux tutorials existent pour configurer Samba sous windows ou sur un NAS type Synology, ici nous nous concentrons sur Debian.
::note
🎯 __Objectifs :__
- Créer un dossier réseau sur une machine distante
- Accéder au dossier réseau sur notre serveur
::
![samba](/img/global/smb.svg) ![samba](/img/global/smb.svg)
## Partager un dossier réseau ## Créer et configurer un dossier réseau partagé
::note ::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`. 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 ### Installer le serveur samba
```sh ```bash [Terminal]
sudo apt update && sudo apt upgrade sudo apt update && sudo apt upgrade
sudo apt install samba smbclient cifs-utils sudo apt install samba smbclient cifs-utils
``` ```
### Créer le dossier `/video` ### Créer le dossier `/video`
```sh ```bash [Terminal]
sudo mkdir /video sudo mkdir /video
``` ```
@@ -42,14 +35,14 @@ sudo mkdir /video
Ensuite nous allons éditer le fichier `/etc/samba/smb.conf` Ensuite nous allons éditer le fichier `/etc/samba/smb.conf`
::tip ```bash [Terminal]
__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.
::
```sh
sudo nano /etc/samba/smb.conf 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` Localisez la variable `workgroup` et nommez votre workgroup, par exemple `workgroup = WORKGROUP`
Puis allez à la fin du fichier et collez la configuration suivante Puis allez à la fin du fichier et collez la configuration suivante
@@ -65,88 +58,90 @@ Puis allez à la fin du fichier et collez la configuration suivante
force directory mode = 770 force directory mode = 770
inherit permissions = yes inherit permissions = yes
``` ```
Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}. 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 ### Créer un utilisateur et un groupe pour Samba
Comme nous avons configfuré un partage sécurisé, nous allons devoir créer un utilisateur et un groupe pour pouvoir y accéder à distance. Comme nous avons configuré un partage sécurisé, nous allons devoir créer un utilisateur et un groupe pour pouvoir y accéder à distance.
Creez le groupe. ::steps{level="3"}
```sh ### Créer le groupe
```bash [Terminal]
sudo groupadd smbshare sudo groupadd smbshare
``` ```
Nous allons maintenant permettre au groupe d'avoir le controle sur le dossier `/video`. Nous allons maintenant permettre au groupe d'avoir le controle sur le dossier `/video`.
```sh ```bash [Terminal]
sudo chgrp -R smbshare /video sudo chgrp -R smbshare /video
``` ```
Et maintenant nous allons donner les permissions nécessaires aux dossiers et fichier hérités. Et maintenant nous allons donner les permissions nécessaires aux dossiers et fichier hérités.
```sh ```bash [Terminal]
sudo chmod 2775 /video 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. 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.
```sh ```bash [Terminal]
sudo useradd -M -s /sbin/nologin sambauser sudo useradd -M -s /sbin/nologin sambauser
``` ```
Puis nous ajoutons l'utilisateur au groupe `sambashare` que nous avons créé précédemment. Puis nous ajoutons l'utilisateur au groupe `sambashare` que nous avons créé précédemment.
```sh ```bash [Terminal]
sudo usermod -aG smbshare sambauser sudo usermod -aG smbshare sambauser
``` ```
Et nous allons configurer un mot de passe. Et nous allons configurer un mot de passe.
```sh ```bash [Terminal]
sudo smbpasswd -a sambauser sudo smbpasswd -a sambauser
``` ```
Et enfin nous allons activer le compte que nous venons de créer.
```sh ### Activer le compte Samba
```bash [Terminal]
sudo smbpasswd -e sambauser sudo smbpasswd -e sambauser
``` ```
::warning ### Terminé !
__Attention :__ Si vous utilisez un pare-feu, comme ufw, n'oubliez pas d'autoriser les IP des machines qui accéderont à votre dossier partagé :
```sh
sudo ufw allow from ipdelamachine to any app Samba
```
:: ::
## Accéder à un dossier partagé ## Accéder à un dossier partagé
::note
A présent, nous sommes sur votre `machine-locale` qui nécessite d'accéder au dossier partagé `/video` présent sur la `machine-distante`. ::steps{level="3"}
:: ### Installer les paquets nécessaires
### Installer les package nécessaires ```bash [Terminal]
```sh
sudo apt update && sudo apt upgrade sudo apt update && sudo apt upgrade
sudo apt install cifs-utils sudo apt install cifs-utils
``` ```
### Créer le dossier de destination ### 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`. 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`.
```sh ```bash [Terminal]
sudo mkdir /mnt/video sudo mkdir /mnt/video
``` ```
### Préparer le fichier .credentials ### 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. 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`. Nous allons le créer dans le dossier `/smb`.
```sh ```bash [Terminal]
sudo mkdir /smb sudo mkdir /smb
sudo nano /smb/.credentials sudo nano /smb/.credentials
``` ```
Configurez comme suit : Configurez comme suit :
```properties ```properties
@@ -154,22 +149,28 @@ username=smbuser
password=motdepasse password=motdepasse
``` ```
- `smbuser` : L'utilisateur que nous avons configuré sur la `machine-distante` * `smbuser` : L'utilisateur que nous avons configuré sur la `machine-distante`
- `motdepasse` : Le mot de passe 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"}. 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. Nous allons modifier les permissions du dossier afin que seul le propriétaire puis lire et écrire dans ce fichier.
```sh ```bash [Terminal]
sudo chmod 600 /smb/.credentials sudo chmod 600 /smb/.credentials
``` ```
### Monter le dossier partager ### 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. A présent nous allons monter le dossier.
```sh ```bash [Terminal]
sudo mount -t cifs -o credentials=/smb/.credentials //ip-machine-distante/video /mnt/video sudo mount -t cifs -o credentials=/smb/.credentials //ip-machine-distante/video /mnt/video
``` ```
@@ -177,45 +178,48 @@ Remplacez `ip-machine-distante` par l'adresse IP de votre `machine-distante`
Vérifiez que cela a fonctionné en tapant : Vérifiez que cela a fonctionné en tapant :
```sh ```bash [Terminal]
sudo mount -t cifs sudo mount -t cifs
``` ```
Vous verrez différentes informations qui confirmerons le succès du montage. 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` ! Et voilà, à présent vous accédez au dossier /video de `votre machine-distante`, depuis votre `machine-locale` !
### Automatiser le montage au boot ### (Optionnel) Automatiser le montage au démarrage
Par défaut, les dossiers pattagés ne sont pas connectés automatiquement au redémarrage. Pour autoamtiser cet aspect, nous allons modifier le fichier `/etc/fstab`. 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`. D'abord, sauvegardons notre fichier `fstab`.
```sh ```bash [Terminal]
sudo cp /etc/fstab /etc/fstab.bak 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`. Puis nous allons ajouter une ligne à la fin du fichier comportant les informations de montages dans le fichier `fstab`.
```sh ```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 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. Redémarrez.
```sh ```bash [Terminal]
sudo reboot sudo reboot
``` ```
Une fois redémarré, vérifiez que le montage est correct Une fois redémarré, vérifiez que le montage est correct
```sh ```bash [Terminal]
sudo mount -t cifs sudo mount -t cifs
``` ```
### Et voilà !
::
Et voilà ! ::tip
__Démonter le dossier partagé__
### Démonter le dossier partagé ```bash [Terminal]
```sh
sudo umount -t cifs /mnt/video sudo umount -t cifs /mnt/video
``` ```
::