O Samba é uma implementação de software livre do protocolo de rede SMB, originalmente desenvolvido por Andrew Tridgell. O Samba fornece serviços de arquivo e de impressão para vários clientes Microsoft Windows e pode se integrar a um domínio do Windows Server, seja como um Controlador de domínio (DC) ou como membro do domínio. A partir da versão 4, ele passou a suportar também domínios do Active Directory, além do suporte tradicional aos domínios do Microsoft Windows NT.

O Samba roda na maioria dos sistemas tipo Unix, como Linux, Solaris, AIX e as variantes BSD, incluindo o macOS da Apple (Mac OS X 10.2 e superiores) e o macOS Server. O Samba também é executado em vários outros sistemas operacionais, como o OpenVMS e o IBM i. O Samba é padrão em quase todas as distribuições Linux e também é comumente incluído como um serviço básico do sistema em outros sistemas operacionais baseados em Unix. O Samba é lançado sob os termos da Licença Pública Geral GNU. O nome Samba vem de SMB (Server Message Block), o nome do protocolo proprietário usado pelo sistema de arquivos de rede do Microsoft Windows.

Primórdios Andrew Tridgell desenvolveu a primeira versão do Samba Unix entre dezembro de 1991 e janeiro de 1992, enquanto era estudante de doutorado na Universidade Nacional Australiana, usando um analisador de pacotes para realizar análises de rede do protocolo usado pelo software de servidor DEC Pathworks da Digital Equipment Corporation. O projeto não tinha um nome formal na época dos primeiros lançamentos (versões 0.1, 0.5 e 1.0, todas na primeira metade de janeiro de 1992); Tridgell referia-se a ele simplesmente como "um servidor de arquivos Unix para Dos Pathworks". Na versão 1.0, ele entendeu que havia "de fato implementado o protocolo netbios" e que "este software poderia ser usado com outros clientes PC".

Com foco na interoperabilidade com o LAN Manager da Microsoft, Tridgell lançou o "netbios para unix", observer, versão 1.5 em dezembro de 1993. Esse lançamento foi o primeiro a incluir tanto o software cliente quanto o servidor. Além disso, foi nessa época que a GPL2 foi escolhida como licença.

No meio da série 1.5, o nome foi alterado para smbserver. No entanto, Tridgell recebeu uma notificação de marca registrada da empresa "Syntax", que vendia um produto chamado TotalNet Advanced Server e detinha a marca registrada "SMBserver". O nome "Samba" surgiu ao rodar o comando Unix grep no dicionário do sistema, procurando por palavras que contivessem as letras S, M e B, nessa ordem (ou seja, ).

As versões 1.6, 1.7, 1.8 e 1.9 seguiram-se de forma relativamente rápida, com a última sendo lançada em janeiro de 1995. Tridgell considera a adoção do CVS em maio de 1996 como o nascimento da equipe do Samba (Samba Team), embora houvesse contribuições anteriores de outras pessoas, especialmente de Jeremy Allison.

A versão 2.0.0, lançada em janeiro de 1999, foi um lançamento de grande impacto, incluindo suporte para autenticação a partir de um Controlador de Domínio Primário do Windows NT, suporte a sistemas de arquivos de 64 bits para arquivos muito grandes e a exposição de OPLOCKS para sistemas Unix. A versão 2.2.0 foi lançada em abril de 2001.

Histórico de versões

DataVersãoDescrição23 de setembro de 2003Suporte ao Active Directory. A série 3.0.x atingiu oficialmente o fim de sua vida útil (EOL) em 5 de agosto de 2009.1 de julho de 2008 Passou a ser atualizada apenas para correções de segurança sob demanda. Ocorreu a mudança de licença da GPL2 para a GPL3, com algumas partes sob LGPL3. A série 3.2.x alcançou oficialmente o EOL em 1 de março de 2010.27 de janeiro de 20093 de julho de 2009Esta foi a primeira versão a incluir o código-fonte tanto do Samba 3 quanto do Samba 4.1 de março de 2010Esta foi a primeira versão a incluir suporte experimental para o SMB2.9 de agosto de 2011Esta é a primeira ramificação a incluir suporte completo para SMB2.11 de dezembro de 2012Uma grande reformulação que permite ao Samba atuar como um controlador de domínio do Active Directory, participando plenamente de um domínio Active Directory do Windows. Sua primeira prévia técnica (4.0.0TP1) foi lançada em janeiro de 2006, após 3 anos de desenvolvimento.10 de outubro de 2013Suporte para SMB3.4 de março de 2015Compactação de arquivos baseada em Btrfs, instantâneos (snapshots) e integração com o winbind.8 de setembro de 2015Novos recursos de log, suporte a SMB 3.1.1.22 de março de 2016Requisições de esvaziamento (flush) assíncronas.7 de setembro de 2016NTLM v1 desativado por padrão, recurso Virtual List View e várias melhorias de desempenho.7 de março de 2017Suporte a multi-processo no Netlogon.21 de setembro de 2017Samba AD com suporte a MIT Kerberos.13 de março de 2018Suporte ao Apple Time Machine. Configurações usando os modos de segurança "domain" ou "ads" agora exigem que o "winbindd" esteja em execução.13 de setembro de 2018Múltiplas alterações estruturais.19 de março de 201917 de setembro de 2019O SMB1 é desativado por padrão como mitigação contra a vulnerabilidade do ransomware WannaCry.3 de março de 202022 de setembro de 2020O Samba 4.13 eleva a versão mínima do Python exigida para 3.6.9 de março de 2021Grande reformulação do subsistema VFS e outras melhorias.20 de setembro de 2021Diversas correções e alterações.21 de março de 2022Diversas alterações de código.13 de setembro de 2022Diversas melhorias acumuladas.8 de março de 2023Otimizações no código geral.4 de setembro de 2023Mudanças estruturais e correções.27 de março de 2024Múltiplas melhorias internas.2 de setembro de 2024Múltiplas melhorias e atualizações.6 de março de 2025Suporte a SMB3 Directory Leases, Netlogon Ping realizável via LDAP e LDAPS, suporte experimental para autenticação Himmelblau com o Azure Entra ID, melhorias de desempenho e remoção do recurso proxy logon do nmbd.12 de setembro de 2025Ajustes e melhorias gerais de estabilidade.18 de março de 2026Atualizações e melhorias diversas de desempenho.

Segurança Algumas versões do Samba 3.6.3 e anteriores sofrem com falhas graves de segurança que permitem a usuários anônimos obter acesso de root ao sistema a partir de uma conexão não autenticada, explorando um erro nas chamadas de procedimento remoto (RPC) do Samba.CVE-2012-1182 - Anúncio de segurança sobre uma falha crítica no Samba 3.6.3 e inferiores.

Em 12 de abril de 2016, foi divulgada a falha Badlock, um bug de segurança crucial que afetava o Windows e o Samba. O Badlock no Samba é referenciado pelo identificador CVE-2016-2118 (possibilidade de ataques do tipo homem-no-meio em SAMR e LSA).

Em 24 de maio de 2017, foi anunciado que uma vulnerabilidade de execução remota de código apelidada de EternalRed ou SambaCry havia sido encontrada no Samba, afetando todas as versões desde a 3.5.0. Esta vulnerabilidade recebeu o identificador CVE-2017-7494.

Em 14 de setembro de 2020, foi publicado um exploit de prova de conceito para a vulnerabilidade no netlogon conhecida como Zerologon (CVE-2020-1472), para a qual já existia uma atualização de segurança fornecida desde agosto. Órgãos federais americanos que utilizavam o software receberam ordens expressas para aplicar a correção imediatamente.

Recursos O Samba possibilita o compartilhamento de arquivos e de impressão entre computadores rodando Microsoft Windows e computadores rodando Unix. Trata-se de uma implementação de dezenas de serviços e protocolos, incluindo: NetBIOS sobre TCP/IP (NBT) SMB (conhecido como CIFS em algumas versões) O Samba dá suporte a extensões POSIX para CIFS/SMB. A extensão inicial foi a CIFS VFS (CAP_UNIX) em 2004, que acabou sendo amplamente substituída pelo SMB3. DCE/RPC ou, mais especificamente, MSRPC, a suíte de protocolos de Rede local Um servidor WINS, também conhecido como um Servidor de Nomes NetBIOS (NBNS) A suíte de protocolos de Domínio NT, que engloba os Logons de Domínio NT Banco de dados do Security Account Manager (SAM) Serviço do Local Security Authority (LSA) Serviço de impressão no estilo NT (SPOOLSS) NTLM Logon no Active Directory usando versões modificadas de Kerberos e LDAP Servidor DFS (Sistema de Arquivos Distribuído)

Todos esses serviços e protocolos costumam ser erroneamente referidos apenas como NetBIOS ou SMB. Os protocolos NBT (NetBIOS sobre TCP/IP) e WINS, bem como o protocolo SMB versão 1 de base, foram descontinuados no Windows. Desde o Windows Vista, o protocolo WS-Discovery foi incluído junto com o SMB2 e seus sucessores, substituindo as tecnologias antigas. (O WS-Discovery é implementado em plataformas tipo Unix por daemons de terceiros, permitindo que os compartilhamentos Samba sejam descobertos na rede quando os protocolos descontinuados estão desativados).

O Samba configura compartilhamentos de rede para diretórios Unix selecionados (incluindo todos os subdiretórios contidos). Estes aparecem para os usuários do Microsoft Windows como pastas normais do Windows acessíveis via rede. Os usuários do Unix podem tanto montar os compartilhamentos diretamente como parte de sua estrutura de arquivos utilizando o comando mount.cifs ou, alternativamente, utilizar o utilitário smbclient (libsmb), instalado com o Samba, para ler os compartilhamentos por meio de uma interface de linha de comando parecida com um programa FTP padrão. Cada diretório pode ter privilégios de acesso diferentes sobrepostos às proteções normais de arquivos do Unix. Por exemplo: os diretórios pessoais (home) teriam acesso de leitura/gravação para seus respectivos proprietários, permitindo que cada um acesse seus próprios arquivos, sem que tenham acesso aos arquivos de terceiros, a menos que tal permissão existisse previamente no sistema. Note que o compartilhamento netlogon, geralmente distribuído como somente leitura a partir de /etc/samba/netlogon, é o diretório usado para scripts de logon de usuários.

Os serviços do Samba são implementados na forma de dois daemons: smbd, que fornece os serviços de compartilhamento de arquivos e impressoras, e nmbd, que provê o serviço de nomes de NetBIOS para endereços IP. O NetBIOS sobre TCP/IP requer um método para mapear nomes de computadores NetBIOS para os endereços IP de uma rede TCP/IP.

A configuração do Samba é feita editando um único arquivo (normalmente instalado como /etc/smb.conf ou /etc/samba/smb.conf). O Samba também pode fornecer scripts de logon de usuários e aplicação de políticas de grupo por meio do poledit.

O Samba vem incluso na maioria das distribuições Linux e é iniciado durante o processo de boot. No Red Hat, por exemplo, o script /etc/rc.d/init.d/smb é executado na inicialização e inicia ambos os daemons. O Samba não vinha integrado ao Solaris 8, mas uma versão compatível com ele ficava disponível para download no site do projeto. O sistema ArcaOS, baseado no OS/2, inclui o Samba para substituir o antigo software IBM LAN Server.

As versões mais antigas do Samba incluíam uma ferramenta de administração web chamada Samba Web Administration Tool (SWAT), que foi removida a partir da versão 4.1.

Samba TNG O Samba TNG (The Next Generation) passou por um fork no final de 1999, após discordâncias entre os líderes da equipe do Samba e Luke Leighton sobre os rumos do projeto. Eles não conseguiram chegar a um acordo sobre uma rota de transição no desenvolvimento que permitisse que a versão de pesquisa desenvolvida por Leighton (conhecida na época como Samba-NTDOM) fosse integrada de forma gradativa ao tronco principal do Samba. O desenvolvimento da bifurcação foi mínimo devido à escassez de desenvolvedores. A própria equipe do Samba TNG frequentemente direcionava os potenciais usuários de volta ao Samba tradicional por conta de seu suporte e desenvolvimento superiores.

O principal objetivo do projeto Samba TNG era reescrever todos os serviços de Domínios NT como projetos FreeDCE. Essa tarefa mostrou-se complexa porque os serviços eram desenvolvidos manualmente via engenharia reversa de tráfego de rede, com pouca ou nenhuma referência às documentações oficiais de DCE/RPC.