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.
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.
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).
Bonjour!
Je n’arrive pas à paramétrer le mot de passe de l’utilisateur. J’ai bien créé mon utilisateur ainsi que son mdp avec les commandes données. J’ai également paramétrer mon dossier partager comme indiqué dans l’article mais rien y fait, aucun identifiant/mdp est demandé.
Je pense que ça pourrait être dû au fait qu’il n’y a plus le paramètre “sécurité = user” sur la nouvelle version de Samba (j’ai pourtant bien cherché dans le smb.conf).
Auriez-vous une solution?
Matias
J’attends la deuxième partie, cad aller chercher des fichiers sur des PC Windows depuis le Raspberry. Cet aspect est trés peu envisagé par les Linuxiens (trop difficile?)
4o4sz5
lzy44z
kol55t
xn8ti8
ne0f38
u296sh
6t99c2
8vzsis
qqx06r
tzymdw
3xliyi
vgj8xp