Libre à vous de partager

Bienvenue dans cette nouvelle étape de notre défi où nous allons installer un serveur de partage SAMBA du défi. L’objectif est d’obtenir un partage de fichiers réseau compatibles avec les ordinateurs Windows. Ainsi les différents postes Windows et Linux de votre réseau pourront échanger en toute simplicité des documents sans passer par Internet.

Nous n’aborderons que la configuration simplifiée de cet outil qui permet jusqu’à remplacer un contrôleur de domaine Windows.

Présentation du partage SAMBA du défi

Windows utilise son propre protocole d’échange réseau. Il s’agit du protocole SMB. Implémentée en natif sous le système d’exploitation Windows, il n’est pas pris en charge par défaut sous Linux.

Un projet communautaire, nommé SAMBA, a vu le jour au cours des années 1990 afin de fournir une implémentation libre de ce protocole. Au fil des nouvelles versions de Windows, amenant des modifications protocole SMB, le projet a évolué en plusieurs versions dont certaines ne sont pas compatibles entre elles.

Aujourd’hui nous sommes à la version 4 du logiciel SAMBA. Beaucoup de documentation encore présente sur Internet, font référence à des versions anciennes de ce logiciel. Il s’agit notamment de la version 2. La version 3 a amené de nombreuses modifications dont l’intégration directe d’un serveur DNS et d’un annuaire afin de rendre plus simple la mise en place et la configuration d’un contrôleur de domaine Windows.

Nous n’utiliserons pas ses capacités et resteront sur une configuration de base : le partage de fichiers. Sachez qu’il existe la possibilité de partager une imprimante connectée directement au Raspberry pi, mais nous ne le mettrons pas en place. Cette dernière n’est pas forcément complexe mais dépend beaucoup de la prise en charge par le système d’impression de Linux du modèle de l’imprimante.

En effet, si certains constructeurs fournissent directement les informations nécessaires à la fabrication d’un pilote libre, d’autres se contentent de fournir un pilote Linux qui généralement n’est pas suivi ou rarement mis à jour. Une minorité ne fournisse aucun support sous Linux. Cette dernière catégorie tend à disparaître du fait de l’augmentation de l’utilisation de Linux sur les postes de travail notamment en Asie.

La configuration de samba pour le partage de l’imprimante est simple et proche du partage de fichiers, si l’impression est parfaitement opérationnelle sous le Raspberry pi. Nous nous contenterons d’autoriser le chargement par SAMBA des imprimantes connues par le serveur d’impression CUPS. Cela fournira les options par défaut de partage. Ce qui est généralement suffisant dans le cadre d’une utilisation personnelle.

À la fin de la configuration du serveur de samba du défi, le serveur de fichiers du Raspberry pi sera alors visible par la totalité des postes Windows à condition que ceux-ci aient autorisé la détection automatique du voisinage réseau.

Mise en place du partage SAMBA du défi sur le Raspberry pi

Comme pour les fois précédentes, nous allons nous connecter en SSH sur le Raspberry pi afin de le configurer.

Installation du partage SAMBA du défi

L’installation est elle aussi simple comme les précédentes installations et se fait via la commande apt.

gabriel@raspberrypi:~ $ sudo apt install samba
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
  attr libcephfs2 liburing1 python3-dnspython python3-gpg python3-markdown python3-requests-toolbelt python3-samba python3-tdb python3-yaml samba-common samba-common-bin samba-dsdb-modules samba-vfs-modules tdb-tools
Paquets suggérés :
  python3-sniffio python3-trio python-markdown-doc ctdb ldb-tools ntp | chrony smbldap-tools ufw winbind heimdal-clients
Les NOUVEAUX paquets suivants seront installés :
  attr libcephfs2 liburing1 python3-dnspython python3-gpg python3-markdown python3-requests-toolbelt python3-samba python3-tdb python3-yaml samba samba-common samba-common-bin samba-dsdb-modules samba-vfs-modules tdb-tools
0 mis à jour, 16 nouvellement installés, 0 à enlever et 4 non mis à jour.
Il est nécessaire de prendre 6 277 ko dans les archives.
Après cette opération, 44,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de :1 http://mirrors.ircam.fr/pub/raspbian/raspbian bullseye/main armhf python3-dnspython all 2.0.0-1 [103 kB]
Réception de :3 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf python3-samba armhf 2:4.13.13+dfsg-1~deb11u5 [2 319 kB]
Réception de :2 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf python3-tdb armhf 1.4.3-1+b1 [19,7 kB]
Réception de :5 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf samba-common-bin armhf 2:4.13.13+dfsg-1~deb11u5 [620 kB]
Réception de :4 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf samba-common all 2:4.13.13+dfsg-1~deb11u5 [171 kB]
Réception de :6 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf tdb-tools armhf 1.4.3-1+b1 [30,5 kB]
Réception de :8 http://mirrors.ircam.fr/pub/raspbian/raspbian bullseye/main armhf attr armhf 1:2.4.48-6 [40,0 kB]
Réception de :7 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf samba armhf 2:4.13.13+dfsg-1~deb11u5 [1 097 kB]
Réception de :9 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf libcephfs2 armhf 14.2.21-1+rpi1 [420 kB]
Réception de :10 http://mirrors.ircam.fr/pub/raspbian/raspbian bullseye/main armhf liburing1 armhf 0.7-3 [7 708 B]
Réception de :11 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf python3-gpg armhf 1.14.0-1+b1 [385 kB]
Réception de :12 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian bullseye/main armhf python3-markdown all 3.3.4-1 [71,4 kB]
Réception de :13 http://mirrors.ircam.fr/pub/raspbian/raspbian bullseye/main armhf python3-requests-toolbelt all 0.9.1-1 [41,7 kB]
Réception de :14 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian bullseye/main armhf python3-yaml armhf 5.3.1-5 [127 kB]
Réception de :15 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf samba-dsdb-modules armhf 2:4.13.13+dfsg-1~deb11u5 [365 kB]
Réception de :16 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf samba-vfs-modules armhf 2:4.13.13+dfsg-1~deb11u5 [461 kB]
6 277 ko réceptionnés en 3s (2 310 ko/s)
Préconfiguration des paquets...
Sélection du paquet python3-dnspython précédemment désélectionné.
(Lecture de la base de données... 108961 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../00-python3-dnspython_2.0.0-1_all.deb ...
Dépaquetage de python3-dnspython (2.0.0-1) ...
Sélection du paquet python3-tdb précédemment désélectionné.
Préparation du dépaquetage de .../01-python3-tdb_1.4.3-1+b1_armhf.deb ...
Dépaquetage de python3-tdb (1.4.3-1+b1) ...
Sélection du paquet python3-samba précédemment désélectionné.
Préparation du dépaquetage de .../02-python3-samba_2%3a4.13.13+dfsg-1~deb11u5_armhf.deb ...
Dépaquetage de python3-samba (2:4.13.13+dfsg-1~deb11u5) ...
Sélection du paquet samba-common précédemment désélectionné.
Préparation du dépaquetage de .../03-samba-common_2%3a4.13.13+dfsg-1~deb11u5_all.deb ...
Dépaquetage de samba-common (2:4.13.13+dfsg-1~deb11u5) ...
Sélection du paquet samba-common-bin précédemment désélectionné.
Préparation du dépaquetage de .../04-samba-common-bin_2%3a4.13.13+dfsg-1~deb11u5_armhf.deb ...
Dépaquetage de samba-common-bin (2:4.13.13+dfsg-1~deb11u5) ...
Sélection du paquet tdb-tools précédemment désélectionné.
Préparation du dépaquetage de .../05-tdb-tools_1.4.3-1+b1_armhf.deb ...
Dépaquetage de tdb-tools (1.4.3-1+b1) ...
Sélection du paquet samba précédemment désélectionné.
Préparation du dépaquetage de .../06-samba_2%3a4.13.13+dfsg-1~deb11u5_armhf.deb ...
Dépaquetage de samba (2:4.13.13+dfsg-1~deb11u5) ...
Sélection du paquet attr précédemment désélectionné.
Préparation du dépaquetage de .../07-attr_1%3a2.4.48-6_armhf.deb ...
Dépaquetage de attr (1:2.4.48-6) ...
Sélection du paquet libcephfs2 précédemment désélectionné.
Préparation du dépaquetage de .../08-libcephfs2_14.2.21-1+rpi1_armhf.deb ...
Dépaquetage de libcephfs2 (14.2.21-1+rpi1) ...
Sélection du paquet liburing1:armhf précédemment désélectionné.
Préparation du dépaquetage de .../09-liburing1_0.7-3_armhf.deb ...
Dépaquetage de liburing1:armhf (0.7-3) ...
Sélection du paquet python3-gpg précédemment désélectionné.
Préparation du dépaquetage de .../10-python3-gpg_1.14.0-1+b1_armhf.deb ...
Dépaquetage de python3-gpg (1.14.0-1+b1) ...
Sélection du paquet python3-markdown précédemment désélectionné.
Préparation du dépaquetage de .../11-python3-markdown_3.3.4-1_all.deb ...
Dépaquetage de python3-markdown (3.3.4-1) ...
Sélection du paquet python3-requests-toolbelt précédemment désélectionné.
Préparation du dépaquetage de .../12-python3-requests-toolbelt_0.9.1-1_all.deb ...
Dépaquetage de python3-requests-toolbelt (0.9.1-1) ...
Sélection du paquet python3-yaml précédemment désélectionné.
Préparation du dépaquetage de .../13-python3-yaml_5.3.1-5_armhf.deb ...
Dépaquetage de python3-yaml (5.3.1-5) ...
Sélection du paquet samba-dsdb-modules:armhf précédemment désélectionné.
Préparation du dépaquetage de .../14-samba-dsdb-modules_2%3a4.13.13+dfsg-1~deb11u5_armhf.deb ...
Dépaquetage de samba-dsdb-modules:armhf (2:4.13.13+dfsg-1~deb11u5) ...
Sélection du paquet samba-vfs-modules:armhf précédemment désélectionné.
Préparation du dépaquetage de .../15-samba-vfs-modules_2%3a4.13.13+dfsg-1~deb11u5_armhf.deb ...
Dépaquetage de samba-vfs-modules:armhf (2:4.13.13+dfsg-1~deb11u5) ...
Paramétrage de python3-requests-toolbelt (0.9.1-1) ...
Paramétrage de attr (1:2.4.48-6) ...
Paramétrage de python3-yaml (5.3.1-5) ...
Paramétrage de samba-common (2:4.13.13+dfsg-1~deb11u5) ...

Creating config file /etc/samba/smb.conf with new version
Paramétrage de libcephfs2 (14.2.21-1+rpi1) ...
Paramétrage de python3-tdb (1.4.3-1+b1) ...
Paramétrage de python3-gpg (1.14.0-1+b1) ...
Paramétrage de tdb-tools (1.4.3-1+b1) ...
update-alternatives: utilisation de « /usr/bin/tdbbackup.tdbtools » pour fournir « /usr/bin/tdbbackup » (tdbbackup) en mode automatique
Paramétrage de python3-markdown (3.3.4-1) ...
Paramétrage de liburing1:armhf (0.7-3) ...
Paramétrage de python3-dnspython (2.0.0-1) ...
Paramétrage de samba-dsdb-modules:armhf (2:4.13.13+dfsg-1~deb11u5) ...
Paramétrage de python3-samba (2:4.13.13+dfsg-1~deb11u5) ...
Paramétrage de samba-vfs-modules:armhf (2:4.13.13+dfsg-1~deb11u5) ...
Paramétrage de samba-common-bin (2:4.13.13+dfsg-1~deb11u5) ...
Checking smb.conf with testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed
Server role: ROLE_STANDALONE

Done
Paramétrage de samba (2:4.13.13+dfsg-1~deb11u5) ...
Ajout du groupe « sambashare » (GID 125)...
Fait.
Samba is not being run as an AD Domain Controller: Masking samba-ad-dc.service
Please ignore the following error about deb-systemd-helper not finding those services.
(samba-ad-dc.service masked)
Created symlink /etc/systemd/system/multi-user.target.wants/nmbd.service → /lib/systemd/system/nmbd.service.
Failed to preset unit: Unit file /etc/systemd/system/samba-ad-dc.service is masked.
/usr/bin/deb-systemd-helper: error: systemctl preset failed on samba-ad-dc.service: No such file or directory
Created symlink /etc/systemd/system/multi-user.target.wants/smbd.service → /lib/systemd/system/smbd.service.
samba-ad-dc.service is a disabled or a static unit, not starting it.
Traitement des actions différées (« triggers ») pour man-db (2.9.4-2) ...
Traitement des actions différées (« triggers ») pour libc-bin (2.31-13+rpt2+rpi1+deb11u7) ...

Configuration d’un partage SAMBA du défi

La configuration va se passer en deux temps. La première partie va t’être de configurer le démon SAMBA de manière à qu’il puisse servir les fichiers.

La deuxième partie va concerner plus le système de fichiers. En effet, la configuration de base va utiliser un dossier existant sur la carte SD. Ce qui n’est pas réellement optimum.

Configuration du logiciel

Le fichier de configuration se trouve : /etc/samba/smb.conf.

Nous allons en faire une copie de sauvegarde du fichier avant de le modifier. C’est une bonne habitude à prendre lorsque l’on modifie un fichier de configuration, de garder la dernière version qui fonctionne. Ainsi en cas de problème avec la nouvelle configuration, il suffit de remettre l’ancienne.

À la fin du fichiers, nous allons ajouter le partage.

En premier lieu, nous allons nommer le partage. Ce nom doit être mis entre crochets et ne pas contenir d’espace.

Puis nous ajouterons un commentaire qui lui peut avoir des espaces.

L’option suivante est la plus importante puisqu’il s’agit du chemin où se trouveront les données.

Les trois options suivantes concernent la gestion des droits. Vu que nous sommes dans un réseau interne, je les ai toutes passés à yes.

  • L’option guest ok permet d’autoriser ou non l’accès en anonyme.
  • L’option browseable permet de définir le fait que le partage est trouvable par le voisinage réseau.
  • L’option writeable permet de définir l’autorisation d’écriture sur le répertoire.
gabriel@raspberrypi:~ $ sudo cp  /etc/samba/smb.conf /etc/samba/smb.conf.old
gabriel@raspberrypi:~ $ sudo vim /etc/samba/smb.conf

gabriel@raspberrypi:/var/public $ cat /etc/samba/smb.conf
#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which
# are not shown in this example
#
# Some options that are often worth tuning have been included as
# commented-out examples in this file.
#  - When such options are commented with ";", the proposed setting
#    differs from the default Samba behaviour
#  - When commented with "#", the proposed setting is the default
#    behaviour of Samba but the option is considered important
#    enough to be mentioned here
#
# NOTE: Whenever you modify this file you should run the command
# "testparm" to check that you have not made any basic syntactic
# errors.

#======================= Global Settings =======================

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = WORKGROUP
...
[Public]
  comment = Partage du Rapsberry
  path = /var/public
  guest ok = yes
  browseable = yes
  writeable = yes

Configuration du stockage

Dans le cadre du partage de fichier SAMBA du défi, je vais utiliser une clé USB. La manipulation est la même qu’avec un disque dur externe. La clé USB est très bien si le partage n’est pas amené à évoluer régulièrement. Attention tout de même, pensez à sauvegarder les données qui sont sur cette clé.

Si vous utilisez un disque dur externe, je vous conseille d’utiliser un disposant d’une alimentation externe. Si ce n’est pas le cas, je vous conseille vivement de raccorder le port USB d’alimentation sur un adaptateur externe. En effet, si l’alimentation du Raspberry pi est trop sollicité, vous pouvez avoir des micros-coupures ou des ralentissements.

Nous allons d’abord créer le répertoire que nous avons renseigné dans le fichier de configuration. Si vous ne déportez pas le stockage sur une clé USB ou un disque externe, vous pouvez passer à l’étape suivante.

gabriel@raspberrypi:~ $ sudo mkdir /var/public

Nous allons d’abord monter la clé USB dans le dossier précédemment créer. Puis nous récuperons l’UUID de la partition de la clé USB afin de configurer correctement le montage automatique au démarrage.

gabriel@raspberrypi:~ $ sudo mount /dev/sda1 /var/public/
gabriel@raspberrypi:/var/public $ lsblk -f
NAME        FSTYPE FSVER LABEL  UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sda
└─sda1      ext4   1.0          f994feda-7687-4119-98fe-6a6da7309c32   13,5G     0% /var/public
mmcblk0
├─mmcblk0p1 vfat   FAT32 bootfs C336-AC83                             204,6M    20% /boot
└─mmcblk0p2 ext4   1.0   rootfs eaaa4faa-eab6-400c-950f-dc96ae4e0400    9,5G    27% /

Lors de la configuration du fichier /etc/fstab, j’utilise l’option nofail. Cette option est primordiale si la clé USB ou le disque dur n’est pas tout le temps branché au Raspberry pi. Cela va retarder le lancement du Raspberry pi, mais ne le mettra pas en erreur. Attention tout le même, samba va démarrer correctement mais affichera un dossier vide. Ce qui est parfaitement normal au vu du fonctionnement du système de fichiers.

gabriel@raspberrypi:/var/public $ cat /etc/fstab
proc            /proc           proc    defaults          0       0
PARTUUID=a06e91dc-01  /boot           vfat    defaults          0       2
PARTUUID=a06e91dc-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that
#Partage samba
UUID=f994feda-7687-4119-98fe-6a6da7309c32       /var/public     ext4    defaults,nofail         0       2

Le type de format du système de fichiers n’a aucune importance tant qu’il est pris en charge par le Raspberry pi. La clé que j’ai utilisée pour ce test est formaté en ext4 mais cela fonctionne parfaitement en exFat ou en Fat.

Configuration finale

Nous allons d’abord donner les droits 777 au dossier /var/public.

gabriel@raspberrypi:~ $ sudo chmod 777 /var/public

Puis nous allons créer un fichier test avec du texte pour vérifier que nous pouvons bien afficher le contenu du répertoire.

gabriel@raspberrypi:~ $ cd /var/public
gabriel@raspberrypi:/var/public $ touch info.txt
gabriel@raspberrypi:/var/public $ cat /var/public/info.txt
Dossier de partage du réseau local.

Présent sur une clé usb.

Enfin, nous allons relancer le service afin que toutes les modifications soient prise en compte.

gabriel@raspberrypi:/var/public $ sudo systemctl reload smbd.service

Connexion d’un client Windows au partage SAMBA du défi

Se connecter à un partage SAMBA du défi

La connexion est simple à faire. Via l’explorateur de fichiers, allez dans ce PC. Un clic droit, hors d’un élément affiché, va faire apparaître le menu. Choisir ajouter un emplacement réseau.

Explorateur Windows avant le partage
Explorateur Windows avant le partage avec menu

Ce dernier va ouvrir un assistant de connexion. Dans la première fenêtre il suffit de cliquer sur suivant.

Accueil de l'assistant de connexion réseau
Accueil de l’assistant de connexion réseau

La deuxième fenêtre ne présente aucune difficulté vue que vous n’avez qu’un seul choix disponible si vous êtes sur un Windows personnel. Dans tous les cas il faut cliquer sur « choisissez un emplacement réseau personnalisé », puis sur « suivant ».

Choix du type de connexion
Choix du type de connexion

Pour l’adresse réseau, il faut saisir \\l’adresse du Raspberry\le nom du partage. Ce dernier est le nom que vous avez entré entre crochet lors de la configuration.

Adresse du partage réseau
Adresse du partage réseau

Pour le nom, vous pouvez soit garder celui proposé par défaut soit le renommer comme j’ai fait.

Choix du nom du partage qui sera affiché dans l'explorateur
Choix du nom du partage qui sera affiché dans l’explorateur

Quand vous aurez cliqué sur « terminer », un nouvel emplacement réseau va apparaître dans l’explorateur de fichiers si la connexion à celui-ci s’est bien passée.

Confirmation de la connexion au partage SAMBA du défi
Confirmation de la connexion au partage SAMBA du défi

Partager des documents via le partage SAMBA du défi

Le partage de documents se fait directement via l’explorateur Windows comme n’importe quel autre dossier.

Explorateur de fichier avec la connexion au partage SAMBA du défi
Explorateur de fichier avec la connexion au partage SAMBA du défi

En cliquant sur l’icône du partage, vous allez accéder au partage SAMBA du défi hébergé sur le Raspberry pi. Vous pouvez voir que le fichier que nous avons créer et bien présent et que vous pouvez l’ouvrir et le modifier.

Explorateur de fichier positionné dans le partage SAMBA du défi
Explorateur de fichier positionné dans le partage SAMBA du défi

Conclusion

Félicitations, vous avez maintenant un partage SAMBA du défi qui fonctionne correctement. Cela vous permettra d’échanger des fichiers au sein de votre famille sans pour autant passer par un service cloud. La seule limite est la capacité de stockage de votre clé USB ou de votre disque dur.

Garder cependant en tête que ces données ne sont absolument pas sauvegardées. Dans ce défi, nous n’avons pas abordé la problématique des sauvegardes et je pense y revenir dessus dans un prochain article.

Laisser un commentaire