{ "meta": { "title": "Serveur Samba en LXC | ProxMenux Documentation", "description": "Exécutez un serveur Samba (SMB / CIFS) dans un conteneur LXC Proxmox avec ProxMenux. Installation automatique de samba, gestion de /etc/samba/smb.conf, des utilisateurs smbpasswd et du groupe sharedfiles pour les dossiers montés par bind mount. Nécessite un conteneur privilégié.", "ogTitle": "Serveur Samba en LXC | ProxMenux Documentation", "ogDescription": "Exposez des dossiers via SMB/CIFS depuis un LXC privilégié. Installation automatique, utilisateur smbpasswd et permissions adaptées aux bind mounts." }, "header": { "title": "Serveur Samba en LXC", "description": "Exécutez un serveur Samba (SMB / CIFS) à l'intérieur d'un conteneur Proxmox LXC et exposez des dossiers aux clients Windows / macOS / Linux sur le réseau. ProxMenux installe samba, crée un utilisateur Samba avec smbpasswd, gère /etc/samba/smb.conf et applique des permissions adaptées aux bind mounts lorsque le dossier partagé vient de l'hôte.", "section": "Stockage et partage · LXC" }, "privReq": { "title": "Conteneur privilégié requis", "body": "Samba prend l’identité de l’utilisateur qui se connecte avec setgroups() sur chaque connexion arborescente (le moment où un client ouvre un partage). Dans un LXC non privilégié, le noyau rejette ce syscall parce que l'espace de nom d'utilisateur du conteneur est créé avec setgroups=deny — et smbd répond en arrêtant le processus de travail avec PANIC: sys_setgroups failed. Le résultat est que smbd démarre et lie les ports 139/445, mais chaque connexion client échoue avec NT_STATUS_CONNECTION_DISCONNECTED. Le script impose un CT privilégié pour cette raison et s’arrête si le CT n’est pas privilégié. Il n'y a pas de correctif propre du côté serveur; utilisez un CT privilégié ou lancez Samba à l'intérieur d’une VM." }, "what": { "heading": "Ce que ça fait", "body": "Le conteneur devient un serveur SMB/CIFS : il exécute smbd, expose un dossier via /etc/samba/smb.conf et accepte les connexions clientes sur les ports 139 / 445. Les clients voient le partage à \\\\<ct-ip>\\<share-name> dans Windows Explorer, smb://<ct-ip>/<share-name> dans macOS Finder, ou via mount.cifs sur Linux.", "diagramServerLabel": "LXC (privilégié) — Serveur Samba", "diagramServerDetail": "/mnt/data\n(dossier exposé)\n\nsmbd + nmbd en cours d’exécution\n\nUtilisateur: \n(via smbpasswd)\n\nGroupe imposé:\nsharedfiles", "diagramClientLabel": "Tout client sur le réseau", "diagramClientDetail": "Windows: \\\\\\\nmacOS: smb:///\nLinux: mount.cifs", "diagramArrow": "SMB / CIFS" }, "perms": { "heading": "Deux chemins d'autorisation selon le type de dossier", "body": "Avant d'ajouter la part à smb.conf, le script vérifie si le dossier choisi est un montage bind de l'hôte ou un dossier local normal à l'intérieur du CT — et applique des droits de propriété différents en conséquence:", "headerType": "Type de dossier", "headerAction": "Ce que fait le script", "bindType": "Bind-mount de l'hôte", "bindTypeSubRich": "détecté par la sortie mount", "bindActionRich": "Crée le groupe sharedfiles (par défaut GID 999, dynamique si pris), y ajoute l'utilisateur Samba, puis chown root:sharedfiles + chmod 2775 (SGID — nouveaux fichiers héritent du groupe). Si l'utilisateur ne peut toujours pas écrire, applique setfacl -m u:<user>:rwx.", "localType": "Dossier local à l'intérieur de CT", "localTypeSub": "aucun montage de liaison détecté", "localActionRich": "Propriété standard: chown -R <user>:<user> + chmod -R 755. Aucun groupe partagé n'est nécessaire car aucun autre CT n'écrit dans ce dossier. Retourne à setfacl si l'accès à l'écriture est toujours manquant.", "gidTitle": "GID pour 'sharedfiles' diffère du flux du serveur NFS", "gidBody": "Le script serveur Samba utilise GID 999 pour sharedfiles, tandis que le flux du serveur NFS utilise GID 101000. Si vous exécutez les deux serveurs dans le même CT et que vous voulez un seul groupe partagé dans les deux protocoles, modifiez l'un d'eux pour correspondre à l'autre après l'installation (p. ex. groupmod -g 101000 sharedfiles) et ré-appliquer la propriété sur les dossiers touchés. C'est une incohérence connue dans les scripts actuels." }, "opening": { "heading": "Ouverture de l'outil", "body": "Dans le menu principal, ouvrez Storage & Share Manager → Configure Samba Server in LXC. Seuls les CT privilégiés sont proposés. Choisissez le CT cible ; le script le démarre s’il est arrêté et refuse les CT non privilégiés. Le menu comporte cinq options.", "imageAlt": "Menu Samba Server Manager — Créer / Afficher / Supprimer / Statut / Désinstaller" }, "howRuns": { "heading": "Comment fonctionne le script (Créer le flux)" }, "modes": { "heading": "Les trois modes de partage", "intro": "Chaque mode écrit une stanza différente à smb.conf. Tous les trois comprennent le valid users = <username> (pas d'anonymat), le force group = sharedfiles (ainsi les nouveaux fichiers appartiennent au groupe partagé) et le veto files = /lost+found/ (le cache des clients).", "headerMode": "Mode", "headerBlock": "Bloc écrit en smb.conf", "rwMode": "Lecture et écriture", "roMode": "Lecture seule", "customMode": "Personnalisé", "customBodyRich": "Vous tapez vos propres directives dans une boîte en texte libre. Le ProxMenux les enveloppe toujours dans un bloc [share] avec les path, valid users, force group et veto files." }, "manual": { "heading": "Équivalent manuel", "body": "Reproduisez toute la procédure manuellement. Chaque commande s’exécute dans le CT via pct exec <ctid> -- ou pct enter <ctid> :" }, "connect": { "heading": "Connexion des clients", "headerOs": "Système d'exploitation du client", "headerHow": "Comment se connecter", "windowsOs": "Windows", "windowsHowRich": "Explorateur de fichiers → barre d’adresse : \\\\<ct-ip>\\<share-name>. Ou Connecter un lecteur réseau → cocher « Se connecter à l’aide d’informations d’identification différentes ».", "macosOs": "macOS", "macosHowRich": "Finder → Aller → Se connecter au serveur... → smb://<ct-ip>/<share-name>. Ou mount_smbfs //user@<ct-ip>/<share> /mountpoint.", "linuxOs": "Linux", "linuxHowRich": "mount -t cifs //<ct-ip>/<share> /mnt/x -o username=<u>,password=<p>,iocharset=utf8. Ou utilisez le client Samba dans la page LXC si le client est un autre client Proxmox CT." }, "view": { "heading": "Voir les partages actuels", "body": "Analyse /etc/samba/smb.conf à l'intérieur du CT et liste tous les blocs [share] (en ignorant [global], [homes], [printers]) avec son chemin. Utile comme un inventaire rapide." }, "delete": { "heading": "Supprimer un partage", "body": "Permet de choisir un partage par nom, supprime le bloc de smb.conf (sed supprime de [share] jusqu'à la prochaine ligne blanche), et redémarre smbd. Le dossier lui-même et son contenu restent intacts." }, "status": { "heading": "Vérifier l'état de Samba", "body": "Indique si smbd et nmbd sont installés et actifs, liste les utilisateurs de Samba (pdbedit -L) et imprime les sessions actives (smbstatus)." }, "uninstall": { "heading": "Désinstaller le serveur Samba", "body": "Nettoyage complet après confirmation : arrête et désactive smbd et nmbd, sauvegarde smb.conf dans smb.conf.backup.YYYYMMDD_HHMMSS, supprime les utilisateurs Samba avec smbpasswd -x et les paquets Samba avec apt-get purge. Les dossiers exportés eux-mêmes ne sont pas supprimés.", "warnTitle": "Les dossiers survivent — sauvegarde des données séparément", "warnBody": "Supprimer un partage et Désinstaller le serveur Samba retirent la configuration de partage. Les données des dossiers exportés sont conservées. Pour les supprimer aussi, utilisez explicitement rm -rf après la fin du script." }, "troubleshoot": { "heading": "Dépannage", "privTitle": "Conteneur privilégié requis (le script s’arrête)", "privBody": "Le CT sélectionné n'est pas privilégié et smbd ne peut pas y servir de fichiers. Si vous contournez le contrôle et configurez Samba à la main, smbd démarre et les ports s'ouvrent, mais la première connexion client panique avec PANIC: sys_setgroups failed dans /var/log/samba/log.<client> et le client voit NT_STATUS_CONNECTION_DISCONNECTED. La cause est l'espace de noms d'utilisateur non privilégié ayant setgroups=deny, qui bloque l’adoption de l’identité de l’utilisateur par Samba à chaque connexion. Ni le features=keyctl=1 ni la suppression du force user / force group ne changent cela. Les seules options utilisables sont : convertir le CT en privilégié, ou déplacer Samba vers une VM.", "aptTitle": "Échec de apt-get install", "aptIntro": "Le script suppose une famille Debian CT. Sur Alpine / Arch / Rocky / Alma, installer Samba à la main:", "aptItems": [ "Alpine: apk add samba", "Arch: pacman -S samba", "Rocky / Alma: dnf install samba" ], "aptOutro": "Relancez ensuite le script ProxMenux ; l’installation est ignorée si les outils sont déjà présents.", "noShareTitle": "Le client se connecte mais ne voit pas le partage", "noShareBody": "Vérifiez que browseable = yes est défini dans le bloc de partage (par défaut pour les modes rw / ro; peut être manquant en mode personnalisé). Vérifiez également le pare-feu CT et le pare-feu hôte Proxmox permettent TCP 445 (SMB) et 139 (NetBIOS). Certains clients Windows nécessitent également une résolution de nom — essayez d'abord directement l'IP.", "authTitle": "Défauts d'authentification (NT_STATUS_LOGON_FAILURE)", "authBody": "Le mot de passe est incorrect (les mots de passe Samba sont distincts de ceux du système ; listez les utilisateurs Samba avec pdbedit -L) ou l’utilisateur ne figure pas dans valid users pour ce partage. Réinitialisez le mot de passe dans le CT avec smbpasswd <user>.", "groupTitle": "Les fichiers écrits par le client apparaissent avec un mauvais groupe sur le serveur", "groupBody": "Le script définit force group = sharedfiles dans le bloc de partage, de sorte que les nouveaux fichiers doivent être du groupe sharedfiles. S'ils ne le sont pas, le bit SGID du répertoire parent peut avoir été perdu (quelqu'un a exécuté chmod à la main). Réappliquer : chmod 2775 /mnt/<share>.", "bothTitle": "Partage du même dossier sur NFS et Samba", "bothBody": "Le ProxMenux utilise différents GID pour le sharedfiles dans chaque script (Samba: 999, NFS: 101000). Si vous servez le même dossier via les deux, choisissez un seul GID et alignez les deux. La correction la plus simple : après avoir exécuté les deux scripts, modifiez le GID plus petit :" }, "related": { "heading": "Autres", "items": [ { "href": "/docs/storage-share/lxc-samba-client", "label": "Client Samba en LXC", "tail": " — l’inverse : monter des partages Samba externes dans un CT." }, { "href": "/docs/storage-share/lxc-nfs-server", "label": "Serveur NFS dans LXC", "tail": "— page soeur, même motif avec NFS au lieu de CIFS." }, { "href": "/docs/storage-share/host-samba", "label": "Samba / CIFS comme stockage Proxmox", "tailRich": " — une fois que le CT expose un export, enregistrez ce partage Samba dans Proxmox pour le voir sous Datacenter → Storage." } ] } }