Samba Installation · 7 min read · Dec 09, 2025
Instalação do Controlador de Domínio Samba 4 no CentOS 7
A partir da versão 4.0, o Samba é capaz de funcionar como um controlador de domínio (DC) do Active Directory (AD). Neste tutorial, eu vou mostrar como configurar o Samba 4 como um controlador de domínio com clientes Windows 10, CentOS 7 e CentOS 6.
Neste tutorial, eu vou compilar o Samba 4 a partir do código-fonte. Se você está buscando uma instalação baseada em RPM do Samba 4 e configuração do SELinux para o Samba 4, por favor, veja meu novo tutorial do Samba 4 aqui.
Eu vou usar 3 Sistemas, um servidor CentOS 7 e um cliente Windows 10 para gerenciamento remoto, um cliente CentOS 7 e um cliente CentOS 6.
- 192.168.1.190 Samba4 AD centos7
- 192.168.1.191 gerenciamento remoto win 10
- 192.168.1.22 - cliente Autenticação - centos 7
- 192.168.1.192 - cliente Autenticação - centos 6
Instalação do Samba 4
192.168.1.190 Samba4 AD centos 7
A base é um CentOS 7 com uma instalação mínima e SELinux desativado.
[root@samba4 ~]# sestatus
SELinux status: disabled
[root@samba4 ~]#
Faça uma entrada no arquivo /etc/hosts.
[root@samba4 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.190 samba4.sunil.cc samba4
[root@samba4 ~]#
Instale o repositório epel.
[root@samba4 ~]# yum install epel-release -yInstale todos os pacotes necessários para compilar o samba4.
[root@samba4 ~]# yum install perl gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins\
policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel\
cyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel pam-devel bzip2 vim wget -yAgora baixe o pacote samba4. Eu uso samba-4.6.0 que é o mais recente durante esta configuração.
[root@samba4 ~]# wget https://download.samba.org/pub/samba/stable/samba-4.6.0.tar.gzAgora vamos instalar o samba4.
[root@samba4 ~]# tar -zxvf samba-4.6.0.tar.gz
[root@samba4 ~]# cd samba-4.6.0
[root@samba4 samba-4.6.0]# ./configure --enable-debug --enable-selftest --with-ads --with-systemd --with-winbind
[root@samba4 samba-4.6.0]# make && make install
A instalação levará cerca de 10 minutos, dependendo da velocidade do sistema.
Agora faremos o provisionamento do domínio.
[root@samba4 samba]# samba-tool domain provision --use-rfc2307 --interactive
Realm [SUNIL.CC]:
Domain [SUNIL]:
Server Role (dc, member, standalone) [dc]: dc
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [4.2.2.1]:
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=sunil,DC=cc
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2820
File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", line 176, in _run
return self.run(*args, **kwargs)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 471, in run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2175, in provision
skip_sysvolacl=skip_sysvolacl)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1787, in provision_fill
next_rid=next_rid, dc_rid=dc_rid)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1447, in fill_samdb
"KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", line 55, in setup_add_ldif
ldb.add_ldif(data, controls)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", line 225, in add_ldif
self.add(msg, controls)
[root@samba4 samba]#Haverá alguns erros quando fizermos o provisionamento do domínio.
Para corrigi-los, por favor, comente a linha abaixo em /etc/krb5.conf.
--------
#includedir /etc/krb5.conf.d/
--------Execute o provisionamento do domínio novamente e agora o domínio será criado sem erros.
[root@samba4 etc]# samba-tool domain provision --use-rfc2307 --interactive
Realm [SUNIL.CC]:
Domain [SUNIL]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [4.2.2.1]:
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=sunil,DC=cc
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=sunil,DC=cc
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba AD has been generated at /usr/local/samba/private/krb5.conf
Setting up fake yp server settings
Uma vez que os arquivos acima estejam instalados, seu servidor Samba4 estará pronto para uso
Server Role: active directory domain controller
Hostname: samba4
NetBIOS Domain: SUNIL
DNS Domain: sunil.cc
DOMAIN SID: S-1-5-21-2936486394-2075362935-551615353
[root@samba4 etc]#
Certifique-se de que as portas estejam abertas no firewall.
[root@samba4 etc]#firewall-cmd --add-port=53/tcp --permanent;firewall-cmd --add-port=53/udp --permanent;firewall-cmd --add-port=88/tcp --permanent;firewall-cmd --add-port=88/udp --permanent;
firewall-cmd --add-port=135/tcp --permanent;firewall-cmd --add-port=137-138/udp --permanent;firewall-cmd --add-port=139/tcp --permanent;
firewall-cmd --add-port=389/tcp --permanent;firewall-cmd --add-port=389/udp --permanent;firewall-cmd --add-port=445/tcp --permanent;
firewall-cmd --add-port=464/tcp --permanent;firewall-cmd --add-port=464/udp --permanent;firewall-cmd --add-port=636/tcp --permanent;
firewall-cmd --add-port=1024-5000/tcp --permanent;firewall-cmd --add-port=3268-3269/tcp --permanent
[root@samba4 ~]# firewall-cmd --reload
Crie um script de inicialização para iniciar automaticamente o serviço durante a reinicialização.
[root@samba4 ~]# cat /etc/systemd/system/samba.service
[Unit]
Description= Samba 4 Active Directory
After=syslog.target
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/samba/var/run/samba.pid
ExecStart=/usr/local/samba/sbin/samba
[Install]
WantedBy=multi-user.target
[root@samba4 ~]#
[root@samba4 ~]# systemctl enable samba
Created symlink from /etc/systemd/system/multi-user.target.wants/samba.service to /etc/systemd/system/samba.service.
[root@samba4 ~]# systemctl start samba
Adicionando o host Windows ao domínio
192.168.1.191 gerenciamento remoto win 10
Certifique-se de que o host esteja adicionado com um endereço IP estático.

Adicionando o host ao domínio.




Para gerenciar o Samba4 a partir do Windows, precisamos ter as Ferramentas de Servidor Remoto da Microsoft (RSAT) instaladas.
A página da wiki tem os links https://wiki.samba.org/index.php/Installing_RSAT
Instalando a ferramenta RSAT no Windows 10
Execute o instalador.




Após reiniciar, vá para executar e digite dsa.msc

Clique no domínio sunil.cc e clique com o botão direito em novo -> Usuários.

Criando um usuário de teste.


Autenticação do cliente com Samba 4 no CentOS 7
192.168.1.22 - cliente Autenticação no CentOS 7
Instalação de pacotes:
[root@centos7 ~]# yum -y install realmd sssd oddjob oddjob-mkhomedir adcli samba-commonVerifique a conectividade com samba4:
[root@centos7 ~]# realm discover SUNIL.CC
sunil.cc
type: kerberos
realm-name: SUNIL.CC
domain-name: sunil.cc
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: oddjob
required-package: oddjob-mkhomedir
required-package: sssd
required-package: adcli
required-package: samba-common-tools
login-formats: %U
login-policy: allow-realm-logins
[root@centos7 ~]#
Entrando no domínio.
[root@centos7 ~]# realm join SUNIL.CC
Password for Administrator:
[root@centos7 ~]#
Verifique se conseguimos obter o usuário do samba4.
[root@centos7 ~]# id SUNIL\testuser
uid=1570001104([email protected]) gid=1570000513(domain [email protected]) groups=1570000513(domain [email protected])
[root@centos7 ~]#
Configure o sssd.
[root@centos7 ~]# cat /etc/sssd/sssd.conf
[sssd]
domains = sunil.cc
config_file_version = 2
services = nss, pam
[domain/sunil.cc]
ad_domain = sunil.cc
krb5_realm = SUNIL.CC
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad
[root@centos7 ~]#
Reinicie o sssd.
[root@centos7 ~]# systemctl restart sssd
[root@centos7 ~]# systemctl enable sssd
Verifique o usuário.
[root@centos7 ~]# id [email protected]
uid=1570001105([email protected]) gid=1570000513(domain [email protected]) groups=1570000513(domain [email protected]),1570000512(domain [email protected]),1570000572(denied rodc password replication [email protected])
[root@centos7 ~]#
Para obter o usuário sem o nome do domínio.
[root@centos7 ~]# vim /etc/sssd/sssd.conf
-----------
------------
use_fully_qualified_names = False
-----------
-----------
Reinicie o sssd e verifique o comando id.
[root@centos7 ~]# systemctl restart sssd
[root@centos7 ~]# id sambauser
uid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group)
[root@centos7 ~]#
Autenticação do cliente com Samba 4 no CentOS 6
192.168.1.192 - cliente Autenticação no CentOS 6.
Instalação de pacotes.
[root@centos6 db]# yum install pam pam_ldap pam_krb5 sssd sssd-ldap sssd-common authconfig oddjob oddjob-mkhomedir openldap openldap-clients krb5-workstation adcli -y
Altere o arquivo de configuração do kerberos.
[root@centos6 db]# cat /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = SUNIL.CC
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
SUNIL.CC = {
kdc = samba4.sunil.cc
admin_server = samba4.sunil.cc
}
[domain_realm]
.sunil.cc = SUNIL.CC
sunil.cc = SUNIL.CC
[root@centos6 db]#
Usaremos o comando adcli para entrar no domínio.
[root@centos6 db]# adcli info sunil.cc
[domain]
domain-name = sunil.cc
domain-short = SUNIL
domain-forest = sunil.cc
domain-controller = samba4.sunil.cc
domain-controller-site = Default-First-Site-Name
domain-controller-flags = pdc gc ldap ds kdc timeserv closest writable good-timeserv full-secret
domain-controller-usable = yes
domain-controllers = samba4.sunil.cc
[computer]
computer-site = Default-First-Site-Name
[root@centos6 db]#
[root@centos6 db]# adcli join sunil.cc
Password for [email protected]:
[root@centos6 db]#
Certifique-se de que o ticket kerberos foi criado.
[root@centos6 db]# klist -ke
Configure a autenticação.
[root@centos6 db]# authconfig --enablesssd --enablesssdauth --enablemkhomedir --update
Modifique a configuração do sssd agora para fazer a autenticação.
[root@centos6 db]# cat /etc/sssd/sssd.conf
[sssd]
services = nss, pam, ssh, autofs
config_file_version = 2
domains = sunil.cc
[domain/sunil.cc]
id_provider = ad
# Uncomment if service discovery is not working
# ad_server = server.win.example.com
default_shell = /bin/bash
fallback_homedir = /home/%u
[root@centos6 db]#
Reinicie o serviço sssd.
[root@centos6 db]# chkconfig sssd on
[root@centos6 db]# service sssd restart
Stopping sssd: [ OK ]
Starting sssd: [ OK ]
[root@centos6 db]#
Validando usuário.
[root@centos6 db]# id sambauser
uid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group)
[root@centos6 db]#
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.