LDAP/Migrando desde NIS
Esta página recoge mis notas sobre la migración desde un sistema NIS a un directorio LDAP.
Sumario
Esquemas
Los esquemas del directorio que empleo son:
Servidor LDAP
Creamos el directorio donde va a residir la base de datos con la siguiente secuencia:
# mkdir /var/lib/ldap/example.net # chown openldap.openldap /var/lib/ldap/example.net # chmod 0700 /var/lib/ldap/example.net
Directorio LDAP
Una vez inicializado el directorio le añadimos las entradas correspondientes al nivel superior en el que van a estar los diferentes grupos de información:
# Nodo raíz
dn: dc=example,dc=net
dc: example
objectClass: dcObject
objectClass: organizationalUnit
ou: example dot net
# Usuarios del sistema
dn: ou=People,dc=example,dc=net
objectClass: organizationalUnit
ou: People
# Grupos de usuarios
dn: ou=Group,dc=example,dc=net
objectClass: organizationalUnit
ou: Group
# Administradores
dn: ou=Admins,dc=example,dc=net
objectClass: organizationalUnit
ou: Admins
Insertamos directamente en el directorio sin pasar por el servidor LDAP:
# slapd -v -l top.ldif added: "dc=example,dc=net" (00000001) added: "ou=People,dc=example,dc=net" (00000002) added: "ou=Group,dc=example,dc=net" (00000003) added: "ou=Admins,dc=example,dc=net" (00000004)
Traspasando información
migrationtools
El paquete migrationtools ofrece un completo número de programas para extraer información de las bases de datos NIS y volcarlas en un formato digerible por LDAP como es LDIF.
Antes de usarlo es conveniente modificar la configuración en /etc/migrationtools/migrate_common.ph
para indicar que los programas excluyan o no las cuentas de sistema, usar o no UTF-8 y definir la raíz de acceso al directorio.
# Dominio DNS predeterminado
$DEFAULT_MAIL_DOMAIN = "example.net";
# Base del directorio
$DEFAULT_BASE = "dc=example,dc=net";
# Usar codificación UTF
$USE_UTF8 = 1;
# Excluir usuarios y grupos del sistema
$IGNORE_UID_BELOW = 1000;
$IGNORE_GID_BELOW = 100;
Para usar cualquiera de los programas de migración es necesario cambiar primero al directorio raíz de los mismos /usr/share/migrationtools/
y llamarlo desde allí con uno o dos parámetros. El primer parámetro es el archivo origen de los datos y el segundo el archivo destino que puede obviarse si se emplea alguno de los programas con el sufijo _online, puesto que en este caso intentarán emplear el programa ldapadd para exportar las nuevas entradas directamente al servidor LDAP en funcionamiento.
Cuentas de usuario
$ cd /usr/share/migrationtools $ ./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif $ ldapmodify -D "cn=admin,dc=example,dc=net" -W -x -a -f /tmp/passwd.ldif Enter LDAP Password: $ rm /tmp/passwd.ldif
Grupos de usuarios
$ cd /usr/share/migrationtools $ ./migrate_group.pl /etc/group /tmp/group.ldif $ ldapmodify -D "cn=admin,dc=example,dc=net" -W -x -a -f /tmp/group.ldif Enter LDAP Password: $ rm /tmp/group.ldif
Sustitución
Teniendo en cuenta que la distribución es Debian rama Squeeze y que el sistema estaba un poco retocado por varios años de uso el proceso ha sido muy sencillo. Los pasos que he seguido -grosso modo- son:
- Eliminación del paquete nis
- Revisión de archivos de contraseñas y grupos (
/etc/passwd, /etc/shadow, /etc/group
) para eliminar el característico registro vacío al final de los mismos. - Instalación de libpam-ldap y libnss-ldapd con las consiguientes dependencias arrastradas.
No ha hecho falta más que rellenar correctamente los parámetros que el instalador pide para cada uno de los paquetes y el sistema estaba listo y respondía rápidamente a las consultas.