Backends: smbpasswd ou tdbsam

As primeiras versões do Samba suportavam apenas o uso de senhas de texto puro, que eram transmitidas de forma não encriptada através da rede. Ainda é possível reverter a este sistema primitivo nas versões recentes do Samba usando a opção “encrypt passwords = no” no smb.conf, mas, além de não trazer nenhuma vantagem, isso quebra a compatibilidade com todas as versões recentes do Windows, que não aceitam o envio de senhas em texto puro.

Durante a evolução do Samba, foram criados diversos backends, que permitem armazenar senhas encriptadas e outras informações referentes aos usuários. Você pode escolher qual backend usar através da opção “passdb backend” do smb.conf. Vamos entender como eles funcionam.

O smbpasswd é o backend mais simples. Nele, as senhas são salvas no arquivo “/etc/samba/smbpasswd” e são transmitidas de forma encriptada através da rede, com suporte ao sistema NTLM, usado pelas versões contemporâneas do Windows. A vantagem do smbpasswd é que ele é um sistema bastante simples. Embora encriptadas, as senhas são armazenadas em um arquivo de texto, com uma conta por linha.

Se você quer apenas configurar um servidor Samba para compartilhar arquivos e impressoras com a rede local, sem usá-lo como PDC, então o smbpasswd funciona bem. Ele é usado por padrão no Samba 3, de forma que se o arquivo smb.conf do seu servidor não contém a linha “passdb backend =” (como nos exemplos que vimos até aqui), você está usando justamente o smbpasswd.

Em seguida temos o tdbsam, que usa uma base de dados muito mais robusta, armazenada no arquivo “/var/lib/samba/passdb.tdb” (é justamente este arquivo que o script executado durante a instalação do pacote “samba” no Debian pergunta se deve ser criado).

O tdbsam oferece duas vantagens sobre o smbpasswd: oferece um melhor desempenho em servidores com um grande número de usuários cadastrados e oferece suporte ao armazenamento dos controles SAM estendidos usados pelas versões server do Windows. O uso do tdbsam é fortemente recomendável caso seu servidor tenha mais do que algumas dezenas de usuários cadastrados ou caso você pretenda usar seu servidor Samba como PDC da rede (veja mais detalhes a seguir). Ele é também um pré-requisito caso você precise migrar um domínio NT já existente para o servidor Samba.

Ao usar uma versão recente do Samba, ativar o uso do tbdsam é bastante simples, basta incluir a linha “passdb backend = tdbsam” na seção [global]do smb.conf, como em:

[global]netbios name = Sparta
workgroup = Grupo
server string = Servidor
encrypt passwords = true
wins support = yes
preferred master = yes
os level = 100
enable privileges = yes
passdb backend = tdbsam

Embora o arquivo de senhas seja diferente, o comando para cadastrar os usuários no Samba ao usar o tdbsam continua sendo o mesmo:

# smbpasswd -a usuario

Isso acontece porque, ao ser executado, o smbpasswd verifica a configuração presente no smb.conf e assim realiza as operações necessárias para cadastrar os usuários no backend utilizado.

A principal dica é que, ao utilizar o tdbsam, você deve adicionar a linha “passdb backend = tdbsam” no smb.conf logo no início da configuração, antes de começar a cadastrar os usuários no servidor, caso contrário, o smbpasswd cadastrará os usuários no smbpasswd e você precisará cadastrá-los novamente para atualizar a base do tdbsam mais tarde. Em muitos casos, um script incluído na distribuição pode se encarregar de fazer a conversão automaticamente, mas é melhor não contar com isso.

Para verificar se os usuários estão cadastrados na base de dados do tdbsam, use o comando “pdbedit -Lw” (como root). Ele deve retornar uma lista contendo todos os usuários cadastrados, como em:

# pdbedit -Lw

gdh:1006:5567A38FC604AC6B90213960766D16B5:15350B7F4983CB5EAC073A892B423E8E:[U ]:LCT-471F5AF2:
root:0:E412294BCF24C19D433AC183134CC0F3:121797EEFB127E62222B23F77ED087BE:[U ]:LCT-464460FF:
manuel:1005:5567A38FC604AC63902139606B6D16B5:15350B7F4983CB5EAC073A892C687E8E:[U ]:LCT-4710F13C:
hp$:1007:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:0D80C51183ED74320799B5BEDDCBE388:[W ]:LCT-47421493:
m5$:1009:B233C3E987D08D924405A9EF76E52792:65DD4A9908A35667D79B599F94691E34:[W ]:LCT-4742D747:

Em seguida temos o mysqlsam e o ldapsam, onde as contas e senhas são armazenadas em, respectivamente, um servidor MySQL e um servidor LDAP. O uso do MySQL em conjunto com o Samba não é muito comum, mas o LDAP vem crescendo bastante em grandes redes.

A grande vantagem é que o banco de dados pode ser acessado por vários servidores, sem necessidade de replicar o arquivo de senhas manualmente (usando o rsync, por exemplo). Isso é muito útil no caso de redes muito grandes onde a autenticação dos usuários é dividida entre vários servidores. Nesta configuração, o PDC divide a carga de trabalho com um conjunto de BDCs (backup domain controllers), que podem ser tanto outros servidores Samba quanto servidores Windows. Os BDCs são subordinados ao servidor PDC, mas todos tem acesso à mesma base de dados com os usuários, armazenada no servidor LDAP, o que evita problemas de sincronismo entre eles.

De uma forma geral, um único PDC usando o tdbsam como backend atende bem a até 250 clientes. Este limite não é relacionado ao uso do tdbsam, mas sim a questões práticas relacionadas ao desempenho da rede. Ele pode ser maior ou menor na prática, de acordo com a velocidade da rede (100 ou 1000 megabits), o hardware do servidor e a carga sobre a rede. A partir daí, passa a fazer sentido migrar para um banco de dados LDAP e passar a adicionar servidores BDC secundários.

Confira a terceira parte em: https://www.hardware.com.br/tutoriais/samba-pdc/

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X