Aprenda a configurar um servidor de arquivos samba no debian com autenticação no active directory.
Em empresas ou organizações governamentais é comum encontrar servidores de arquivos (com o samba como solução) centralizando o armazenamento e sendo acessados a partir de computadores clientes.
O artigo vai ensinar a instalar o samba no debian e fazer todas as configurações necessárias para que o servidor de arquivos funcione como domain member.
Ao final, você terá um ambiente preparado para compartilhar arquivos, autenticando usuários em servidores controladores de domínio do active directory de forma segura.
Informações técnicas da infraestrutura utilizadas no artigo
Informações técnicas do servidor de arquivos samba:
Sistema Operacional: Debian versão 13
Endereço IP: 10.10.20.10/24 (O endereço IP já foi configurado no servidor)
Hostname: fileserver
Nome NetBIOS do servidor: fileserver (o mesmo que o hostname, deve ter no máximo 15 caracteres, preferencialmente alfanuméricos).
As informações técnicas do domínio usadas no tutorial durante o processo de configuração:
Nome do domínio: dlncloud.lan
Nome NetBIOS do domínio: dlncloud
IP do servidor controlador de domínio: 10.10.20.5/24
Caso ainda não tenha uma active directory instalado e configurado, recomendo a leitura do artigo completo que ensina a implementar um do ZERO.
AVISO
O endereço IP do servidor deve ser configurado previamente, a configuração não será ensinada no artigo.
As informações técnicas do domínio e servidor(es) controlador(es) de domínio devem ser alteradas conforme a necessidade.
Todas essas informações serão usadas ao longo do artigo.
Instalando samba no servidor de arquivos debian
Antes de fazer qualquer configuração é necessário primeiro instalar o samba e também pacotes de software usados na configuração do linux para haver comunicação com active directory.
IMPORTANTE
Todas as tarefas a seguir exigem privilégios administrativos, por esse motivo execute todos os comandos utilizando o usuário root ou o comando sudo se estiver instalado e configurado no sistema.
A instalação do samba no debian é feita executando os comandos:
apt updateenv DEBIAN_FRONTEND="noninteractive" apt install samba winbind krb5-user libnss-winbind libwbclient0 acl attr -yExplicação dos pacotes extras:
- winbind – Este pacote instala o daemon “winbindd” usado para comunicação com o Active Directory.
- libnss-winbind – Instala bibliotecas usadas pelo daemon “winbindd” para mapear e disponibilizar no linux os usuários e grupos do domínio.
- krb5-user – Instala programas básicos para autenticação utilizando o protocolo Kerberos, o kerberos é usado para autenticação segura no active directory.
- acl e attr – Permitem configurar e aplicar permissões avançadas em arquivos e diretórios compartilhados.
Após instalar o samba, configure o sistema para não iniciar o daemon samba, porque ele é usado somente quando precisa configurar o servidor como controlador de domínio do AD.
systemctl disable samba-ad-dc.servicesystemctl mask samba-ad-dc.serviceE configure os daemons smbd, nmbd e winbindd para serem iniciados durante o boot.
systemctl enable smbd.service nmb.service winbind.serviceConfigurações no debian para ingressar no domínio
O servidor de arquivos samba será configurado na função domain member, ou seja, uma máquina que faz parte de um domínio active directory.
E para funcionar na função domain member é necessário ingressar o servidor no domínio, configurando partes do sistema operacional e somente depois o samba.
Definir hostname e resolução do FQDN do servidor de arquivos
Primeiro defina o hostname, que também será o nome netbios do servidor. A recomendação é ter no máximo 15 caracteres (números, letras e hífen). No exemplo será fileserver.
hostnamectl hostname fileserverApós configurar o hostname, edite o arquivo “/etc/hosts” para o FQDN do servidor de arquivos samba resolver para o seu endereço IP.
nano /etc/hostsO FQDN é o nome do host (hostname) “.” (ponto) seguido do nome do domínio (no artigo é dlncloud.lan). Após a primeira linha adicione a seguinte configuração:
10.10.20.10/24 fileserver.dlncloud.lan fileserver
Após configurar, salve as alterações.
Configuração DNS para localizar controladores de domínio
O DNS é essencial para os clientes encontrarem o(s) servidor(es) controlador(es) de domínio.
No linux, o arquivo “/etc/resolv.conf” é usado para informar qual servidor dns deve ser consultado, por isso é necessário configura-lo.
nano /etc/resolv.confApague as configurações existentes e adicione novas e salve as modificações:
search dlncloud.lan
nameserver 10.10.20.5Na infraestrutura que está trabalhando, substitua “10.10.20.5” e “dlncloud.lan” pelo endereço IP do servidor controlador de domínio e nome do domínio respectivamente.
O debian assim como outras distribuições linux armazena no arquivo “/etc/nsswitch.conf” a ordem da resolução de nomes dns, por isso é necessário modificar-lo:
nano /etc/nsswitch.confE deixe a linha que inicia com a palavra “hosts” configurada assim:
hosts: files dns
Sincronização de data e hora com DCs do domínio
Para a autenticação acontecer é necessário que a data e hora do cliente seja sincronizado com os DCs. O debian utiliza um software cliente NTP chamado systemd-timesyncd para sincronizar data e hora com servidores NTP.
Para configurar o systemd-timesyncd crie o diretório “/etc/systemd/timesyncd.conf.d/”:
mkdir -v /etc/systemd/timesyncd.conf.d/E execute o seguinte comando:
echo "[Time]
NTP=10.10.20.5" > /etc/systemd/timesyncd.conf.d/samba.confA configuração define que o serviço NTP que será usado para atualizar a data e hora é o do servidor controlador de domínio, no exemplo do artigo é o “10.10.20.5”.
E para efetivar a configuração reinicie o serviço systemd-timesyncd:
systemctl restart systemd-timesyncd.serviceVerifique no status da unit systemd-timesyncd.service se houve conexão e iniciou a sincronização:
systemctl status systemd-timesyncd.service
Deverá aparecer no fim algo similar as mensagens destacadas em vermelho da imagem acima.
Configurando cliente kerberos para autenticação
Após fazer a sincronização de data e hora é possível configurar o arquivo “/etc/krb5.conf” para fazer a autenticação no servidor controlador de domínio usando o kerberos.
Renomeie o arquivo para criar uma cópia e crie um novo arquivo “/etc/krb5.conf”:
mv -v /etc/krb5.conf /etc/krb5.conf.bkpnano /etc/krb5.confA configuração deve ficar como mostrado a seguir:
[libdefaults]
default_realm = DLNCLOUD.LAN
dns_lookup_realm = false
dns_lookup_kdc = trueSubstitua “DLNCLOUD.LAN” pelo nome real do domínio na infraestrutura que está trabalhando. Mas sempre mantendo em letras MAIÚSCULAS.
Salve as alterações e teste a comunicação com o comando kinit. Será solicitado a senha do usuário do AD passado como argumento para o comando kinit:
kinit administratorSe preferir, substitua administrator pelo nome de outra conta de usuário cadastrada no AD para testar a comunicação.
Ingressando no domínio AD o servidor de arquivos samba
Concluída as configurações no sistema operacional, é hora de configurar o servidor de arquivos samba para se comunicar com os servidores controladores de domínio e junto-lo ao domínio.
Renomeie o arquivo “/etc/samba/smb.conf” e em seguida crie um novo arquivo:
mv -v /etc/samba/smb.conf /etc/samba/smb.conf.bkpnano /etc/samba/smb.confAdicione a seguinte configuração dentro do arquivo:
[global]
workgroup = DLNCLOUD
realm = DLNCLOUD.LAN
security = adsSubstitua “DLNCLOUD” pelo nome NetBIOS do domínio e “DLNCLOUD.LAN” pelo nome do domínio da infraestrutura que está trabalhando.
Explicação dos parâmetros:
[global] → Seção global, recebe todas as configurações aplicadas ao samba e a todos os compartilhamentos. Qualquer seção abaixo é um compartilhamento.
workgroup → Recebe como valor o nome do grupo de trabalho. Mas quando configurado como domain member ou como active directory domain controller define o nome netbios do domínio.
security → Nível de segurança, define como o samba vai autenticar os usuários conectados aos seus serviços, incluindo os compartilhamentos. O valor ads, faz o samba tentar autenticar o usuário no banco de dados do active directory.
realm → Especifica o nome do reino kerberos, no caso é o nome do domínio, mas o valor deve ser definido em letras MAIÚSCULAS.
Para aprender mais sobre cada parâmetro é altamente recomendado a leitura do manual do arquivo smb.conf.
Salve as alterações e teste a configuração executando o comando testparm utilizando a opção “-s”:
testparm -s
Na saída do comando deve aparecer “Server role: ROLE_DOMAIN_MEMBER”, indicando que o samba foi configurado como um domain member.
Se na saída do comando testparm aparecer também:
idmap range not specified for domain '*'
ERROR: Invalid idmap range for domain *!Esse erro se dá por que não foi configurado um range para mapear os usuários e grupos do AD. Mas fique tranquilo(a), porque será resolvido ao configurar o idmap no arquivo “/etc/samba/smb.conf” em uma das próximas etapas.
Agora ingresse no domínio o servidor de arquivos samba executando o comando net. Utilize o nome de um usuário com privilégio no AD para juntar (join) o servidor ao domínio. No exemplo, estou utilizando a conta administrator:
net ads join -U administrator
Se apareceu na saída algo similar a: Joined FILESERVER to dns domain ‘dlncloud.lan’, significa que o servidor ingressou com sucesso no domínio.
Reinicie o servidor:
rebootApós o servidor de arquivos samba reiniciar, autentique-se com usuário o root e teste a conexão com o servidor remoto:
net ads testjoinA saída deve ser: “Join is OK”, que significa que o servidor de arquivos samba é membro do domínio.
Ajustes após ingressar no domínio
IMPORTANTE:
Antes de fazer as configurações de DNS, verifique se o serviço dhcpcd esta instalado. Se estiver, pare todos os processos dele e remova o pacote dhcpcd-base que o instala no sistema, executando os comandos abaixo na sequência:
pkill dhcpcd # para todos os processos de dhcpcd
apt purge dhcpcd-base -y
systemctl restart networking.service
O DNS é essencial para o cliente se autenticar no domínio, para que as configurações de dns fiquem persistentes no debian instale o pacote “resolvconf” que será responsável por atualizar o “/etc/resolv.conf” a partir das configurações de placa de rede.
apt updateapt install resolvconf -yEm seguida edite o arquivo de configuração de placas de rede do debian “/etc/network/interfaces”:
nano /etc/network/interfacesE adicione as configurações: “dns-nameservers” e “dns-search”:
dns-nameservers 10.10.20.5
dns-search dlncloud.lan
Substitua “10.10.20.5” pelo(s) endereço(s) IP do servidor(es) DC do domínio e “dlncloud.lan” pelo nome do domínio da infraestrutura da empresa que está trabalhando.
Para efetivar as configurações reinicie a unit networking.service:
systemctl restart networking.serviceMapeando usuários e grupos do AD para serem usados no linux
No Active Directory, cada usuário e grupo possui um identificador único chamado SID (Security Identifier). Esse identificador é utilizado pelo Windows para controlar permissões e identificar objetos de forma exclusiva.
Já no Linux, as contas de usuários e grupos são identificadas por UID (User ID) e GID (Group ID).
Como o Linux não utiliza SIDs para identificar usuários e grupos, é necessário realizar um mapeamento entre o SID do Active Directory e os UIDs/GIDs do Linux para o sistema reconhecer os usuários, grupos do AD e aplicar as permissões aos compartilhamentos.
Para fazer o mapeamento no servidor de arquivos samba edite o arquivo “/etc/samba/smb.conf”.
nano /etc/samba/smb.confInclua as seguintes configurações na seção [global]:
idmap config *:backend = autorid
idmap config *:range = 1000000-99999999
winbind nss info = template
template shell = /bin/false
template homedir = /home/%D/%UExplicação dos parâmetros:
idmap config → Parâmetro que define informações para aplicar o mapeamento do SID de cada usuário e grupo do domínio para UID/GID no linux, ou seja, gera UIDs e GIDs para usuários e grupos do AD ser usados no linux.
O caractere “*” (Asterisco) indica que a configuração é aplicada ao domínio padrão (BUILTIN), a configuração para outros domínios são opcionais, assim o “*” faz o mapeamento para todos os domínios.
O valor “backend” após o “*:” configura o mecanismo usado pelo daemon winbind para fazer o mapeamento, no exemplo, é o “autorid”.
É importante você saber que ao usar o backend autorid os IDs (UIDs e GIDs) de usuários e grupos não serão iguais em todos os membros do domínio que usam o Samba.
O valor “range” após o “*:” configura o intervalo de UIDs e GIDs que os usuários e grupos do AD vão utilizar no linux.
winbind nss info → Controla como o daemon winbind recupera informações como shell e diretório home para os usuários do AD utilizarem no linux.
O valor “template” define que o shell e homedir serão atribuídos respectivamente pelos parâmetros “template shell” e “template homedir”.
template shell → Configura o shell que a conta de usuário do AD vai usar após o mapeamento.
template homedir → Configura o diretório home que a conta de usuário do AD vai usar após o mapeamento. O valor “%D” (nome do domínio) e “%U” (nome do usuário) são variáveis do samba.
Salve as configurações e para efetiva-las reinicie os daemons smbd e winbindd:
systemctl restart smbd.service winbind.servicePara concluir a configuração e disponibilizar usuários e grupos de domínio para o sistema local, habilite a biblioteca do winbind para o serviço de troca de nomes (NSS). Edite o arquivo “/etc/nsswitch.conf”:
nano /etc/nsswitch.confSe as linhas que iniciam com “passwd” e “group” estiverem assim:
passwd: files systemd
group: files systemdSubstitua por:
passwd: files systemd winbind
group: files systemd winbindIMPORTANTE
Não adicione a palavra winbind para o banco de dados shadow do NSS. Porque pode causar falha ao usar o comando wbinfo.
Salve as alterações e teste a configuração executando comando wbinfo para listar os usuários e grupos do AD:
wbinfo -u # listar usuários do domínio ADwbinfo -g # listar grupos do domínio ADConfigurando compartilhamento no servidor de arquivos samba
Com o servidor ingressado no domínio e a configuração do mapeamento de usuários e grupos do AD concluída, você já pode configurar um compartilhamento no servidor de arquivos samba.
Para configurar o compartilhamento crie um diretório que será compartilhado:
mkdir -v -m 2770 /home/sharePara o exemplo, somente os membros do grupo “domain admins” terá acesso, então o proprietário será o root e o grupo proprietário será “domain admins”:
chown root:"dlncloud\domain admins" -v /home/shareSubstitua “dlncloud” pelo nome netbios do domínio.
E agora edite o arquivo “/etc/samba/smb.conf” para criar o compartilhamento:
nano /etc/samba/smb.confE inclua uma nova seção (compartilhamento):
[share]
path = /home/share
read only = no
create mask = 660
directory mask = 770Salve as alterações e reinicie o daemon smbd:
systemctl restart smbd.serviceEm seguida teste o acesso ao servidor de arquivos com um usuário membro do grupo configurado nas permissões, no artigo é o grupo domain admins.
Conclusão
O samba é uma excelente alternativa para empresas que desejam integrar servidores de arquivos linux ao Active Directory sem abrir mão da compatibilidade com computadores Windows.
Embora a configuração do servidor de arquivos samba no debian com autenticação no AD envolva diversas etapas, o entendimento de cada configuração é essencial para ter domínio do que está fazendo.
E para se aprofundar mais vale a pena conhecer o nosso guia completo de estudos sobre o Servidor Samba para que conheça outras funções do samba e saiba implementa-las.
Se este artigo ajudou você a implementar seu servidor de arquivos samba ou se ficou com alguma dúvida, deixe seu comentário abaixo. Sugestões, elogios e experiências também são muito bem-vindos e ajudam outros leitores a aprender mais sobre o tema.

