Sommaire

Serveur de fichier sous Ubuntu 18.04

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.

1
2
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]” :

1
2
3
4
# 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 :

1
2
3
4
5
6
7
8
9
[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.

1
2
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 :

1
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.

1
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.

/serveur-de-fichier-sous-ubuntu-18-04/img/image-5.webp
Demande d’authentification

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.

1
2
3
4
5
6
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.

1
2
3
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.

1
2
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 :

1
2
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.