{ "meta": { "title": "Samba-Server in LXC | ProxMenux Dokumentation", "description": "Mit ProxMenux einen Samba-Server (SMB / CIFS) in einem Proxmox-LXC-Container betreiben. Installiert samba automatisch und verwaltet /etc/samba/smb.conf, smbpasswd-Benutzer und die Gruppe sharedfiles für per Bind-Mount eingebundene Ordner. Erfordert einen privilegierten Container.", "ogTitle": "Samba-Server in LXC | ProxMenux Dokumentation", "ogDescription": "Ordner über SMB/CIFS aus einem privilegierten LXC-Container freigeben. Automatische Installation, smbpasswd-Benutzer und an Bind-Mounts angepasste Berechtigungen." }, "header": { "title": "Samba-Server in LXC", "description": "Führen Sie einen Samba-Server (SMB / CIFS) in einem Proxmox LXC-Container aus und stellen Sie Ordner Windows / macOS / Linux-Clients im Netzwerk aus. ProxMenux installiert samba, erstellt einen Samba-Benutzer mit smbpasswd, verwaltet /etc/samba/smb.conf und wendet bind-mount-bewusste Berechtigungen an, wenn der freigegebene Ordner vom Host stammt.", "section": "Speicher und Freigaben · LXC" }, "privReq": { "title": "Privilegierter Container erforderlich", "body": "Samba nimmt die Identität des verbindenden Benutzers an mit setgroups() auf jeder Baumverbindung (der Moment, in dem ein Client eine Freigabe öffnet). In einem unprivilegierten LXC lehnt der Kernel diesen Syscall ab, weil der Namespace des Containers mit setgroups=deny erstellt wird – und smbd reagiert, indem er den Worker-Prozess mit PANIC: sys_setgroups failed abbricht. Das Ergebnis ist, dass smbd die Ports 139/445 startet und bindet, aber jede Clientverbindung mit NT_STATUS_CONNECTION_DISCONNECTED fehlschlägt. Das Skript erzwingt aus diesem Grund einen privilegierten CT und bricht bei unprivilegierten CTs ab. Es gibt keine saubere Lösung auf der Serverseite; Verwenden Sie einen privilegierten CT oder führen Sie Samba in einer VM aus." }, "what": { "heading": "Was das macht", "body": "Der Container wird zu einem SMB/CIFS-Server: Er führt smbd aus, stellt einen Ordner über /etc/samba/smb.conf frei und akzeptiert Clientverbindungen an den Ports 139 / 445. Clients sehen die Freigabe unter \\\\<ct-ip>\\<share-name> im Windows Explorer, smb://<ct-ip>/<share-name> im macOS Finder oder über mount.cifs unter Linux.", "diagramServerLabel": "LXC (privilegiert) — Samba-Server", "diagramServerDetail": "/mnt/data\n(freigegebener Ordner)\n\nsmbd + nmbd laufen\n\nBenutzer: \n(via smbpasswd)\n\nErzwungene Gruppe:\nsharedfiles", "diagramClientLabel": "Jeder Client im Netzwerk", "diagramClientDetail": "Windows: \\\\\\\nmacOS: smb:///\nLinux: mount.cifs", "diagramArrow": "SMB / CIFS" }, "perms": { "heading": "Zwei Berechtigungspfade abhängig vom Ordnertyp", "body": "Vor dem Hinzufügen der Freigabe zu smb.conf prüft das Skript, ob der Ordner ein Bind-Mount vom Host oder ein normaler lokaler Ordner im CT ist. Entsprechend setzt es Eigentümer und Berechtigungen:", "headerType": "Art des Ordners", "headerAction": "Was das Skript macht", "bindType": "Bind-Mount vom Host", "bindTypeSubRich": "erfasst über mount Ausgang", "bindActionRich": "Erstellt Gruppe sharedfiles (Standard GID 999, dynamisch, wenn genommen), fügt den Samba-Benutzer hinzu, dann chown root:sharedfiles + chmod 2775 (SGID - neue Dateien erben die Gruppe). Wenn der Benutzer immer noch nicht schreiben kann, wendet setfacl -m u:<user>:rwx an.", "localType": "Lokaler Ordner im CT", "localTypeSub": "Kein Bind-Mount erkannt", "localActionRich": "Standardbesitz: chown -R <user>:<user> + chmod -R 755. Keine freigegebene Gruppe erforderlich, da kein anderer CT in diesen Ordner schreibt. Fällt zurück zu setfacl, wenn der Schreibzugriff noch fehlt.", "gidTitle": "GID für 'sharedfiles' unterscheidet sich vom NFS Server Flow", "gidBody": "Das Samba-Serverskript verwendet GID 999 für sharedfiles, während der NFS-Serverablauf GID 101000 verwendet. Wenn Sie beide Server in demselben CT betreiben und eine einzelne gemeinsame Gruppe für beide Protokolle wünschen, bearbeiten Sie eines von ihnen nach der Installation so, dass es mit dem anderen übereinstimmt (z.B. groupmod -g 101000 sharedfiles) und setzen Sie die Eigentümer der betroffenen Ordner erneut. Dies ist eine bekannte Inkonsistenz in den aktuellen Skripten." }, "opening": { "heading": "Öffnen des Tools", "body": "Öffnen Sie im Hauptmenü von ProxMenux Storage & Share Manager → Samba-Server in LXC (nur privilegiert) konfigurieren. ProxMenux fordert Sie zuerst auf, das Ziel CT auszuwählen (und startet es, wenn es gestoppt wird); abbricht, wenn es nicht privilegiert ist. Sobald das CT ausgewählt ist, sehen Sie dieses sub-Menü mit fünf Optionen:", "imageAlt": "Samba Server Manager-Menü - Erstellen / Anzeigen / Löschen / Status / Deinstallieren" }, "howRuns": { "heading": "Ablauf des Skripts beim Erstellen" }, "modes": { "heading": "Die drei Share-Modi", "intro": "Jeder Modus schreibt einen anderen Konfigurationsabschnitt in smb.conf. Alle drei beinhalten valid users = <username> (nicht anonym), force group = sharedfiles (damit neue Dateien zur freigegebenen Gruppe gehören) und veto files = /lost+found/ (versteckt sie vor Clients).", "headerMode": "Modus", "headerBlock": "Block geschrieben an smb.conf", "rwMode": "Lesen und Schreiben", "roMode": "Schreibgeschützt", "customMode": "Benutzerdefiniert", "customBodyRich": "Sie geben Ihre eigenen Direktiven in ein Freitextfeld ein. ProxMenux wickelt sie weiterhin in einen [share]-Block mit den Standards path, valid users, force group und veto files ein." }, "manual": { "heading": "Manuelles Äquivalent", "body": "Führen Sie den gesamten Ablauf von Hand aus. Jeder Befehl läuft innerhalb des CTs über pct exec <ctid> -- oder pct enter <ctid>:" }, "connect": { "heading": "Verbindung von Clients", "headerOs": "Client-Betriebssystem", "headerHow": "Wie man verbindet", "windowsOs": "Windows", "windowsHowRich": "Datei-Explorer → Adressleiste: \\\\<ct-ip>\\<share-name>. Oder Netzlaufwerk verbinden → „Verbindung mit anderen Anmeldeinformationen herstellen“ aktivieren.", "macosOs": "macOS", "macosHowRich": "Finder → Gehe zu → Verbindung zum Server... → smb://<ct-ip>/<share-name>. Oder 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. Oder verwenden Sie den Samba-Client auf der LXC-Seite, wenn der Client ein anderer Proxmox CT ist." }, "view": { "heading": "Aktuelle Freigaben anzeigen", "body": "Liest /etc/samba/smb.conf im CT und listet jeden [share]-Block (überspringen [global], [homes], [printers]) mit seinem Pfad auf. Nützlich als schnelles Inventar." }, "delete": { "heading": "Freigabe löschen", "body": "Sie können eine Freigabe nach Namen auswählen, den Block aus smb.conf entfernen (sed löscht aus [share] bis zur nächsten leeren Zeile) und smbd neu starten. Der Ordner selbst und sein Inhalt bleiben intakt." }, "status": { "heading": "Samba-Status überprüfen", "body": "Gibt an, ob smbd und nmbd installiert und aktiv sind, listet Samba-Benutzer auf (pdbedit -L) und druckt aktive Sitzungen aus (smbstatus)." }, "uninstall": { "heading": "Samba-Server deinstallieren", "body": "Vollständige Bereinigung nach Bestätigung: stoppt und deaktiviert smbd und nmbd, sichert smb.conf als smb.conf.backup.YYYYMMDD_HHMMSS, entfernt Samba-Benutzer mit smbpasswd -x und die Samba-Pakete mit apt-get purge. Die exportierten Ordner selbst bleiben erhalten.", "warnTitle": "Ordner überleben – Daten separat sichern", "warnBody": "Freigabe löschen und Samba-Server deinstallieren entfernen die Freigabekonfiguration. Die Daten in den exportierten Ordnern bleiben erhalten. Löschen Sie Daten bei Bedarf nach Abschluss des Skripts ausdrücklich mit rm -rf." }, "troubleshoot": { "heading": "Fehlerbehebung", "privTitle": "Privilegierter Container erforderlich (Skript bricht ab)", "privBody": "Der ausgewählte CT ist unprivilegiert und smbd kann dort keine Dateien bedienen. Wenn Sie das Gate umgehen und Samba von Hand konfigurieren, startet smbd und die Ports öffnen sich, aber die erste Clientverbindung gerät in Panik mit PANIC: sys_setgroups failed in /var/log/samba/log.<client> und der Client sieht NT_STATUS_CONNECTION_DISCONNECTED. Die Ursache ist der unprivilegierte Benutzernamensraum mit setgroups=deny, der die Per-Verbindungs-Imitation von Samba blockiert. Weder features=keyctl=1 noch das Entfernen von force user / force group ändert dies. Die einzigen praktikablen Optionen sind: Wandeln Sie den CT in einen privilegierten CT um oder verschieben Sie Samba in eine VM.", "aptTitle": "apt-get install schlägt fehl", "aptIntro": "Das Skript nimmt eine Debian-Familie CT an. Auf Alpine / Arch / Rocky / Alma installieren Sie Samba von Hand:", "aptItems": [ "Alpine: apk add samba", "Arch: pacman -S samba", "Rocky / Alma: dnf install samba" ], "aptOutro": "Führen Sie danach das ProxMenux-Skript erneut aus; sind die Werkzeuge schon vorhanden, wird die Installation übersprungen.", "noShareTitle": "Client verbindet sich, sieht aber die Freigabe nicht", "noShareBody": "Überprüfen Sie, ob browseable = yes im Freigabeblock eingestellt ist (Standard für rw / ro-Modi; möglicherweise fehlt es in benutzerdefinierten). Überprüfen Sie auch die CT-Firewall und die Proxmox-Host-Firewall erlauben TCP 445 (SMB) und 139 (NetBIOS). Einige Windows-Clients benötigen auch eine Namensauflösung - versuchen Sie die IP direkt zuerst.", "authTitle": "Authentifizierung fehlschlägt (NT_STATUS_LOGON_FAILURE)", "authBody": "Entweder ist das Passwort falsch (Samba-Passwörter sind von Systempasswörtern getrennt; Samba-Benutzer mit pdbedit -L auflisten) oder der Benutzer fehlt in valid users für diese Freigabe. Setzen Sie das Passwort im CT mit smbpasswd <user> zurück.", "groupTitle": "Vom Client geschriebene Dateien erscheinen mit falscher Gruppe auf dem Server", "groupBody": "Das Skript setzt force group = sharedfiles im Freigabeblock, so dass neue Dateien die Gruppe sharedfiles sein sollten. Wenn dies nicht der Fall ist, ist das SGID-Bit im Elternverzeichnis möglicherweise verloren gegangen (jemand hat chmod von Hand ausgeführt). Erneut anwenden: chmod 2775 /mnt/<share>.", "bothTitle": "Teilen des gleichen Ordners über NFS und Samba", "bothBody": "ProxMenux verwendet unterschiedliche GIDs für sharedfiles in jedem Skript (Samba: 999, NFS: 101000). Wenn Sie den gleichen Ordner über beide bedienen, entscheiden Sie sich für eine GID und richten Sie beide aus. Die einfachste Lösung: Nachdem Sie beide Skripte ausgeführt haben, bearbeiten Sie die kleinere GID:" }, "related": { "heading": "Verwandte Themen", "items": [ { "href": "/docs/storage-share/lxc-samba-client", "label": "Samba-Client in LXC", "tail": " — umgekehrte Richtung: externe Samba-Freigaben im CT einhängen." }, { "href": "/docs/storage-share/lxc-nfs-server", "label": "NFS Server in LXC", "tail": "— Geschwisterseite, gleiches Muster mit NFS anstelle von CIFS." }, { "href": "/docs/storage-share/host-samba", "label": "Samba / CIFS als Proxmox-Speicher", "tailRich": " — Sobald der CT Ordner über Samba freigibt, registrieren Sie die Samba-Freigabe in Proxmox, damit sie unter Datacenter → Storage erscheint." } ] } }