Samba LDAP · 2 min read · Dec 11, 2025

Controlador de Dominio Samba CentOS 5.x Con Backend LDAP

Controlador de Dominio Samba CentOS 5.x Con Backend LDAP

Esto te mostrará cómo configurar un Controlador de Dominio Samba con un backend LDAP local, utilizando CentOS 5.x (probado en 5.3, aún funcionando con éxito en 5.4). Incluye una interfaz web para gestionar usuarios/grupos/etc. de LDAP.

Enero 2010 – Ahora con soporte para inicios de sesión de dominio de Windows 7 (ver el final de la guía).

Desactivar selinux:

Solo causará problemas, no voy a jugar con SELinux en esta guía aparte de desactivarlo.

echo 0 >/selinux/enforce

Dentro de /etc/sysconfig/selinux, establece:

SELINUX=disabled

Instalar algunas herramientas

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm  
yum update  
yum install openldap-servers nss_ldap samba httpd openssl mod_ssl mysql mysql-server php php-xml php-ldap php-mysql php-pdo php-cli php-common smbldap-tools

Instalar smbldap-tools de esta manera debería instalar todos los módulos perl dependientes, sin embargo, la versión disponible en yum tiene algunos errores, así que actualizaremos a la última versión después, manteniendo las dependencias, pero sobrescribiendo el paquete smbldap-tools:

rpm -Uvh http://download.gna.org/smbldap-tools/packages/smbldap-tools-0.9.5-1.noarch.rpm

Configurar el nombre del host

Para nuestros propósitos en esta guía, estamos llamando al nombre del host del servidor “dc1” y al dominio “DOMAINNAME”. Nota: Si deseas usar tu fqdn para tu dominio Samba, dondequiera que veas,dc=DOMAINNAME a continuación, reemplázalo con,dc=example,dc=com, asumiendo que tu fqdn es example.com. También ten en cuenta que “root” será el nombre de usuario administrador de samba, si no te gusta eso, cámbialo también. Las líneas relacionadas son: cn=root y cn: root

Dentro de /etc/hosts, agrega o reemplaza tu línea (siguiendo el formato del archivo, asumiendo que 192.168.0.5 es la IP accesible en red de tu servidor):

192.168.0.5 dc1.DOMAINNAME dc1

Establece tu nombre de host en la línea de comandos:

hostname dc1.DOMAINNAME

Generar una contraseña maestra y configurar ldap

slappasswd

Nota la salida de slappasswd, la insertarás en slapd.conf en un minuto.

mv -f /etc/openldap/slapd.conf /etc/openldap/slapd.conf.dist

Inserta el siguiente texto en /etc/openldap/slapd.conf:

include /etc/openldap/schema/core.schema  
include /etc/openldap/schema/cosine.schema  
include /etc/openldap/schema/inetorgperson.schema  
include /etc/openldap/schema/nis.schema  
include /etc/openldap/schema/samba.schema  
  
allow bind_v2  
pidfile /var/run/openldap/slapd.pid  
argsfile /var/run/openldap/slapd.args  
  
database bdb  
suffix "dc=DOMAINNAME"  
rootdn "cn=root,dc=DOMAINNAME"  
rootpw {SSHA}TTzshhAbmZPPb8F2s7sgf9B+IrZt+nUD  
password-hash {SSHA}  
directory /var/lib/ldap  
  
index cn,sn,uid,displayName pres,sub,eq  
index uidNumber,gidNumber eq  
index sambaSID eq  
index sambaPrimaryGroupSID eq  
index sambaDomainName eq  
index objectClass pres,eq  
index default sub

Nota la línea rootpw en el texto anterior, ahí es donde pegas tu salida de slappasswd.

cp /usr/share/doc/samba-3.*/LDAP/samba.schema /etc/openldap/schema/  
cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG  
chown ldap:ldap /var/lib/ldap/DB_CONFIG  
chmod 600 /var/lib/ldap/DB_CONFIG

Inserta el siguiente texto en /etc/openldap/init.ldif:

dn: dc=DOMAINNAME
objectclass: dcObject
objectclass: organization
o: CentOS Directory Server
dc: DOMAINNAME
dn: cn=root,dc=DOMAINNAME
objectclass: organizationalRole
cn: root
slapadd -l /etc/openldap/init.ldif  
chown -R ldap:ldap /var/lib/ldap  
chmod 600 /var/lib/ldap/*  
slapcat

slapcat debería producir algo muy similar a la siguiente salida:

dn: dc=DOMAINNAME
objectClass: dcObject
objectClass: organization
o: CentOS Directory Server
dc: DOMAINNAME
structuralObjectClass: organization
entryUUID: 717d1b1e-ce90-102d-88c3-df22563ebfee
creatorsName: cn=root,dc=DOMAINNAME
modifiersName: cn=root,dc=DOMAINNAME
createTimestamp: 20090506134920Z
modifyTimestamp: 20090506134920Z
entryCSN: 20090506134920Z#000000#00#000000
dn: cn=root,dc=DOMAINNAME
objectClass: organizationalRole
cn: root
structuralObjectClass: organizationalRole
entryUUID: 71858556-ce90-102d-88c4-df22563ebfee
creatorsName: cn=root,dc=DOMAINNAME
modifiersName: cn=root,dc=DOMAINNAME
createTimestamp: 20090506134920Z
modifyTimestamp: 20090506134920Z
entryCSN: 20090506134920Z#000001#00#000000
service ldap start  
chkconfig ldap on  
ldapsearch -x -b "dc=DOMAINNAME"

La salida de ldapsearch debería ser muy similar a la siguiente:

# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# DOMAINNAME
dn: dc=DOMAINNAME
objectClass: dcObject
objectClass: organization
o: CentOS Directory Server
dc: DOMAINNAME
# root, DOMAINNAME
dn: cn=root,dc=DOMAINNAME
objectClass: organizationalRole
cn: root
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.