Table des matières
Accéder à un partage SMB dans un container LXC unprivileged
Il est recommandé -pour des raisons de sécurité- de faire tourner ses containers LXC en mode unprivileged. C'est d'ailleurs la config par défaut de proxmox.
Mais parfois, on souhaite accéder à un dossier partagé, que ce soit via SMB ou NFS.
Or, un container LXC unprivileged ne peut pas monter de dossier partagés via SMB / NFS.
Dans Proxmox, une solution consiste à monter le dossier partagé dans l'hôte, et d'y donner accès au container par un bindmount. voici la procédure
Etape 1 : dans le container LXC
Sur le CT LXC, on crée un groupe avec un gid connu, 10000, et on attribue l'utilisateur qui doit avoir accès en lecture/écriture à ce groupe
## sur LXC # création d'un groupe LXC avec le gid=10000 addgroup -g 10000 lxc_share # ajouter le user dans le group addgroup <username> lxc_share
Etape 2 : sur l'hôte
Sur l'hôte, on va :
- faire le montage du dossier SMB
- Donner accès à ce dossier au container
NOTE : sur proxmox, les users et group des containers sont accessibles à l'hôte, il y a un offset de 100000 sur l'uid/gid.
En utilisant ce gid, on pourra donner accès en écriture à l'utilisateur/groupe du container sur le dossier monté
## sur le host # créer un répertoire pour monter le dossier partagé mkdir /mnt/syncthing_SMB # configurer fstab //IP/shared_folder /mount/point cifs credentials=/root/credentials_SMB,_netdev,x-systemd.automount,noatime,uid=100000,gid=110000,dir_mode=0770,file_mode=0770 0 0 # NOTE : on choisit les uid/gid pour permettre au CT d'avoir les droits en écriture # NOTE : les x-systemd.automount : le mount a lieu automatiquement lors de l'accès # (et pas avant, ce qui laisse le temps à truenas de démarrer et partager ce dossier SMB
Pour rappel, le format du fichier d'identification doit être
username=<name user SMB> password=<mdp-ultra-secret>
Ensuite, on va créer le bindmount
# dans /etc/pve/lxc/ # éditer le fichier xxx.conf qui correspond à l'ID du container et rajouter mp0: /mnt/shared_bindmount,mp=/shared # NOTE : /mnt/shared_bindmount correspond au dossier sur l'hôte # NOTE : mp=/shared correspond au point de montage sur le CT
Enfin, on reboot le CT LXC