Tutoriel de mise en place d’un service de partage de fichiers Samba.
Pour la mise en place d’un service de partage de fichier sous Linux, j’ai dû naviguer sur plusieurs sites. Je vais donc regrouper ici les actions nécessaires pour la mise en place de Samba avec authentification sur un serveur Ubuntu 18.04.
Mon but dans la mise en place de ce service est de pouvoir éditer les fichiers de configuration de Home Assistant depuis mon PC Windows.
Installation
En plus de samba
, on installe le package libpam-winbind
pour gérer l’authentification.
sudo apt update
sudo apt install samba libpam-winbind
Configuration
Le fichier de configuration est ici : /etc/samba/smb.conf
Dans ce fichier la première chose à faire et de préciser qu’on va utiliser un couple user/mdp pour ce service. On ajoute aussi un attribut qui va nous permettre d’utiliser les liens symboliques. Pour cela, on ajoute les lignes suivantes dans le bloc “[global]
” :
# Pour les liens symbolique
allow insecure wide links = yes
# Pour l'authentification
security = user
J’ai ensuite mis en commentaire l’intégralité des blocs “[printers]” et “[print$]” car je n’en ai pas besoin.
On spécifie donc notre partage de la manière suivante :
[share]
comment = Partage Serveur
path = /srv/samba/share
browsable = yes
guest ok = no
read only = no
create mask = 0755
follow symlinks = yes
wide links = yes
On crée ensuite le dossier et l’on rend l’utilisateur “nobody” propriétaire du dossier.
sudo mkdir -p /srv/samba/share
sudo chown nobody:nogroup /srv/samba/share
Il convient maintenant d’associer un compte Linux existant aux comptes Samba :
sudo smbpasswd -a solidsnake
On renseigne le mot de passe de l’utilisateur (il doit être le même que celui de sa session) et l’on relance le service.
sudo systemctl restart smbd.service
Vous devriez être en mesure d’accéder au partage en tapant deux antislash suivis de l’adresse IP de votre serveur (ou son nom si vous avez un serveur de nom). En ouvrant le dossier “share”, on vous demande une authentification. Utiliser donc le compte que l’on a configuré juste avant.
Vous remarquerez que vous n’êtes pas en mesure de créer des fichiers dedans via l’explorateur Windows.
Pour y remédier, je vais créer un groupe qui sera propriétaire du dossier et y inclure mon utilisateur.
sudo addgroup mongroupesamba
sudo chown :mongroupesamba /srv/samba/share
sudo chmod g+rwx /srv/samba/share/
sudo usermod -a -G mongroupesamba solidsnake
sudo systemctl restart smbd.service
Ainsi, vous devriez être en mesure de créer des fichiers dans ce dossier.
Dossier de configuration sur le partage
Comme préciser au début du tutoriel, je souhaite pouvoir accéder à mon dossier de configuration de Home Assistant en Samba. Pour cela, je vais ajouter mon utilisateur homeassistant
dans le groupe et crée un lien symbolique dans le dossier share
pour accéder au dossier de configuration.
sudo usermod -a -G mongroupesamba homeassistant
cd /srv/samba/share/
sudo ln -s /home/homeassistant/.homeassistant/ HA_config
Je me retrouve donc avec un dossier HA_config
dans l’arborescence de mon partage de fichiers. En l’ouvrant, j’accède directement au dossier /home/homeassistant/.homeassistant
.
À ce niveau, je ne pouvais modifier les fichiers de configuration. J’ai alors ajouté mon utilisateur au groupe de Home Assistant (qui s’appelle comme l’utilisateur : homeassistant ) et redémarrer le service Samba. Cela est rendu possible, car le groupe a les droits d’écriture sur les fichiers de configuration.
sudo usermod -a -G homeassistant solidsnake
sudo systemctl restart smbd.service
EDIT : J’ai remarqué un autre jour que je ne pouvais pas créer de fichier dans mon dossier sous Windows (donc avec mon utilisateur).
Pour appliquer les droits du groupe, voici la bonne méthode :
sudo chgrp -R mongroupesamba /home/homeassistant/.homeassistant
sudo chmod -R g+rwx /home/homeassistant/.homeassistant
Conclusion
J’ai donc trouvé un moyen de venir à mes fins.
Pour la dernière partie, je ne sais pas si j’ai fait les choses comme il le faut. En tout cas, il y a bien seulement mon utilisateur qui peut éditer les fichiers de configuration.