Recentemente (13/Dez/2024) fiz um vídeo mostrando como instalar um Active Directory com Samba4 utilizando máquinas virtuais https://www.youtube.com/watch?v=9_lVXZmbBoQ com toda documentação disponível em Active-Directory-With-Samba-4
Um desenvolvedor e colega meu disse:
Legal esse samba4, mas dá muito trabalho. Porquê você não faz em Docker pra eu testar uma aplicação que utiliza o LDAP para autenticar?
Depois de refletir sobre o que ele falou, eu decidi:
Aprender a utilizar esse Docker como um desenvolvedor.
Mergulhar no Git, GitHub, Docker, Dockerfile, docker-compose.yml, docker build, etc.
Contruir uma imagem com o Samba4 atualizado que fosse simples de ser instanciada.

# obter o código fonte
git clone https://github.com/Tiozao-do-Linux/samba4-addc.git
# entrar no diretório
cd samba4-addc/fedora
# copiar o arquivo env.example para .env
cp ../env.example .env
# Executar o container observando os logs
docker compose up -d && docker compose logs -f
O Sistema de Nomes de Domínio (DNS) será seudominio.com.br.
Com o container rodando é possível utilizar autenticação LDAP nas portas 389/636 com o usuário [email protected] e senha SuperSecretPassword@2025 com a raiz LDAP DC=seudominio,DC=com,DC=br no seu host local (127.0.0.1)
De brinde pode-se efetuar consultas/alterações nos mil usuários já povoados.
Suponha que seu Sistema de Nomes de Domínio (DNS) seja terra.com.br.
Alterar o seu
.envconforme abaixo:
_REALM="TERRA.COM.BR"
_SYSVOL="terra.com.br"
_DOMAIN="TERRA"
_PASSWORD="SuperSecretPassword@2025"
_NETBIOS="dc01"
_DNS_FORWARDER_1="1.1.1.1"
_DNS_FORWARDER_2="8.8.8.8"
_DNS_BACKEND="SAMBA_INTERNAL"
_TEMP_PASSWORD="TempSuperSecretPassword@2025"
Dentro do diretório provision deve existir um arquivo fake.TERRA.ldif. Se não houver esse arquivo ldif contendo o nome de DOMINIO no nome, não ocorrerá o povoamento pelo script post-provision.sh
# utilizar o generate-fake-ldif com 1000 entradas para o TERRA.COM.BR com language em pt_BR
docker run --rm jarbelix/generate-fake-ldif 1000 TERRA.COM.BR pt_BR > ../provision/fake.TERRA.ldif
Remover o domínio seudominio.com.br criado anteriormente.
# parar o container
docker stop samba4-ad
# remover o container
docker rm samba4-ad
# remover os volumes relacionados ao samba
docker volume rm $( docker volume ls -q | grep samba )
Subir o novo container para o novo domínio e visualizar os logs
# Executar o container observando os logs
docker compose up -d && docker compose logs -f
Entre no container
# Entrar no container
docker exec -it samba4-ad bash
Dentro do container execute comandos dentro dele.
# Mostrar o /etc/samba/smb.conf
cat /etc/samba/smb.conf
# Listando apenas 10 usuários do domínio
samba-tool user list | head
# Listando os detalhes do primeiro usuário
samba-tool user show $(samba-tool user list | head -n1)
OPCIONAL: Dentro do container crie OUs, Usuários e Grupos
# Criando OUs
samba-tool ou add 'OU=Presidente'
samba-tool ou add 'OU=Financeiro'
samba-tool ou add 'OU=RH'
samba-tool ou add 'OU=TI'
samba-tool ou add 'OU=Contabil'
samba-tool ou add 'OU=Producao'
samba-tool ou add 'OU=Comercial'
samba-tool ou add 'OU=Logistica'
# Criando Usuários
samba-tool user add seu.cebola --random-password --use-username-as-cn --userou='OU=Presidente'
samba-tool user add cebolinha --random-password --use-username-as-cn --userou='OU=Financeiro'
samba-tool user add anjinho --random-password --use-username-as-cn --userou='OU=Financeiro'
samba-tool user add monica --random-password --use-username-as-cn --userou='OU=RH'
samba-tool user add dudu --random-password --use-username-as-cn --userou='OU=RH'
samba-tool user add rolo --random-password --use-username-as-cn --userou='OU=RH'
samba-tool user add xaveco --random-password --use-username-as-cn --userou='OU=TI'
samba-tool user add horacio --random-password --use-username-as-cn --userou='OU=TI'
samba-tool user add marina --random-password --use-username-as-cn --userou='OU=TI'
samba-tool user add cascao --random-password --use-username-as-cn --userou='OU=Contabil'
samba-tool user add ze.vampir --random-password --use-username-as-cn --userou='OU=Contabil'
samba-tool user add magali --random-password --use-username-as-cn --userou='OU=Producao'
samba-tool user add rosinha --random-password --use-username-as-cn --userou='OU=Producao'
samba-tool user add carminha.frufru --random-password --use-username-as-cn --userou='OU=Producao'
samba-tool user add chico.bento --random-password --use-username-as-cn --userou='OU=Comercial'
samba-tool user add capitao.feio --random-password --use-username-as-cn --userou='OU=Comercial'
samba-tool user add piteco --random-password --use-username-as-cn --userou='OU=Comercial'
samba-tool user add franjinha --random-password --use-username-as-cn --userou='OU=Logistica'
samba-tool user add rita.najura --random-password --use-username-as-cn --userou='OU=Logistica'
samba-tool user add juca --random-password --use-username-as-cn --userou='OU=Logistica'
# Criando grupos
samba-tool group add GLPI-Users
samba-tool group add GLPI-Admins
# Adicionando usuários ao Grupo GLPI-Users
samba-tool group addmembers GLPI-Users seu.cebola,cebolinha
samba-tool group addmembers GLPI-Users anjinho,dudu,rolo,xaveco,horacio,marina,ze.vampir,rosinha,carminha.frufru,chico.bento,capitao.feio,piteco,franjinha,rita.najura,juca
# Adicionando usuários ao Grupo GLPI-Admins
samba-tool group addmembers GLPI-Admins seu.cebola
# Listando usuários do grupo GLPI-Users
samba-tool group show GLPI-Users
# Listando usuários do grupo GLPI-Admins
samba-tool group show GLPI-Admins
# Trocando a senha de Usuários
samba-tool user setpassword seu.cebola --newpassword=${_PASSWORD}
samba-tool user setpassword cebolinha --newpassword=${_PASSWORD}
.ldif para o Domínio (como um .sql para Database).env como váriáveis defaulthostname do containersamba4-adc no GitHub - https://github.com/Tiozao-do-Linux/samba4-addc
generate-fake-ldif no GitHub - https://github.com/Tiozao-do-Linux/generate-fake-ldif
Gerenciador Web do AD no GitHub - https://github.com/Tiozao-do-Linux/GNU-ADMW (ainda em desenvolvimento) com uma Demonstração https://admw-demo.tiozaodolinux.com/
Podman Desktop via flatpak - https://flathub.org/apps/io.podman_desktop.PodmanDesktop
Browser LDAP Apache Directory Studio via flatpak - https://flathub.org/apps/org.apache.directory.studio