{
"meta": {
"title": "Servidor Samba em LXC | ProxMenux Documentação",
"description": "Execute um servidor Samba (SMB / CIFS) em um contêiner LXC Proxmox com o ProxMenux. Instala samba automaticamente e gerencia /etc/samba/smb.conf, usuários smbpasswd e o grupo sharedfiles para pastas em bind mounts. Exige um contêiner com privilégios.",
"ogTitle": "Servidor Samba em LXC | ProxMenux Documentação",
"ogDescription": "Disponibilize pastas por SMB/CIFS de um LXC com privilégios. Instalação automática, usuário smbpasswd e permissões adaptadas a bind mounts."
},
"header": {
"title": "Servidor Samba em LXC",
"description": "Execute um servidor Samba (SMB / CIFS) dentro de um container Proxmox LXC e exponha pastas para clientes Windows / macOS / Linux na rede. ProxMenux instala samba, cria um usuário Samba com smbpasswd, gerencia /etc/samba/smb.conf, e aplica permissões adaptadas a bind mounts quando a pasta compartilhada vem do host.",
"section": "Armazenamento e Compartilhamento · LXC"
},
"privReq": {
"title": "Recipiente privilegiado necessário",
"body": "Samba personifica o usuário de conexão com setgroups() em cada conexão em árvore (no momento em que um cliente abre um compartilhamento). Em um LXC sem privilégios, o kernel rejeita esse syscall porque o espaço de nomes de usuário do container é criado com setgroups=deny — e o smbd responde abortando o processo de worker com PANIC: sys_setgroups failed. O resultado é que o smbd inicia e liga as portas 139/445, mas toda conexão com o cliente falha com o NT_STATUS_CONNECTION_DISCONNECTED. O script impõe um CT privilegiado por esta razão e interrompe a execução se o CT não tiver privilégios. Não há correção limpa no lado do servidor; use um CT privilegiado ou execute Samba dentro de uma VM."
},
"what": {
"heading": "O que isto faz",
"body": "O contêiner torna-se um servidor SMB/CIFS: ele roda smbd, expõe uma pasta via /etc/samba/smb.conf e aceita conexões de cliente em portas 139 / 445. Os clientes veem o compartilhamento em \\\\<ct-ip>\\<share-name> no Windows Explorer, smb://<ct-ip>/<share-name> no macOS Finder, ou via mount.cifs no Linux.",
"diagramServerLabel": "LXC (privilegiado) — Servidor Samba",
"diagramServerDetail": "/mnt/data\n(pasta compartilhada)\n\nsmbd + nmbd em execução\n\nUsuário: \n(via smbpasswd)\n\nGrupo imposto:\nsharedfiles",
"diagramClientLabel": "Qualquer cliente na rede",
"diagramClientDetail": "Windows: \\\\\\\nmacOS: smb:///\nLinux: mount.cifs",
"diagramArrow": "SMB / CIFS"
},
"perms": {
"heading": "Dois caminhos de permissões, dependendo do tipo de pasta",
"body": "Antes de adicionar o compartilhamento ao smb.conf, o script verifica se a pasta escolhida é uma montagem bind do host ou uma pasta local regular dentro do CT – e aplica diferentes permissões de propriedade em conformidade:",
"headerType": "Tipo de pasta",
"headerAction": "O que o script faz",
"bindType": "Montagem de ligação da máquina",
"bindTypeSubRich": "detectado através da saída mount",
"bindActionRich": "Cria o grupo sharedfiles (padrão GID 999, dinâmico se tomado), adiciona o usuário Samba a ele, em seguida, chown root:sharedfiles + chmod 2775 (SGID — novos arquivos herdam o grupo). Se o usuário ainda não consegue escrever, aplica setfacl -m u:<user>:rwx.",
"localType": "Pasta local dentro do CT",
"localTypeSub": "nenhuma montagem de ligação detectada",
"localActionRich": "Propriedade padrão: chown -R <user>:<user> + chmod -R 755. Nenhum grupo compartilhado é necessário porque nenhum outro CT escreve para esta pasta. Regressa ao setfacl se o acesso de escrita ainda estiver ausente.",
"gidTitle": "GID para 'sharedfiles' difere do fluxo do servidor NFS",
"gidBody": "O script do servidor Samba usa GID 999 para sharedfiles, enquanto o fluxo do servidor NFS usa GID 101000. Se você executar ambos os servidores no mesmo CT e quiser um único grupo compartilhado em ambos os protocolos, edite um deles para corresponder ao outro após a instalação (por exemplo. groupmod -g 101000 sharedfiles) e reaplicar a propriedade nas pastas afetadas. Esta é uma incoerência conhecida nos scripts atuais."
},
"opening": {
"heading": "Abrir a ferramenta",
"body": "No menu principal, abra Storage & Share Manager → Configure Samba Server in LXC. Apenas CTs com privilégios são listados. Escolha o CT de destino; o script o inicia se estiver parado e recusa CTs sem privilégios. O menu oferece cinco opções.",
"imageAlt": "Samba Server Manager menu — Criar / Ver / Apagar / Estado / Desinstalar"
},
"howRuns": {
"heading": "Como o script é executado (Criar fluxo)"
},
"modes": {
"heading": "Os três modos de partilha",
"intro": "Cada modo escreve uma seção diferente em smb.conf. Todos os três incluem valid users = <username> (sem anônimo), force group = sharedfiles (então novos arquivos pertencem ao grupo compartilhado) e veto files = /lost+found/ (esconde-o de clientes).",
"headerMode": "Modo",
"headerBlock": "Bloco escrito para smb.conf",
"rwMode": "Leitura e escrita",
"roMode": "Somente leitura",
"customMode": "Personalizado",
"customBodyRich": "Você digita suas próprias diretivas em uma caixa de texto livre. ProxMenux ainda os envolve em um bloco [share] com o path, valid users, force group e veto files padrão."
},
"manual": {
"heading": "Equivalente manual",
"body": "Replicar todo o fluxo à mão – cada comando roda dentro do CT via pct exec <ctid> -- ou pct enter <ctid>:"
},
"connect": {
"heading": "Conexão de clientes",
"headerOs": "Sistema operativo do cliente",
"headerHow": "Como conectar",
"windowsOs": "Windows",
"windowsHowRich": "Explorador de Arquivos → barra de endereço: \\\\<ct-ip>\\<share-name>. Ou Mapear unidade de rede → marque «Conectar usando credenciais diferentes».",
"macosOs": "macOS",
"macosHowRich": "Finder → Ir → Conecte-se ao servidor... → 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 use o cliente Samba na página LXC se o cliente for outro Proxmox CT."
},
"view": {
"heading": "Ver os compartilhamentos atuais",
"body": "Analisa /etc/samba/smb.conf dentro do CT e lista todos os blocos [share] (passando [global], [homes], [printers]) com seu caminho. Útil como um inventário rápido."
},
"delete": {
"heading": "Apagar um compartilhamento",
"body": "Permite escolher um compartilhamento pelo nome, remove o bloco do smb.conf (sed exclui do [share] para a próxima linha em branco), e reinicia o smbd. A pasta em si e seu conteúdo ficam intactos."
},
"status": {
"heading": "Verificar o estado do Samba",
"body": "Relata se o smbd e o nmbd estão instalados e ativos, lista os usuários do Samba (pdbedit -L) e imprime sessões ativas (smbstatus)."
},
"uninstall": {
"heading": "Desinstalar o servidor Samba",
"body": "Limpeza completa após confirmação: para e desativa smbd e nmbd, salva smb.conf em smb.conf.backup.YYYYMMDD_HHMMSS, remove usuários Samba com smbpasswd -x e os pacotes Samba com apt-get purge. As pastas exportadas não são apagadas.",
"warnTitle": "Pastas sobrevivem — backup de dados separadamente",
"warnBody": "Excluir compartilhamento e Desinstalar servidor Samba removem a configuração do compartilhamento. Os dados das pastas exportadas são preservados. Para apagá-los também, use explicitamente rm -rf após o término do script."
},
"troubleshoot": {
"heading": "Resolução de Problemas",
"privTitle": "Exige um contêiner com privilégios (o script interrompe a execução)",
"privBody": "O CT selecionado é desprivilegiado e o smbd não pode servir arquivos lá. Se você ignorar a verificação e configurar Samba à mão, smbd começa e as portas abrem, mas a primeira conexão do cliente entra em pânico com PANIC: sys_setgroups failed em /var/log/samba/log.<client> e o cliente vê NT_STATUS_CONNECTION_DISCONNECTED. A causa é o namespace desprivilegiado que tem setgroups=deny, que bloqueia a personificação de Samba por conexão. Nem features=keyctl=1 nem remover force user / force group altera isso. As únicas opções viáveis são: converter o CT para privilegiado, ou mover Samba para uma VM.",
"aptTitle": "apt-get install falha",
"aptIntro": "O script assume uma família Debian CT. Em Alpine / Arch / Rocky / Alma, instalar Samba à mão:",
"aptItems": [
"Alpine: apk add samba",
"Arch: pacman -S samba",
"Rocky / Alma: dnf install samba"
],
"aptOutro": "Execute novamente o script ProxMenux; a instalação é ignorada quando as ferramentas já estão presentes.",
"noShareTitle": "O cliente conecta- se mas não consegue ver a partilha",
"noShareBody": "Verifique se o browseable = yes está definido no bloco de partilha (por omissão para os modos rw / ro; pode estar em falta na personalização). Também verifique o firewall CT e o firewall do host Proxmox permitem o TCP 445 (SMB) e o 139 (NetBIOS). Alguns clientes do Windows também exigem resolução de nome — tente o IP diretamente primeiro.",
"authTitle": "Falha na autenticação (NT_STATUS_LOGON_FAILURE)",
"authBody": "A senha está incorreta (as senhas Samba são separadas das do sistema; liste os usuários Samba com pdbedit -L) ou o usuário não consta em valid users para esse compartilhamento. Redefina a senha dentro do CT com smbpasswd <user>.",
"groupTitle": "Os arquivos escritos pelo cliente aparecem com o grupo errado no servidor",
"groupBody": "O script define force group = sharedfiles no bloco de compartilhamento, então novos arquivos devem ser o grupo sharedfiles. Se eles não forem, o bit SGID no diretório pai pode ter sido perdido (alguém correu chmod à mão). Reaplicação: chmod 2775 /mnt/<share>.",
"bothTitle": "Compartilhando a mesma pasta em ambos NFS e Samba",
"bothBody": "ProxMenux usa diferentes GIDs para sharedfiles em cada script (Samba: 999, NFS: 101000). Se você serve a mesma pasta através de ambos, decida sobre um GID e alinhar ambos. A correção mais simples: após executar ambos os scripts, edite o GID menor:"
},
"related": {
"heading": "Relacionado",
"items": [
{
"href": "/docs/storage-share/lxc-samba-client",
"label": "Cliente Samba em LXC",
"tail": " — o inverso: montar compartilhamentos Samba externos no CT."
},
{
"href": "/docs/storage-share/lxc-nfs-server",
"label": "Servidor NFS em LXC",
"tail": " — página relacionada, mesmo padrão com NFS em vez de CIFS."
},
{
"href": "/docs/storage-share/host-samba",
"label": "Samba / CIFS como armazenamento Proxmox",
"tailRich": " — quando o CT estiver exportando, registre o compartilhamento Samba no Proxmox para que apareça em Datacenter → Storage."
}
]
}
}