Se você chegou aqui é por que está precisando aprender como configurar samba active directory no almalinux, não é mesmo ?
E muito provavelmente essa é uma demanda do seu trabalho, por que a empresa que trabalha ou presta serviços quer economizar com licenças e precisa dessa solução no parque tecnológico da empresa.
Para suprir essa necessidade nesse tutorial prático e rico em informações técnicas e teóricas vai ensinar como configurar o samba na função de active directory domain controller em um servidor que tem o almalinux instalado.
Informações técnicas do servidor e domínio
As informações técnicas do servidor usadas no tutorial:
Sistema Operacional: Almalinux versão 10
Endereço IP: 10.10.20.11/24
Hostname: server
Nome NetBIOS do servidor: server # o mesmo que o hostname, deve ter no máximo 15 caracteres (preferencialmente alfanuméricos)
Localização da instalação do samba: /opt/samba
O endereço IP já foi configurado no servidor, mas o hostname e a localização da instalação do samba ainda serão configurados.
As informações técnicas do domínio usadas no tutorial estão abaixo:
Nome do domínio: dlncloud.lan
Nome NetBIOS do domínio: dlncloud
AVISO
O endereço IP do servidor deve ser configurado previamente, pois a configuração não será ensinada no tutorial.
A localização de instalação do samba deve ser alterada conforme a necessidade.
As informações técnicas do domínio como: Nome do domínio e nome NetBIOS do domínio devem ser alteradas conforme a necessidade.
Todas essas informações serão usadas ao longo do tutorial, por isso é importante defini-las agora.
Preparando sistema operacional para instalar o serviço samba
Antes de instalar samba e configurá-lo na função AD DC é necessário verificar se o sistema de arquivos onde será armazenado o samba tem suporte a ACLs e atributos estendidos.
O Samba quando configurado como Active Directory Domain Controller (AD DC) precisa de suporte a ACLs (Listas de Controle de Acesso) e atributos estendidos (Extended Attributes) no sistema de arquivos seja ele ext4, btrfs ou XFS para emular as permissões de arquivos do Windows NTFS.
Como o samba vai ser instalado em /opt/samba, verifique qual é o sistema de arquivos que está montado em /opt executando o comando df:
df -hT /opt
Veja na coluna type que o tipo de sistema de arquivos é xfs.
Para verificar se o suporte a ACLs no kernel linux em uso foi compilado para xfs, execute o comando:
egrep -i 'xfs_posix_acl' /boot/config-$(uname -r)A saída do comando tem que aparecer o código: CONFIG_XFS_POSIX_ACL=y
Se o sistema de arquivos for ext4 verifique executando o comando:
egrep -i 'ext4_fs_posix_acl|ext4_fs_security' /boot/config-$(uname -r)Na saída do comando tem que aparecer o código: CONFIG_EXT4_FS_POSIX_ACL=y e CONFIG_EXT4_FS_SECURITY=y
Se o sistema de arquivos for btrfs verifique executando o comando execute o comando:
egrep -i 'btrfs_fs_posix_acl' /boot/config-$(uname -r)Na saída do comando tem que aparecer o código: CONFIG_BTRFS_FS_POSIX_ACL=y
Tanto o sistema de arquivos xfs quanto o btrfs já tem o suporte a atributos estendidos habilitados por padrão.
IMPORTANTE
Se a saída do comando não retornar o(s) valore(s) destacado(s) em vermelho significa que o sistema de arquivos não tem suporte nem ACLs e/ou atributos estendidos, nesse caso é necessário para prosseguir instalar um kernel linux compilado com o suporte a ACLs e Atributos Estendidos para o sistema de arquivos em uso.
Recomendo a leitura da documentação do samba para mais informações sobre a necessidade de ter ACLs e atributos estendidos para o samba.
Configuração do firewall
O Samba AD DC recebe e faz conexões em algumas portas, veja a lista a seguir:
| Serviço | Porta | Protocolo da camada de Transporte |
|---|---|---|
| DNS | 53 | TCP / UDP |
| Kerberos | 88 | TCP / UDP |
| End Point Mapper (DCE/RPC) | 135 | TCP |
| NetBIOS Name Service | 137 | UDP |
| NetBIOS Datagram | 138 | UDP |
| NetBIOS Session | 139 | TCP |
| LDAP | 389 | TCP / UDP |
| SMB over TCP | 445 | TCP |
| Kerberos Kpasswd | 464 | TCP / UDP |
| LDAPS | 636 | TCP |
| Catalogo Global | 3268 | TCP |
| Catalogo Global SSL | 3269 | TCP |
| RPC ports Dynamic | 49152-65535 | TCP |
| NTP | 123 | UDP |
O Almalinux já vêm com o serviço de firewall instalado e ativo, é um serviço chamado firewalld.
Primeiro inicie o serviço caso esteja parado e em seguida configure o mesmo para iniciar durante o boot:
systemctl start firewalld.service # inicia o serviço firewalld
systemctl enable firewalld.service # habilita para iniciar durante o bootExecute os comandos a seguir para criar as regras no firewall que permitem conexões nas portas mencionadas anteriormente.
firewall-cmd --add-port=53/tcp --add-port=53/udp
firewall-cmd --add-port=88/tcp --add-port=88/udp
firewall-cmd --add-port=123/udp
firewall-cmd --add-port=135/tcp
firewall-cmd --add-port=137/udp --add-port=138/udp
firewall-cmd --add-port=389/tcp --add-port=389/udp
firewall-cmd --add-port=139/tcp --add-port=445/tcp
firewall-cmd --add-port=464/tcp --add-port=464/udp
firewall-cmd --add-port=636/tcp
firewall-cmd --add-port=3268/tcp
firewall-cmd --add-port=3269/tcp
firewall-cmd --add-port=49152-65535/tcp
firewall-cmd --runtime-to-permanent # tornar as regrar permanantes
firewall-cmd --reloadAtualizar sistema operacional
Antes de instalar o samba atualize o almalinux e também instale o pacote que configura o repositório epel(Extra Packages for Enterprise Linux) no sistema.
dnf install dnf-plugins-core epel-release -y
dnf upgrade -yCaso o sistema tenha atualizado algum pacote importante como por exemplo o systemd ou kernel linux, recomendo que reinicie o servidor.
rebootInstalação do serviço samba no servidor
Os pacotes do samba que estão presentes nos repositórios oficiais do almalinux não foram compilados com a função active directory domain controller, por isso será necessário compilar o código fonte do samba e instalá-lo em seguida.
Instale as dependências necessárias para compilar o samba:
dnf --enablerepo=crb install acl attr wget gzip tar sed autoconf bind-utils binutils bison flex rng-tools rpcgen rpcsvc-proto-devel docbook-dtds docbook-style-xsl make gcc gcc-c++ mingw64-gcc vim e2fsprogs curl cups-devel gdb gnutls-devel gpgme-devel ncurses-devel jansson-devel keyutils-libs-devel krb5-devel krb5-workstation libacl-devel libaio-devel libarchive-devel libattr-devel libblkid-devel libbsd-devel libcap-devel libpcap-devel libtasn1-tools libtasn1-devel libnsl2-devel libtirpc-devel libunwind-devel libuuid-devel libtasn1 libtasn1-tools libxml2-devel libxslt lmdb lmdb-devel openldap-devel pam-devel perl perl-Archive-Tar perl-ExtUtils-MakeMaker perl-Test-Simple perl-generators perl-interpreter perl-Parse-Yapp perl-JSON popt-devel python3 python3-pyasn1 python3-policycoreutils python3-setproctitle python3-libsemanage python3-markdown python3-cryptography python3-iso8601 python3-dns python3-gpg python3-devel readline-devel rpcgen systemd-devel patch zlib-devel dbus-devel libicu-devel glibc-common glib2-devel glibc-langpack-en langpacks-en -yConfigure uma variável que receba como valor a versão do samba que será baixada. Para esse tutorial a versão do samba usada é 4.23.4:
export VERSION_SAMBA='4.23.4'Acesse o diretório /usr/src e seguida baixe o código fonte do samba:
cd /usr/src
wget -c https://download.samba.org/pub/samba/stable/samba-$VERSION_SAMBA.tar.gzDescompacte o arquivo e acesse o diretório que contém o código fonte:
tar xf samba-$VERSION_SAMBA.tar.gz
cd samba-$VERSION_SAMBAConfigure o projeto de compilação do samba executando o script configure:
./configure --with-systemd --prefix=/opt/samba # Pode levar 2 à 3 minutos para ser executadoExplicação das opções:
--with-systemd: Habilita suporte ao systemd.
--prefix: Define a localização onde samba será instalado, nesse exemplo será instalado em /opt/samba.
Compile o código fonte do samba executando o comando make:
make # Pode levar mais de 15 minutos para ser executadoExecute o comando make install para concluir o processo de instalação:
make install # Pode levar mais de 10 minutos para ser executadoConfigurando samba para iniciar durante o boot
Copie o arquivo samba.service que está dentro do diretório que contém o código fonte do samba para /etc/systemd/system e altere o nome para samba-ad-dc.service, basta executar o comando a seguir:
find /usr/src/samba-$VERSION_SAMBA -type f -iname 'samba.service' -exec cp -v {} /etc/systemd/system/samba-ad-dc.service \;Agora edite o arquivo /etc/systemd/system/samba-ad-dc.service, executando os dois comandos a seguir:
sed -i 's|^EnvironmentFile|# EnvironmentFile|' /etc/systemd/system/samba-ad-dc.service
sed -i 's|\$SAMBAOPTIONS|-D|' /etc/systemd/system/samba-ad-dc.serviceFaça o systemd relê as alterações e habilitar o serviço do samba durante o boot:
systemctl daemon-reload
systemctl enable samba-ad-dc.serviceLocalização dos comandos do samba na variável PATH
Essa etapa é importante para não precisar digitar a localização completa dos comandos do samba na linha de comando.
Para que a variável PATH seja alterada sempre que faça login, crie um arquivo com a extensão “.sh” dentro de /etc/profile.d.
echo "export PATH=/opt/samba/sbin:/opt/samba/bin:$PATH" > /etc/profile.d/samba.shEm seguida altere as permissões do arquivo e execute o comando source para carregar na sessão atual do shell bash as alterações:
chmod 644 /etc/profile.d/samba.sh
source /etc/profile.d/samba.shConfigurar samba active directory no almalinux
Altere o hostname(também será o nome NetBIOS) que o servidor usará, ele deve ter no máximo 15 caracteres.
hostnamectl hostname serverTambém é necessário editar o arquivo /etc/hosts, incluindo uma entrada com o FQDN(nome de domínio totalmente qualificado) do próprio servidor Samba AD DC.
vim /etc/hostsAltere a linha que contém o IP 127.0.0.1 de localhost, no exemplo a linha:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4Substitua por:
10.10.20.11 server.dlncloud.lan server
IMPORTANTE
Lembre-se de substituir: O IP 10.10.20.11 pelo IP do seu servidor.
Também altere “server” pelo hostname do seu servidor.
E altere “dlncloud.lan” pelo nome do domínio que você vai criar.
Essa entrada garante que o servidor possa resolver corretamente seu FQDN e o hostname para o IP do próprio servidor samba AD DC.
Agora sim execute o comando a seguir para configurar samba active directory no almalinux e também criar o domínio:
samba-tool domain provision --domain=dlncloud --realm=DLNCLOUD.LANExplicação das opções:
domain: É uma operação sobre o domínio.
provision: Define que a operação é criar um domínio.
--domain: Define o nome NetBIOS do domínio.
--realm: Configura o nome do reino kerberos que também é o nome completo do domínio. O nome deve inserido em CAIXA ALTA.
Ao fim da execução do comando você verá informações similares a imagem abaixo:

Após a criação do domínio redefina a senha do usuário administrator(administrador do domínio):
samba-tool user setpassword administratorO samba gerou um arquivo krb5.conf personalizado, esse arquivo deve substituir o /etc/krb5.conf do sistema. Copie o arquivo gerado pelo samba para /etc.
cp -bf /opt/samba/private/krb5.conf /etcInicie o serviço do samba:
systemctl start samba-ad-dc.serviceVocê acabou de configurar samba active directory no almalinux, mas ainda existem algumas configurações importantes a serem feitas.
Configuração do serviço NTP
O Active Directory faz uso do protocolo Kerberos, que requer uma sincronização de data e hora quase perfeita entre os controladores de domínio e também com os computadores clientes ingressados no domínio para que autenticação seja feita com sucesso.
O samba não tem um serviço NTP, logo é necessário instalar um serviço ntp para garantir a sincronização entre os relógios dos diferentes dispositivos na rede.
O serviço NTP que será instalado e usado é o chrony, para instalá-lo no almalinux execute o comando:
dnf install chrony -yPare o serviço chrony:
systemctl stop chronyd.service
Inclua no fim do arquivo de configuração /etc/chrony.conf a opção confdir:
echo "confdir /etc/chrony.conf.d" >> /etc/chrony.confCrie o diretório /etc/chrony.conf.d que conterá o arquivo de configuração adicional.
mkdir -v /etc/chrony.conf.dAdicione a configuração abaixo no arquivo /etc/chrony.conf.d/samba.conf para permitir acesso da rede com serviço NTP e para o samba se comunicar com chrony através do arquivo de socket:
echo "allow 10.10.20.0/24
allow 127.0.0.1
ntpsigndsocket /opt/samba/var/lib/ntp_signd" > /etc/chrony.conf.d/samba.confSubstitua o endereço de rede 10.10.20/24 pelo endereço IP da rede do servidor que está instalando o samba.
Altere as permissões do diretório que armazena o arquivo de socket do samba para o chrony ter acesso:
chown root:chrony /opt/samba/var/lib/ntp_signd/
chmod 750 /opt/samba/var/lib/ntp_signd/Inicie o serviço chrony:
systemctl start chronyd.serviceAjustes finais após configurar samba active directory no almalinux
Após instalar e configurar samba ad dc no almalinux é necessário fazer alguns ajustes essenciais para o servidor funcionar sem problemas.
O Samba AD DC precisa resolver nomes do domínio para replicar o banco de dados do AD para outros servidores controladores de domínio, também para fins de autenticação e para outros serviços do AD funcionarem.
Por isso o sistema operacional deve usar o endereço IP do próprio servidor samba como servidor DNS que será consultado.
Configurando o novo endereço DNS usando pelo almalinux
O Almalinux usa o NeworkManager para gerenciar as configurações da placa de rede, para alterar o endereço DNS que o sistema vai usar, primeiro liste as conexões existentes:
nmcli con show
Na imagem acima o nome da conexão é enp0s3, para alterar a conexão execute o comando a seguir, substituindo a conexão enp0s3 pelo nome da conexão que apareceu no seu servidor:
nmcli con mod enp0s3 ipv4.dns 127.0.0.1O endereço DNS que o servidor vai consultar agora é o 127.0.0.1 que faz referência ao próprio servidor. Para efetivar as alterações reinicie o NetworkManager:
systemctl restart NetworkManager.serviceConfigurando um DNS Forwarder para o samba
O DNS interno do samba não resolve nomes para outros domínios, isso significa que os clientes não vão conseguir resolver nomes para outros domínios e consequentemente nem para internet.
Para contornar essa situação configure um encaminhador dns que o samba vai usar. Edite o arquivo de configuração smb.conf:
vim /opt/samba/etc/smb.confE adicione na seção global a configuração a seguir, substituindo 8.8.8.8 pelo endereço do servidor DNS que resolverá nomes de outros domínios:
dns forwarder = 8.8.8.8
Salve as alterações e em seguida reinicie o samba:
systemctl restart samba-ad-dc.serviceTópicos relacionados
Se está precisando configurar o samba como um AD DC em um servidor que tem instalado o Debian ou Rocky Linux, recomendo a leitura dos guias a seguir:
| Distros Linux | Guias Técnicos |
|---|---|
| Rocky Linux | Como configurar o Samba como um AD DC no Rocky Linux |
| Debian | Como configurar o Samba como um AD DC no Debian Linux |
Quer aprender a ingressar no domínio uma estação de trabalho linux ? Recomendo a leitura dos tutoriais da lista a seguir:
| Distros Linux | Tutoriais Completos |
|---|---|
| Ubuntu Linux | Ingressar no domínio AD máquina que tem ubuntu instalado |
| Linux Mint | Ingressar no domínio AD máquina que tem linux mint instalado |
Aprenda mais sobre samba active directory no linux
Acabou de configurar o samba AD DC e está precisando:
- Aprofundar seus conhecimentos no serviço samba e active directory ?
- Aprender como criar backups ou atualizá-lo ?
- Gerenciar o servidor e fazer tarefas administrativas ?
Fique tranquilo(a) pois com o curso servidor linux samba AD você vai aprender isso e muito mais.

E usando o cupom BLOGSAMBA10 você ganha 10% de desconto.
Conclusão
O samba é uma solução cada vez mais adotada pelas empresas e organizações do governo com a finalidade de diminuir os custos de licenciamento da microsoft que é muito caro.
Seguindo cuidadosamente o passo-a-passo do tutorial você conseguiu configurar samba active directory no almalinux e ter um servidor estável e atualizado por anos.
Ficou com alguma dúvida ou quer fazer alguma sugestão deixe seu comentário.

