Samba Installation · 8 min read · Dec 09, 2025
Instalación del Controlador de Dominio Samba 4 en CentOS 7
A partir de la versión 4.0, Samba puede funcionar como un controlador de dominio (DC) de Active Directory (AD). En este tutorial, te mostraré cómo configurar Samba 4 como un controlador de dominio con clientes de Windows 10, CentOS 7 y CentOS 6.
En este tutorial, compilaré Samba 4 desde el código fuente. Si estás buscando una instalación basada en RPM de Samba 4 y configuración de SELinux para Samba 4, consulta mi nuevo tutorial de Samba 4 aquí.
Utilizaré 3 sistemas, un servidor CentOS 7 y un cliente de Windows 10 para la gestión remota, un cliente CentOS 7 y un cliente CentOS 6.
- 192.168.1.190 Samba4 AD centos7
- 192.168.1.191 gestión remota win 10
- 192.168.1.22 - cliente Autenticación - centos 7
- 192.168.1.192 - cliente Autenticación - centos 6
Instalación de Samba 4
192.168.1.190 Samba4 AD centos 7
La base es un CentOS 7 con una instalación mínima y SELinux deshabilitado.
[root@samba4 ~]# sestatus
Estado de SELinux: deshabilitado
[root@samba4 ~]#
Haz una entrada en el archivo /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 ~]#
Instala el repositorio epel.
[root@samba4 ~]# yum install epel-release -yInstala todos los paquetes necesarios para compilar 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 -yAhora descarga el paquete samba4. Uso samba-4.6.0 que es el último durante esta configuración.
[root@samba4 ~]# wget https://download.samba.org/pub/samba/stable/samba-4.6.0.tar.gzAhora instalemos 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
La instalación tomará alrededor de 10 minutos dependiendo de la velocidad del sistema.
Ahora haremos la provisión del dominio.
[root@samba4 samba]# samba-tool domain provision --use-rfc2307 --interactive
Realm [SUNIL.CC]:
Dominio [SUNIL]:
Rol del servidor (dc, member, standalone) [dc]: dc
Backend DNS (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
Dirección IP del reenvío DNS (escribe 'none' para deshabilitar el reenvío) [4.2.2.1]:
Contraseña de administrador:
Vuelve a escribir la contraseña:
Buscando direcciones IPv4
Buscando direcciones IPv6
No se asignará ninguna dirección IPv6
Configurando share.ldb
Configurando secrets.ldb
Configurando el registro
Configurando la base de datos de privilegios
Configurando la base de datos idmap
Configurando la base de datos SAM
Configurando particiones y configuraciones de sam.ldb
Configurando sam.ldb rootDSE
Pre-cargando el esquema de Samba 4 y AD
Agregando DomainDN: DC=sunil,DC=cc
Agregando contenedor de configuración
Configurando esquema de sam.ldb
Configurando datos de configuración de sam.ldb
Configurando especificadores de visualización
Modificando especificadores de visualización
Agregando contenedor de usuarios
Modificando contenedor de usuarios
Agregando contenedor de computadoras
Modificando contenedor de computadoras
Configurando datos de sam.ldb
Configurando principales de seguridad bien conocidos
Configurando usuarios y grupos de sam.ldb
ERROR(ldb): excepción no capturada - error de operaciones en ../source4/dsdb/samdb/ldb_modules/password_hash.c:2820
Archivo "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", línea 176, en _run
return self.run(*args, **kwargs)
Archivo "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", línea 471, en run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
Archivo "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", línea 2175, en provision
skip_sysvolacl=skip_sysvolacl)
Archivo "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", línea 1787, en provision_fill
next_rid=next_rid, dc_rid=dc_rid)
Archivo "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", línea 1447, en fill_samdb
"KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))
Archivo "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", línea 55, en setup_add_ldif
ldb.add_ldif(data, controls)
Archivo "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", línea 225, en add_ldif
self.add(msg, controls)
[root@samba4 samba]#Habrá algunos errores cuando hagamos la provisión del dominio.
Para solucionarlos, comenta la siguiente línea en /etc/krb5.conf.
--------
#includedir /etc/krb5.conf.d/
--------Ejecuta la provisión del dominio nuevamente y ahora el dominio se creará sin errores.
[root@samba4 etc]# samba-tool domain provision --use-rfc2307 --interactive
Realm [SUNIL.CC]:
Dominio [SUNIL]:
Rol del servidor (dc, member, standalone) [dc]:
Backend DNS (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
Dirección IP del reenvío DNS (escribe 'none' para deshabilitar el reenvío) [4.2.2.1]:
Contraseña de administrador:
Vuelve a escribir la contraseña:
Buscando direcciones IPv4
Buscando direcciones IPv6
No se asignará ninguna dirección IPv6
Configurando secrets.ldb
Configurando el registro
Configurando la base de datos de privilegios
Configurando la base de datos idmap
Configurando la base de datos SAM
Configurando particiones y configuraciones de sam.ldb
Configurando sam.ldb rootDSE
Pre-cargando el esquema de Samba 4 y AD
Agregando DomainDN: DC=sunil,DC=cc
Agregando contenedor de configuración
Configurando esquema de sam.ldb
Configurando datos de configuración de sam.ldb
Configurando especificadores de visualización
Modificando especificadores de visualización
Agregando contenedor de usuarios
Modificando contenedor de usuarios
Agregando contenedor de computadoras
Modificando contenedor de computadoras
Configurando datos de sam.ldb
Configurando principales de seguridad bien conocidos
Configurando usuarios y grupos de sam.ldb
Configurando auto-unión
Agregando cuentas DNS
Creando CN=MicrosoftDNS,CN=System,DC=sunil,DC=cc
Creando particiones DomainDnsZones y ForestDnsZones
Población de particiones DomainDnsZones y ForestDnsZones
Configurando sam.ldb rootDSE marcando como sincronizado
Corrigiendo GUIDs de provisión
Se ha generado una configuración de Kerberos adecuada para Samba AD en /usr/local/samba/private/krb5.conf
Configurando ajustes de servidor yp falso
Una vez que los archivos anteriores estén instalados, tu servidor Samba4 estará listo para usar
Rol del servidor: controlador de dominio de Active Directory
Nombre del host: samba4
Dominio NetBIOS: SUNIL
Dominio DNS: sunil.cc
DOMAIN SID: S-1-5-21-2936486394-2075362935-551615353
[root@samba4 etc]#
Asegúrate de que los puertos estén abiertos en el 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
Crea un script de inicio para iniciar automáticamente el servicio durante el reinicio.
[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
Se creó un enlace simbólico desde /etc/systemd/system/multi-user.target.wants/samba.service a /etc/systemd/system/samba.service.
[root@samba4 ~]# systemctl start samba
Agregando el host de Windows al dominio
192.168.1.191 gestión remota win 10
Asegúrate de que el host esté agregado con una dirección IP estática.

Agregando el host al dominio.




Para gestionar Samba4 desde Windows, necesitamos tener instaladas las Herramientas de Servidor Remoto de Microsoft (RSAT).
La página de wiki tiene los enlaces https://wiki.samba.org/index.php/Installing_RSAT
Instalando la herramienta RSAT en Windows 10
Ejecuta el instalador.




Después de reiniciar, ve a ejecutar y escribe dsa.msc

Haz clic en el dominio sunil.cc y haz clic derecho en nuevo -> Usuarios.

Creando un usuario de prueba.


Autenticación del cliente con Samba 4 en CentOS 7
192.168.1.22 - cliente Autenticación en CentOS 7
Instalación de paquetes:
[root@centos7 ~]# yum -y install realmd sssd oddjob oddjob-mkhomedir adcli samba-commonVerifica la conectividad con samba4:
[root@centos7 ~]# realm discover SUNIL.CC
sunil.cc
tipo: kerberos
nombre del reino: SUNIL.CC
nombre del dominio: sunil.cc
configurado: kerberos-member
software del servidor: active-directory
software del cliente: sssd
paquete requerido: oddjob
paquete requerido: oddjob-mkhomedir
paquete requerido: sssd
paquete requerido: adcli
paquete requerido: samba-common-tools
formatos de inicio de sesión: %U
política de inicio de sesión: allow-realm-logins
[root@centos7 ~]#
Uniéndonos al dominio.
[root@centos7 ~]# realm join SUNIL.CC
Contraseña para Administrator:
[root@centos7 ~]#
Verifica si podemos obtener el usuario de samba4.
[root@centos7 ~]# id SUNIL\testuser
uid=1570001104([email protected]) gid=1570000513(domain [email protected]) groups=1570000513(domain [email protected])
[root@centos7 ~]#
Configura 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 ~]#
Reinicia sssd.
[root@centos7 ~]# systemctl restart sssd
[root@centos7 ~]# systemctl enable sssd
Verifica el usuario.
[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 obtener el usuario sin el nombre de dominio.
[root@centos7 ~]# vim /etc/sssd/sssd.conf
-----------
------------
use_fully_qualified_names = False
-----------
-----------
Reinicia sssd y verifica el 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 ~]#
Autenticación del cliente con Samba 4 en CentOS 6
192.168.1.192 - cliente Autenticación en CentOS 6.
Instalación de paquetes.
[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
Cambia el archivo de configuración de 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 el comando adcli para unirnos al dominio.
[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
Contraseña para [email protected]:
[root@centos6 db]#
Asegúrate de que se haya creado el ticket de kerberos.
[root@centos6 db]# klist -ke
Configura la autenticación.
[root@centos6 db]# authconfig --enablesssd --enablesssdauth --enablemkhomedir --update
Modifica la configuración de sssd ahora para hacer la autenticación.
[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
# Descomentar si el descubrimiento del servicio no está funcionando
# ad_server = server.win.example.com
default_shell = /bin/bash
fallback_homedir = /home/%u
[root@centos6 db]#
Reinicia el servicio sssd.
[root@centos6 db]# chkconfig sssd on
[root@centos6 db]# service sssd restart
Deteniendo sssd: [ OK ]
Iniciando sssd: [ OK ]
[root@centos6 db]#
Validando usuario.
[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]#
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.