Samba4
Samba4 AC/DC[editar]
Provisionamento[editar]
Fixar IP[editar]
Cópia de segurança do arquivo[editar]
cp /etc/netplan/*.yaml /etc/netplan/*.yaml.bckp
Edite o arquivo ".yaml" em "/etc/netplan" conforme abaixo:
network:
version: 2
ethernets:
enp0s3:
dhcp4: false
adresses: [192.168.0.100/24]
routes:
- to: default
via: 192.168.0.1
nameservers:
adresses:
- 8.8.8.8
- 1.1.1.1
Ajuste no /etc/hosts[editar]
Edite o arquivo[editar]
vim /etc/hosts
ajuste como o trecho abaixo[editar]
127.0.0.1 localhost.localdomain localhost 127.0.1.1 dominio.dominio.local ad1 192.168.18.10 ad1.dominio.local ad1
Ajuste no /etc/hostname[editar]
Edite o arquivo /etc/hostname[editar]
hostnamectl set-hostname AD1.DOMINIO.LOCAL
Ajuste date e hora[editar]
timedatectl set-timezone America/Sao_Paulo
Para verificar a hora
date
Instala as dependências[editar]
apt install autoconf apt install bind9utils apt install bison apt install debhelper apt install dnsutils apt install docbook-xml apt install docbook-xsl apt install flex apt install gdb apt install libjansson-dev apt install libacl1-dev apt install libaio-dev apt install libarchive-dev apt install libattr1-dev apt install libblkid-dev apt install libbsd-dev apt install libcap-dev apt install libcups2-dev apt install libgnutls28-dev apt install libgpgme11-dev apt install libjson-perl apt install libldap2-dev apt install libncurses5-dev apt install libpam0g-dev apt install libparse-yapp-perl apt install libpopt-dev apt install libreadline-dev apt install nettle-dev apt install perl apt install perl-modules apt install pkg-config apt install python-all-dev apt install python-crypto apt install python-dbg apt install python-dev apt install python-dnspython apt install python3-dnspython apt install python-gpg apt install python3-gpg apt install python-markdown apt install python3-markdown apt install python3-dev apt install xsltproc apt install zlib1g-dev apt install liblmdb-dev apt install lmdb-utils apt install libsystemd-dev
Reinicia[editar]
reboot now
Instala mais o samba e suas dependências[editar]
apt install samba apt install krb5-user apt install winbind apt install libnss-winbind apt install smbclient apt install ldap-utils apt install acl apt install attr apt install ntp
Configurar o Kerberos[editar]
Configuring Kerberos Authentication[editar]
default kerberos Realm: DOMINIO.LOCAL
Kerberos Server for your realm: 127.0.0.1
Administrative Server for your Kerberos realm: 127.0.0.1
Parar alguns serviços[editar]
systemctl stop smbd.service systemctl stop nmbd.service systemctl stop winbind.service
Remover o smb.conf[editar]
mv /etc/samba/smb.conf /etc/samba/smb.conf.bckp
Provisionamento[editar]
samba-tool domain provision --use-rfc2307 --interactive
Em um certo momento do provisionamento, será perguntado algumas informações, confirme como abaixo:
Realm [ ]: DOMINIO.LOCAL Domain[ ]: DOMINIO Server Role [dc]: dc DNS Backend [SAMBA_INTERNAL]: SAMBA_INTERNAL DNS Forwarder IP address[127.0.0.53]: 8.8.8.8 Administrator password: *************
Iniciar os serviços que foram parados anteriormente:[editar]
/etc/init.d/samba-ad-dc restart systemctl unmask samba-ad-dc.service systemctl enable samba-ad-dc.service systemctl restart samba-ad-dc.service systemctl status samba-ad-dc.service
Desativar o systemd-resolved[editar]
systemctl disable systemd-resolved.service systemctl stop systemd-resolved.service
Editar o arquivo /etc/resolv.conf[editar]
vim /etc/resolv.conf
Inclua o trecho abaixo:
nameserver 192.168.0.1 domain dominio.local search dominio.local
Exportar o krb5.conf[editar]
cp -vb /var/lib/samba/private/krb5.conf /etc/krb5.conf
Reinicia[editar]
reboot now
Realização de testes[editar]
smbclient -L localhost -U Administrator
Verificar se o serviço de DNS está funcionando fazendo as resoluções:[editar]
host -t A dominio.local host -t SRV _ldap._tcp.dominio.local host -t SRV _kerberos._udp.dominio.local
Verificar o funcionamento do KERBEROS[editar]
kinit [email protected] klist
Verifica o nivel da árvore[editar]
samba-tool domain level show
SAMBA AD (Compilado)[editar]
Preparação[editar]
Definir hostname correto (FQDN)[editar]
O hostname precisa ser um nome completo (FQDN).
hostnamectl set-hostname ad20.fourtrust.local
E valide:
hostname -f
Ajustar /etc/hosts[editar]
vim /etc/hosts
Deixe assim (ajuste IP e domínio):
127.0.0.1 localhost 192.168.0.10 ad20.fourtrust.local ad20
IP fixo (OBRIGATÓRIO)[editar]
AD não funciona com DHCP.
Configure no Netplan:
vim /etc/netplan/*.yaml
<pre>
Exemplo:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.0.100/24
gateway4: 192.168.0.1
nameservers:
addresses:
- 127.0.0.1
- 8.8.8.8
Depois:
netplan try netplan apply
Resolver DNS local[editar]
Antes de provisionar, o sistema já deve usar ele mesmo como DNS:
Verifique o link simbólico atual
ls -l /etc/resolv.conf
Desabilite o systemd-resolved
sudo systemctl disable --now systemd-resolved
Edite:
vim /etc/resolv.conf
Deixe:
nameserver 127.0.0.1 search fourtrust.local
Sincronização de horário (CRÍTICO pro Kerberos)[editar]
Kerberos quebra se o horário estiver errado.
Setar "Time Zone" para America - São Paulo.
timedatectl set-timezone America/Sao_Paulo
Validando:
timedatectl
Local time: Wed 2026-05-06 10:58:01 -03
Universal time: Wed 2026-05-06 13:58:01 UTC
RTC time: Wed 2026-05-06 13:58:02
Time zone: America/Sao_Paulo (-03, -0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Remover conflitos (IMPORTANTÍSSIMO)[editar]
Pare qualquer serviço que conflita com o Samba AD:
systemctl stop smbd nmbd winbind systemctl disable smbd nmbd winbind
Se instalou pacotes via apt antes, considere remover:
apt remove samba samba-common-bin -y
Limpar configurações antigas[editar]
Se já tentou antes:
rm -rf /usr/local/samba/etc/smb.conf rm -rf /usr/local/samba/private/* rm -rf /usr/local/samba/var/*
Teste básico antes do provision[editar]
Teste resolução:
hostname -f ping ad20.fourtrust.local
Instalação[editar]
Baixa os arquivos[editar]
wget https://download.samba.org/pub/samba/samba-latest.tar.gz
Descompacta[editar]
tar -xvf sambaxxxx.tar.gz
Instala dependencias[editar]
Navegue até a pasta onde está o script que instala as dependências:
sambaxxx/bootstrap/generated-dists/ubuntuxx/bootstrap.sh
roda o script como sudo
sudo ./bootstrap.sh
Compila[editar]
Dentro da pasta do samba:
./configure make make install
Provision[editar]
Tem que resolver para o IP local.
samba-tool domain provision --use-rfc2307 --interactive
Pós provisionamento
ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf
Pós provisionamento[editar]
Mudar o PATH[editar]
Edite:
sudo vim /etc/profile
Adicione no FINAL do arquivo e salve-o:
export PATH=$PATH:/usr/local/samba/bin:/usr/local/samba/sbin
Depois recarregue:
source /etc/profile
Validando:
which samba which samba-tool which smbclient
Deve retornar algo como:
/usr/local/samba/sbin/samba /usr/local/samba/bin/samba-tool
Staus do Samba[editar]
systemctl status samba-ad-dc systemctl start samba-ad-dc systemctl enable samba-ad-dc
Testar o domínio[editar]
/usr/local/samba/bin/samba-tool domain level show
Esperado:
Domain and forest function level for domain 'DC=rjgsnet,DC=local' Forest function level: (Windows) 2008 R2 Domain function level: (Windows) 2008 R2 Lowest function level of a DC: (Windows) 2008 R2
Testar autenticação local[editar]
/usr/local/samba/bin/smbclient -L localhost -U Administrator
Vai pedir senha do Administrator
Esperado:
Password for [RJGSNET\Administrator]:
Sharename Type Comment
--------- ---- -------
sysvol Disk
netlogon Disk
IPC$ IPC IPC Service (Samba 4.24.1)
SMB1 disabled -- no workgroup available
Testar DNS[editar]
host -t A rjgsnet.local
Esperando:
rjgsnet.local has address 192.168.0.100
ou:
/usr/local/samba/bin/samba-tool dns query localhost rjgsnet.local @ ALL
Esperando:
Password for [[email protected]]: Name=, Records=4, Children=0 SOA: serial=1, refresh=900, retry=600, expire=86400, minttl=3600, ns=rjgs.rjgsnet.local., email=hostmaster.rjgsnet.local. (flags=600000f0, serial=1, ttl=3600) NS: rjgs.rjgsnet.local. (flags=600000f0, serial=1, ttl=900) A: 192.168.0.100 (flags=600000f0, serial=1, ttl=900) AAAA: 2804:014c:7983:9179:9a4b:e1ff:fe12:7d6f (flags=600000f0, serial=1, ttl=900) Name=_msdcs, Records=0, Children=0 Name=_sites, Records=0, Children=1 Name=_tcp, Records=0, Children=4 Name=_udp, Records=0, Children=2 Name=DomainDnsZones, Records=0, Children=2 Name=ForestDnsZones, Records=0, Children=2 Name=rjgs, Records=2, Children=0 A: 192.168.0.100 (flags=f0, serial=1, ttl=900) AAAA: 2804:014c:7983:9179:9a4b:e1ff:fe12:7d6f (flags=f0, serial=1, ttl=900)
Testar Kerberos[editar]
kinit Administrator
Esperado:
Password for [email protected]: Warning: Your password will expire in 41 days on Sun 21 Jun 2026 12:41:52 AM -03
Depois:
klist
Esperado:
Ticket cache: FILE:/tmp/krb5cc_0 Default principal: [email protected] Valid starting Expires Service principal 05/10/2026 01:14:47 05/10/2026 11:14:47 krbtgt/[email protected] renew until 05/11/2026 01:14:40
Testar usuários[editar]
/usr/local/samba/bin/samba-tool user list
Esperado: Deve listar os usuários iniciais
Administrator Guest krbtgt
Iniciar com o boot[editar]
Criar o arquivo do serviço
vim /etc/systemd/system/samba-ad-dc.service
Cole o conteúdo e salve:
[Unit] Description=Samba Active Directory Domain Controller After=network.target network-online.target Wants=network-online.target [Service] Type=forking PIDFile=/usr/local/samba/var/run/samba.pid ExecStart=/usr/local/samba/sbin/samba --daemon ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -TERM $MAINPID LimitNOFILE=16384 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
Recarregue o systemd
systemctl daemon-reload
Habilite no boot
systemctl enable samba-ad-dc
Desabilitar a complexidade da senha[editar]
samba-tool domain passwordsettings set --complexity=off
Esperado:
Password complexity deactivated! All changes applied successfully!
Diminuir a complexidade para 4 caracteres
samba-tool domain passwordsettings set --min-pwd-length=4
Fonte[editar]
Colocar no Domínio[editar]
Linux Desktop[editar]
Para inserir seu Ubuntu Desktop (ou qualquer outro com base no Ubuntu) no domínio DOMINIO.LOCAL, execute o passo a passo pelo terminal.
Requisitos:
- Nome DNS resolvido corretamente (/etc/resolv.conf)
- Usuário do domínio com permissão para adicionar máquinas (ex: Administrador)
- Hora sincronizada com o AD
- Hostname da máquina configurado corretamente
🔧 1. Configure hostname e resolv.conf
A. Defina o hostname:
sudo hostnamectl set-hostname xubuntu.dominio.local
B. Edite o /etc/hosts:
sudo nano /etc/hosts
Adicione (ou edite) a linha correspondente:
192.168.0.123 xubuntu.dominio.local xubuntu
C. Configure o DNS para apontar para o Samba AD:
sudo nano /etc/systemd/resolved.conf
Altere (ou descomente e edite) as linhas:
DNS=192.168.0.10
Domains=dominio.local
Salve, e reinicie o serviço de DNS:
sudo systemctl restart systemd-resolved
🕓 2. Configure o timezone e sincronize o relógio (importante!)
sudo timedatectl set-timezone America/Sao_Paulo
sudo apt install chrony -y
Edite /etc/chrony/chrony.conf e adicione no início:
server 192.168.0.10 iburst
Depois:
sudo systemctl restart chrony
chronyc tracking
📦 3. Instalar os pacotes necessários
sudo apt update
sudo apt install realmd sssd sssd-tools adcli samba-common-bin packagekit libnss-sss libpam-sss krb5-user -y
Durante a instalação do krb5-user, insira:
Realm: DOMINIO.LOCAL
Servidor KDC: dominio.local
Servidor Admin: dominio.local
🔐 4. Testar autenticação no domínio (Kerberos)
kinit [email protected]
Você será solicitado a inserir a senha. Se tudo estiver certo, você pode verificar com:
klist
🏁 5. Ingressar a máquina no domínio
sudo realm join --user=administrador DOMINIO.LOCAL
Se houver erro de DNS ou tempo, volte aos passos anteriores.
🔍 6. Verifique se foi ingressado corretamente
realm list
Você deve ver algo como:
realm-name: DOMINIO.LOCAL
configured: kerberos-member
👥 7. Permitir usuários do domínio
Para permitir todos os usuários:
sudo realm permit --all
Ou apenas um grupo:
sudo realm permit --groups "DOMINIO\Domain Users"
👤 8. Login de usuários do domínio (no LightDM ou terminal)
Você pode logar com:
[email protected]
Para que usuários do domínio tenham diretórios home:
sudo pam-auth-update
E marque: "Create home directory on login"
🧪 9. Testar no terminal
Tente rodar:
id [email protected]
Você deve ver as informações do usuário, com grupos do domínio.
💡 DICA: Evite digitar o domínio no login
Edite /etc/sssd/sssd.conf (se não existir, crie com cuidado):
[sssd]
domains = dominio.local
config_file_version = 2
services = nss, pam
[domain/dominio.local]
id_provider = ad
override_homedir = /home/%u
default_shell = /bin/bash
Depois:
sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl restart sssd