Cada elemento del árbol ldap tiene sus propiedades y una serie de valores asociados a las propiedades. Además estas propiedades son extensibles, es decir podemos agregar nuevas propiedades al servidor LDAP para adecuarse a nuestras necesidades. A estos conjuntos de propiedades los vamos a llamar esquema. En nuestro caso, además de los esquemas predeterminados, vamos a necesitar que el servidor LDAP almacene cuentas Samba, por lo que tendremos que asegurarnos que LDAP conoce la estructura y los datos necesarios de una cuenta Samba mediante la inclusión del correspondiente fichero de esquema. En el fichero /etc/openldap/spald.conf deberemos tener algo similar a:
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
|
Después tendremso que configurar algunos parámetros adicionales. Por ejemplo "database ldbm" indica el tipo de almacenamiento en disco de la base de datos y "directory /var/lib/ldap" el directorio donde guardar los datos en disco.
El parámetro suffix define la raíz del árbol LDAP, rootdn indica la identidad del administrador LDAP y rootpw su contraseña. Esta contraseña puede estar en texto simple o cifrada. Si queremos cifrarla usamos la orden "slappassw" para obtener el valor cifrado:
slappasswd
New password: (introducimos clave)
Re-enter new password: (introducimos clave)
{SSHA}fE+wFAPFPDxb2SMrTPh3+uBRuDKyropX
|
Poniendo todo esto junto, añadiríamos lo siquiente al fichero:
database ldbm
suffix "dc=bezmi,dc=es"
rootdn "cn=root,dc=bezmi,dc=es"
# rootpw clave
rootpw {SSHA}fE+wFAPFPDxb2SMrTPh3+uBRuDKyropX
directory /var/lib/ldap
|
Lo siguiente que le tenemos que decir es como tiene que interpretar los datos buscados, si exije una coincidencia exacta o parcial.
# Indices to maintain
index objectClass eq
index cn pres,sub,eq
index sn pres,sub,eq
index uid pres,sub,eq
index displayName pres,sub,eq
index uidNumber eq
index gidNumber eq
index memberUID eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index default sub
|
Ahora tenemos que definir los permisos de acceso al árbol LDAP. Si queremos usarlo como base de validación de usuarios tenemos que asegurarnos que la información necesaria está accesible para un usuario que aun no se ha validado.
access to dn=".*,dc=bezmi,dc=es" attr=userPassword,SambalmPassword,SambantPassword
by dn="cn=root,dc=bezmi,dc=es" write
by dn="cn=proxyuser,dc=bezmi,dc=es" read
by self write
by anonymous auth
by * auth
access to dn=".*,ou=People,dc=bezmi,dc=es"
by * read
access to dn=".*,dc=bezmi,dc=es"
by self write
by * read
|
Se pueden agregar todos los controles de acceso necesarios teniendo en cuenta que se aplican en el mismo orden en que se definen.
Ahora, una vez terminado el fichero procedemos a lanzar el servidor ldap y compriobar que funciona correctamente:
Ejecutamos
/etc/init.d/ldap restart
|
o el equivalente de la instalación elegida para iniciar el servidor ldap.
Ejecutamos:
ps axu|grep slapd
ldap 11101 0.0 0.4 30124 4700 ? S 01:40 0:00 /usr/sbin/slapd -u ldap -h ldap:///
|
y observamos como tenemos el proceso slapd en ejecución.
Vemos como en las listas de control de acceso habíamos definido una entrada para "proxyuser". Este usuario es el que se va a aplicar a las consultas que no especifiquen una validación concreta.
Para añadir este usuario, en primer lugar creamos un fichero llamado proxyuser.ldif con el siguiente contenido:
dn: cn=proxyuser,dc=bezmi,dc=es
cn: proxyuser
sn: proxyuser
objectclass: top
objectclass: person
userPassword: {SSHA}Kwk/0DzXPIh0LUtypcSf8du3v0DcVnZo
|
Ahora agregamos estos datos al árbol ldap:
ldapadd -x -D "cn=root,dc=bezmi,dc=es" -W -f proxyuser.ldif
|