Outils pour utilisateurs

Outils du site


lxc_smb

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

lxc_smb.txt · Dernière modification : 2024/08/13 19:24 de luc