Pour diverses raisons, vous pouvez être amené à transférer des fichiers par le réseau vers votre Raspberry pi, ou au contraire en récupérer. Il est également possible de modifier directement un fichier par le réseau, pratique pour programmer le Raspberry Pi. Il existe pour cela de nombreuses solutions, mais nous verrons dans ce billet l’utilisation du protocole SMB, via le logiciel samba, qui permet de faire des “partages Windows” en reproduisant le protocole de ce système. Si ce n’est pas nécessairement le meilleur protocole pour tous les usages, il sera accessible depuis les postes sous Linux, Unix, Windows, ou encore MacOS, et donc probablement le plus répandu. Nous verrons ici comment installer et configurer tout cela sur votre Raspberry pi.

Nous verrons tout d’abord une fiche rapide pour réaliser le partage du répertoire home , sans explications, puis dans une seconde partie, nous verrons la même chose et d’autres en plus, mais cette fois ci avec des explications détaillées.

En résumé : fiche rapide

Samba possède de nombreuses options de configuration. Dans cette section du billet, nous faisons un récapitulatif rapide des étapes pour partager le home de l’utilisateur pi sous une raspbian :

Première étape : installer samba

Pour cela on se connecte au système sur un terminal pour lancer la commande suivante :

sudo apt-get install samba samba-common-bin

Seconde étape : configurer le partage

Il faut maintenant modifier le fichier de configuration de samba pour ajouter le partage voulu, en collant ceci à la fin, dans la section “shares“:

[pihome]
comment = code folder
path = /home/pi
writeable = yes
browseable = yes
read only = no
create mask = 0755

Troisième étape : définir le mot de passe utilisateur

Samba utilise des mots de passe différents de ceux du système, par défaut. Si nous essayons de nous connecter tout de suite, on n’y arrivera pas.  Il faut donc lancer dans un terminal la commande suivante :

sudo smbpasswd -a pi

On pourra ainsi définir le mot de passe pour l’utilisateur pi pour samba.

Quatrième étape (optionnelle) : changer le nom de la machine

Si vous souhaitez changer le nom de machine qui apparaitra sur le réseau, il suffit d’utiliser l’utilitaire raspi-config :

sudo raspi-config

Choisissez alors dans le menu l’option 8 Advanced options, puis l’option A2 Hostname. Passez le message, puis saisissez le nom souhaité en respectant les instructions.
Faites ensuite Finish, puis acceptez de redémarrer le système.

Redémarrer samba pour appliquer des modifications

Si vous redémarrez le pi, les modifications seront prises en compte. Mais ce n’est pas nécessaire, et il suffit de redémarrer le service samba quand on a modifié son fichier de configuration :

sudo systemctl restart smbd

Installation des logiciels

La première étape sera d’installer les logiciels requis. Commençons tout d’abord par samba. Pour cela, ouvrez un terminal ou une session ssh, puis tapez la commande suivante :

sudo apt-get install samba samba-common-bin

On vous demandera alors une confirmation, à laquelle vous pourrez répondre par “o” pour oui. Le système téléchargera et installera alors les fichiers requis.

sudo apt-get install samba samba-common-bin

sudo apt-get install samba samba-common-bin

En cas d’erreur suite à la commande précédente, n’hésitez pas à faire une mise à jour de la liste des paquets via un sudo apt-get update, toujours dans un terminal.

 

Configuration

Passons maintenant à la configuration du service. Selon ce que vous souhaitez, il faudra configurer d’une façon ou d’une autre celui ci, pour permettre l’accès aux utilisateurs autorisés seulement, à tout le monde, autoriser l’écriture ou non, etc…

Configuration pour un accès avec mot de passe

Si nous souhaitons pouvoir accéder à un répertoire en se connectant avec un nom d’utilisateur et un mot de passe, il faudra que cet utilisateur existe sur le Raspberry pi. Commençons tout d’abord par voir comment configurer le système permettre de se connecter avec l’utilisateur pi qui existe par défaut.

Pour cela, il faut modifier le fichier de configuration de samba, en faisant par exemple :

sudo nano /etc/samba/smb.conf

Si l’on souhaite partager le répertoire code on ajoutera par exemple ceci :

[coding]
comment = code folder
path = /home/pi/code
writeable = yes
browseable = yes
read only = no
create mask = 0755

Dès lors, nous avons créé un partage accessible depuis le réseau. Toutefois, si l’on essaie tout de suite d’y accéder, cela ne fonctionnera pas, car l’utilisateur n’a pas de mot de passe défini pour samba. Pour y remédier, nous allons utiliser la commande smbpasswd :

sudo smbpasswd -a pi

Nous pourrons changer également le paramètre security, en dé-commentant la ligne suivante du fichier smb.conf :

security = user

Il suffit pour cela d’enlever le # présent devant. Cette ligne se trouve dans la partie authentication.
Cela permet d’augmenter la sécurité du système, puisqu’il faudra un compte utilisateur valide sur le système.

Par défaut, cela ajoutera également le partage du répertoire home (pi)

On peut alors appliquer les changements en redémarrant le service samba via la commande suivante :

sudo systemctl restart smbd

Pour des anciennes versions de debian et dérivés, on faisait ceci :

sudo service samba restart

Ce n’est toutefois plus valide depuis Raspbian Jessie.

Pour accéder aux partages définis, il faudra ouvrir l’adresse réseau \\adresse_IP_du_RaspberryPi, puis ouvrir le partage. Il faudra alors ouvrir le partage et saisir les identifiants.

Configurer le serveur pour voir son nom sur le réseau simplement

Nous souhaitons maintenant pouvoir accéder à notre partage réseau sans avoir à connaitre son IP. Pour cela, il sera nécessaire de définir un nom pour le serveur.

Pour cela nous activerons le support wins, en dé-commentant/ajoutant/modifiant la ligne suivante

wins support = yes

Nous allons également changer/définir le nom d’hôte du Raspberry Pi. Pour cela deux solutions simples existent, nous rappellerons ici la première, qui est d’utiliser l’utilitaire intégré à Raspbian, raspi-config :

sudo raspi-config

Choisissez alors dans le menu l’option 8 Advanced options, puis l’option A2 Hostname. Passez le message, puis saisissez le nom souhaité en respectant les instructions.
Faites ensuite Finish, puis acceptez de redémarrer le système.

Pour plus d’informations sur le sujet (tutoriel détaillé avec les deux méthodes et illustrations), voyez ce billet que nous avons posté plus tôt.

Dès lors, il sera possible d’accéder au partage par le nom de la machine pour peu qu’elle soit sur le même réseau que les autres. Si nous n’avions pas défini le nom de la machine, celui ci aurait été raspberrypi par défaut, ce qui posera problème si plusieurs machines du même nom ont un service samba qui tourne.

On peut également forcer un nom d’hôte pour samba, en ajoutant la ligne suivante dans /etc/samba/smb.conf :

netbios name = nom_machine

Dans ce cas, le nom affiché dans les partages sera celui ci plutôt que le nom défini.

 

Ajouter des accès en lecture seule pour les utilisateurs invités (guest)

Voyons maintenant comment permettre aux utilisateurs non enregistrés (invités, ou guest) de pouvoir accéder à des fichiers (téléchargement), sans pour autant leur permettre de les modifier.

Il faudra pour cela ajouter dans le fichier smb.conf un partage comme le suivant :

[public]
        path = /home/pi/partage_lecture
        comment = partage accessible en lecture aux utilisateurs
        writable = yes
        guest ok = yes
        guest account = ftp
        guest only = no
        create mask = 0755 

 

La ligne qui permet l’accès aux utilisateurs invités est guest ok = yes.

Nous avons ici indiqué que les utilisateurs invités se connectent en tant que ftp, un utilisateur qui fonctionne généralement pour cet usage.  Trouvez plus d’informations dans la doc de samba relative à ce sujet sur ce lien (en).

 

Réseaux sociaux