{ "meta": { "title": "Samba server i LXC | ProxMenux Dokumentation", "description": "Kör en Samba (SMB / CIFS) server i en Proxmox LXC container med ProxMenux. Auto-installerar samba, hanterar /etc/samba/smb.conf, smbpasswd-användare, sharedfiles grupp för bindmonterade mappar. Kräver en privilegierad container.", "ogTitle": "Samba server i LXC | ProxMenux Dokumentation", "ogDescription": "Dela mappar via SMB/CIFS från en privilegierad LXC-container. Automatisk installation, smbpasswd-användare och behörigheter anpassade till bind-monteringar." }, "header": { "title": "Samba server i LXC", "description": "Kör en Samba (SMB / CIFS) server i en Proxmox LXC container och exponera mappar till Windows / macOS / Linux klienter på nätverket. ProxMenux installerar samba, skapar en Samba användare med smbpasswd, hanterar /etc/samba/smb.conf, och tillämpar behörigheter anpassade till bind-monteringar när den delade mappen kommer från värden.", "section": "Lagring & Dela · LXC" }, "privReq": { "title": "Privilegierad container krävs", "body": "Samba antar den anslutande användarens identitet med setgroups() på varje trädanslutning (det ögonblick en klient öppnar en delning). I en oprivilegierad LXC avvisar kärnan det syscall eftersom containerns användarnamnrymd skapas med setgroups=deny - och smbd svarar genom att avsluta arbetsprocessen med PANIC: sys_setgroups failed. Resultatet är att smbd startar och binder portar 139/445, men varje klientanslutning misslyckas med NT_STATUS_CONNECTION_DISCONNECTED. Skriptet genomdriver en privilegierad CT av denna anledning och avbryter om CT:n är oprivilegierad. Det finns ingen ren fix på serversidan; använd en privilegierad CT eller kör Samba i en VM." }, "what": { "heading": "Vad detta gör", "body": "Containern blir en SMB/CIFS-server: den kör smbd, exponerar en mapp via /etc/samba/smb.conf och accepterar klientanslutningar på portar 139/445. Klienterna ser delningen på \\\\<ct-ip>\\<share-name> i Windows Explorer, smb://<ct-ip>/<share-name> i macOS Finder, eller via mount.cifs på Linux.", "diagramServerLabel": "LXC (privilegierad) - Samba server", "diagramServerDetail": "/mnt/data\n(mappen du delar)\n\nsmbd + nmbd körs\n\nAnvändare: \n(via smbpasswd)\n\nTvingad grupp:\nsharedfiles", "diagramClientLabel": "Valfri klient i nätverket", "diagramClientDetail": "Windows: \\\\\\\nmacOS: smb:///\nLinux: mount.cifs", "diagramArrow": "SMB / CIFS" }, "perms": { "heading": "Två tillståndsvägar beroende på mapptypen", "body": "Innan delningen läggs till i smb.conf kontrollerar skriptet om mappen är en bind-montering från värden eller en vanlig lokal mapp i CT:n och anpassar ägare och behörigheter därefter:", "headerType": "Mapptyp", "headerAction": "Vad manuset gör", "bindType": "Bind-mount från värd", "bindTypeSubRich": "Detekteras via mount-utgång", "bindActionRich": "Skapar grupp sharedfiles (standard GID 999, dynamisk om det tas), lägger till Samba-användaren till den, sedan chown root:sharedfiles + chmod 2775 (SGID - nya filer ärver gruppen). Om användaren fortfarande inte kan skriva gäller setfacl -m u:<user>:rwx.", "localType": "Lokal mapp i CT", "localTypeSub": "Ingen bind-montering upptäckt", "localActionRich": "Standard ägande: chown -R <user>:<user> + chmod -R 755. Ingen delad grupp behövdes eftersom ingen annan CT skriver till den här mappen. Falls tillbaka till setfacl om skrivåtkomst fortfarande saknas.", "gidTitle": "GID för \"sharedfiles\" skiljer sig från NFS-serverflödet", "gidBody": "Samba server script använder GID 999 för sharedfiles, medan NFS server flow använder GID 101000. Om du kör båda servrarna i samma CT och vill ha en gemensam grupp över båda protokollen, redigera en av dem för att matcha den andra efter installationen (t.ex. groupmod -g 101000 sharedfiles) och sätt ägare på de berörda mapparna igen. Detta är en känd inkonsekvens i de nuvarande skripten." }, "opening": { "heading": "Öppna verktyget", "body": "Öppna Storage & Share Manager → Configure Samba Server in LXC i huvudmenyn. Endast privilegierade CT:er visas. Välj mål-CT:n; skriptet startar den om den är stoppad och avvisar oprivilegierade CT:er. Menyn har fem alternativ.", "imageAlt": "Samba Server Manager-menyn - Skapa / Visa / Ta bort / Status / Avinstallera" }, "howRuns": { "heading": "Hur manuset går (Skapa flöde)" }, "modes": { "heading": "De tre delningslägena", "intro": "Varje läge skriver en annan stanza till smb.conf. Alla tre inkluderar valid users = <username> (ingen anonym), force group = sharedfiles (så nya filer tillhör den delade gruppen) och veto files = /lost+found/ (döljer det från kunder).", "headerMode": "Läge", "headerBlock": "Block skriven till smb.conf", "rwMode": "Läsning och skrivning", "roMode": "Skrivskyddad", "customMode": "Anpassad", "customBodyRich": "Du skriver dina egna direktiv i en fritextlåda. ProxMenux placerar dem fortfarande i ett [share] block med standard path, valid users, force group och veto files." }, "manual": { "heading": "Manuell motsvarande", "body": "Utför hela flödet manuellt. Varje kommando körs inne i CT:n via pct exec <ctid> -- eller pct enter <ctid>:" }, "connect": { "heading": "Ansluta från klienter", "headerOs": "Klientens operativsystem", "headerHow": "Hur att ansluta", "windowsOs": "Windows", "windowsHowRich": "Utforskaren → adressfältet: \\\\<ct-ip>\\<share-name>. Eller Anslut nätverksenhet → markera ”Anslut med andra autentiseringsuppgifter”.", "macosOs": "macOS", "macosHowRich": "Finder → Gå → Anslut till Server... → smb://<ct-ip>/<share-name>. Eller 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. Eller använd Samba-klienten i LXC-sida om kunden är en annan Proxmox CT." }, "view": { "heading": "Visa aktuella delningar", "body": "Läser /etc/samba/smb.conf inuti CT och listar varje [share] block (skippa [global], [homes], [printers]) med sin väg. Användbart som en snabb inventering." }, "delete": { "heading": "Ta bort en delning", "body": "Låter dig välja en delning med namn, tar bort blocket från smb.conf (sed raderar från [share] ner till nästa tomma rad) och startar om smbd. Mappen själv och dess innehåll lämnas intakt." }, "status": { "heading": "Kontrollera Samba status", "body": "Rapporter om smbd och nmbd är installerade och aktiva, listar Samba-användare (pdbedit -L) och trycker aktiva sessioner (smbstatus)." }, "uninstall": { "heading": "Avinstallera Samba server", "body": "Fullständig rensning efter bekräftelse: stoppar och inaktiverar smbd och nmbd, säkerhetskopierar smb.conf till smb.conf.backup.YYYYMMDD_HHMMSS, tar bort Samba-användare med smbpasswd -x och Samba-paketen med apt-get purge. De exporterade mapparna raderas inte.", "warnTitle": "Mappar överlever - säkerhetskopiera data separat", "warnBody": "Ta bort delning och Avinstallera Samba-server tar bort delningskonfigurationen. Data i de delade mapparna bevaras. Om även data ska tas bort, gör det uttryckligen med rm -rf efter att skriptet avslutats." }, "troubleshoot": { "heading": "Felsökning", "privTitle": "Privilegierad container krävs (skriptet avbryter)", "privBody": "Den valda CT är oprivilegierad och smbd kan inte servera filer där. Om du kringgår kontrollen och konfigurerar Samba för hand börjar smbd och portarna öppna, men den första klientanslutningen orsakar en panik med PANIC: sys_setgroups failed i /var/log/samba/log.<client> och klienten ser NT_STATUS_CONNECTION_DISCONNECTED. Orsaken är det oprivilegierade användarnamnrymden med setgroups=deny, som blockerar Sambas per-anslutning impersonation. Varken features=keyctl=1 eller ta bort force user/force group ändrar detta. De enda användbara alternativen är: konvertera CT till privilegierad, eller flytta Samba till en VM.", "aptTitle": "apt-get install misslyckas", "aptIntro": "Manuset antar en Debian-familj CT. På Alpine / Arch / Rocky / Alma, installera Samba för hand:", "aptItems": [ "Alpine: apk add samba", "Arch: pacman -S samba", "Rocky / Alma: dnf install samba" ], "aptOutro": "Kör sedan ProxMenux-skriptet igen; installationen hoppas över om verktygen redan finns.", "noShareTitle": "Klienten ansluter men ser inte delningen", "noShareBody": "Kontrollera att browseable = yes är inställd i delningsblocket (standard för rw / ro-lägen; kan saknas i anpassad). Kontrollera också CT brandvägg och Proxmox värd brandvägg tillåter TCP 445 (SMB) och 139 (NetBIOS). Vissa Windows-klienter kräver också namnupplösning - prova IP direkt först.", "authTitle": "Autentisering misslyckas (NT_STATUS_LOGON_FAILURE)", "authBody": "Antingen är lösenordet fel (Samba-lösenord är separata från systemlösenord; lista Samba-användare med pdbedit -L) eller saknas användaren i valid users för delningen. Återställ lösenordet i CT:n med smbpasswd <user>.", "groupTitle": "Filer skrivna av kunden visas med fel grupp på servern", "groupBody": "Skriptet sätter force group = sharedfiles i delningsblocket, så nya filer bör vara grupp sharedfiles. Om de inte är det kan SGID-biten på föräldrakatalogen ha gått förlorad (någon körde chmod för hand). Tillämpa igen: chmod 2775 /mnt/<share>.", "bothTitle": "Dela samma mapp över både NFS och Samba", "bothBody": "ProxMenux använder olika GID för sharedfiles i varje manus (Samba: 999, NFS: 101000). Om du tjänar samma mapp via båda, besluta om en GID och anpassa båda. Den enklaste fixen: efter att ha kört båda skripten, redigera den mindre GID:" }, "related": { "heading": "Relaterad", "items": [ { "href": "/docs/storage-share/lxc-samba-client", "label": "Samba klient i LXC", "tail": " — omvänt: montera externa Samba-delningar i en CT." }, { "href": "/docs/storage-share/lxc-nfs-server", "label": "NFS server i LXC", "tail": " — syskonsidan, samma mönster med NFS istället för CIFS." }, { "href": "/docs/storage-share/host-samba", "label": "Samba / CIFS som Proxmox-lagring", "tailRich": " — när CT:n delar ut via Samba, registrera Samba-delningen i Proxmox så att den visas under Datacenter → Storage." } ] } }