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
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
Sur l'hôte, on va :
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