Integrando o Ubuntu no Active Directory

Mascote do LinuxPro apontando para o rack e ligando o cabo da estação Ubuntu ao controlador de domínio, com os logos do Ubuntu e do Windows na parede

Nota (2026): Howto de abril de 2017 — Ubuntu 16.04 + PBIS Open (Likewise / PowerBroker) e um script no Gist. O repositório BeyondTrust/pbis-open foi arquivado em novembro de 2021; não instale isso em máquina nova. O caminho oficial no Ubuntu 24.04/26.04 é realmd + sssd + adcli. O vídeo do ODT permanece abaixo, como registro do jeito antigo.

Juntar o Ubuntu ao Active Directory é o jeito de o desktop ou o servidor Linux autenticar com a mesma conta do Windows, sem usuário local por máquina. O domínio continua sendo o AD DS on-premises (ou o Entra Domain Services, que emula AD). Não confundir com Microsoft Entra ID (o ex-Azure AD): nuvem de identidade, sem realm join.

O que mudou desde o PBIS

Likewise Open → PowerBroker Open → PBIS Open foi o atalho de 2007–2019: um agente próprio, UID estável, join em um comando. BeyondTrust arquivou o código aberto; o produto comercial (AD Bridge) segue à parte. No Ubuntu o empilhamento da distro ganhou o lugar:

  • realmd descobre o domínio e orquestra o join.
  • adcli cria a conta de computador no AD e grava o keytab.
  • sssd (provider ad) responde NSS/PAM: login, grupo, cache offline.

Winbind/Samba ainda serve se o nó também for file server CIFS. Para “só autenticar usuário do AD”, SSSD é o default da Canonical. Se o AD for um Samba 4 no Linux, o setup do DC está em Samba4 Setup OpenSUSE — o join do Ubuntu é o mesmo.

Antes do join: DNS, hora e nome

Kerberos não perdoa. Se o relógio atrasar mais de ~5 minutos ou o DNS não achar _ldap._tcp, o join falha com mensagem inútil.

  1. DNS do Ubuntu aponta para o domain controller (ele precisa ser autoritativo do domínio).
  2. Hora sincronizada — chrony o systemd-timesyncd, de preferência contra o próprio DC.
  3. Hostname curto (conta de computador no AD tem teto NetBIOS de 15 caracteres) e FQDN em /etc/hosts.
sudo hostnamectl set-hostname ubuntu-lab.ad1.example.com
# /etc/hosts:  10.51.0.11  ubuntu-lab.ad1.example.com ubuntu-lab

# DNS via netplan (ajuste o arquivo da interface)
# nameservers:
#   addresses: [10.51.0.5]
sudo netplan apply

timedatectl status
resolvectl status

Pacotes e o realm join

No Ubuntu 24.04 e 26.04 os pacotes oficiais bastam. Não baixe .deb de site de terceiro.

sudo apt update
sudo apt install sssd-ad sssd-tools realmd adcli

sudo realm -v discover ad1.example.com
sudo realm join -v ad1.example.com
# ou conta de join dedicada, não o Administrator do dia a dia:
# sudo realm join -v -U joiner ad1.example.com

realm discover tem que listar server-software: active-directory e client-software: sssd. Se não descobrir, o problema é DNS — não é o SSSD. O join pede a senha, chama o adcli, escreve /etc/sssd/sssd.conf, liga PAM/NSS e sobe o serviço.

realm list
sudo adcli testjoin
getent passwd joao@ad1.example.com
id joao@ad1.example.com

A conta de computador aparece no container Computers do ADUC. OTP de join existe (--one-time-password) se a política da empresa não deixar senha de admin no notebook.

sssd.conf: o que importa

O realm já gerou o arquivo. Ele precisa ser 0600 root:root — senão o SSSD recusa subir.

[sssd]
domains = ad1.example.com
config_file_version = 2

[domain/ad1.example.com]
id_provider = ad
access_provider = ad
ad_domain = ad1.example.com
krb5_realm = AD1.EXAMPLE.COM
cache_credentials = True
krb5_store_password_if_offline = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
ldap_id_mapping = True
default_shell = /bin/bash
  • cache_credentials — notebook fora da rede ainda autentica (com a senha já vista).
  • use_fully_qualified_names = True — login joao@ad1.example.com. Só mude para False se tiver un domínio e tiver certeza de que não vai entrar floresta com confiança.
  • ldap_id_mapping — UID/GID derivados do SID. Estável entre máquinas com o mesmo domínio; não é o UID que o PBIS gravava no AD. Se o parque antigo depende de UID fixo no atributo POSIX, isso é outro desenho (SFU / ldap_idmap_range / idmap no Samba).

Home automático (o realm não liga isso sozinho):

sudo pam-auth-update --enable mkhomedir

Login, SSH, sudo e quem pode entrar

No Desktop, o GDM não lista usuário de AD na primeira vez: clique em “Não está na lista?” e digite joao@ad1.example.com. Nas seguintes, aparece como local.

No servidor, o OpenSSH costuma vir com senha desligada. Sem chave, o login de AD não entra até você decidir isso de propósito:

# /etc/ssh/sshd_config.d/ad.conf  (só se a política permitir senha)
PasswordAuthentication yes
KbdInteractiveAuthentication yes
sudo systemctl reload ssh

Restringir quem loga — não deixe o domínio inteiro no SSH do jump host:

sudo realm deny --all
sudo realm permit -g 'linux-admins@ad1.example.com'

Sudo para um grupo do AD (o espaço no nome vira barra invertida):

%linux-admins@ad1.example.com ALL=(ALL:ALL) ALL

SSH com FQDN fica com dois @: ssh joao@ad1.example.com@ubuntu-lab. Ticket Kerberos depois do login: apt install krb5-user e klist. GPO de verdade no Ubuntu é outro pacote — o ADSys da Canonical, não o SSSD sozinho.

AD on-prem, Entra e Samba

  • AD DS (Windows Server 2022/2025) — este howto.
  • Entra Domain Services — AD gerenciado na Azure; o join é o mesmo stack, realm em MAIÚSCULAS.
  • Entra ID — SSO/OIDC/SAML. Não gera conta de computador Kerberos. Ferramenta errada para “colocar o Ubuntu no domínio”.
  • Samba 4 como DC — o Ubuntu junta igual; o DC é outro post.

Há um irmão deste artigo, focado no desktop: Ubuntu no Windows Active Directory. Para repetir o join em dezenas de nós, o playbook mora melhor no Ansible do que num gist de 2017.

Sair do domínio:

sudo realm leave ad1.example.com

O vídeo de 2017 (PBIS no 16.04)

O passo a passo gravado para o Canal ODT usa Ubuntu 16.04 e o agente BeyondTrust. Serve de contexto histórico; os comandos do script não são o que você roda hoje.

Docs atuais: Ubuntu Server — SSSD with Active Directory. Código do SSSD: github.com/SSSD/sssd.