--- navigation: true title: Samba main: fluid: false --- :ellipsis{left=0px width=40rem top=10rem blur=140px} # 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. De nombreux tutorials existent pour configurer Samba sous windows ou sur un NAS type Synology, ici nous nous concentrons sur Debian. ::alert{type="info"} 🎯 __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) ## Partager un dossier réseau --- ::alert{type="info"} :::list{type="info"} - 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`. ::: :: ### Installer le serveur samba ```shell sudo apt update && sudo apt upgrade sudo apt install samba smbclient cifs-utils ``` ### Créer le dossier `/video` ```shell sudo mkdir /video ``` ### Configuration du partage Ensuite nous allons éditer le fichier `/etc/samba/smb.conf` ::alert{type="success"} ✨ __Astuce :__ vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal. :: ```shell sudo vim /etc/samba/smb.conf ``` Localisez la variable `workgroup` puis passez en mode modification en appuyant sur `i` et nommez votre worgroup, par exemple `::::properties workgroup = WORKGROUP` Puis allez à la fin du fichier et collez la configuration suivante ```properties [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 ``` Appuyez sur `Echap` pour quitter le mode notification puis tapez `:x` et appuyez sur `Entrée` pour sauvegarder et quitter. ### 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. Creez le groupe. ```shell sudo groupadd smbshare ``` Nous allons maintenant permettre au groupe d'avoir le controle sur le dossier `/video`. ```shell sudo chgrp -R smbshare /video ``` Et maintenant nous allons donner les permissions nécessaires aux dossiers et fichier hérités. ```shell sudo chmod 2775 /public ``` 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. ```shell sudo useradd -M -s /sbin/nologin sambauser ``` Puis nous ajoutons l'utilisateur au groupe `sambashare` que nous avons créé précédemment. ```shell sudo usermod -aG smbshare sambauser ``` Et nous allons configurer un mot de passe. ```shell sudo smbpasswd -a sambauser ``` Et enfin nous allons activer le compte que nous venons de créer. ```shell sudo smbpasswd -e sambauser ``` ::alert{type="warning"} :::list{type="warning"} - __Attention :__ Si vous utilisez un pare-feu, comme ufw, n'oubliez pas d'autoriser les IP des machines qui accéderont à votre dossier partagé : ::: ```shell sudo ufw allow from ipdelamachine to any app Samba :: ## Accéder à un dossier partagé --- ::alert{type="info"} :::list{type="info"} - 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`. ::: :: ### Installer les package nécessaires ```shell 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`. ```shell 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`. ```shell sudo mkdir /smb sudo vi /smb/.credentials ``` Passez en mode modification en appuyant sur `i` et configurez comme suit : ```properties 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` Appuyez sur `Echap` afin de quitter le mode modification, puis tapez `:x` et appuyez sur `Entrée` pour sauvegarder et quitter. Nous allons modifier les permissions du dossier afin que seul le propriétaire puis lire et écrire dans ce fichier. ```shell sudo chmod 600 /smb/.credentials ``` ### Monter le dossier partager A présent nous allons monter le dossier. ```shell sudo mount -t cifs -a 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 : ```shell 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` ! ### Automatiser le montage au boot 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`. D'abord, sauvegardons notre fichier `fstab`. ```shell 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`. ```shell 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. ```shell sudo reboot ``` Une fois redémarré, vérifiez que le montage est correct ```shell sudo mount -t cifs ``` Et voilà ! ### Démonter le dossier partagé ```shell sudo umount -t cifs /mnt/video ```