2 votos

Dado el mismo servidor LDAP remoto, ¿por qué la Utilidad de Directorios funciona en una máquina pero no en la otra?

Tengo un servidor LDAP (OpenLDAP) que se ejecuta en Ubuntu 20.04 y que utilizo para la autenticación de usuarios en mi red, que consta de servidores Linux y clientes MacOS 11. En mi escritorio, que ejecuta MacOS 11.1, puedo utilizar Directory Utility para acceder a la base de datos LDAP sin problemas.

Tengo un MacMini que actualicé la semana pasada a MacOS 11.2. Cuando intento utilizar Directory Utility en esa máquina, obtengo el error "Connection failed to the directory server (2100)" en cuanto selecciono el servidor LDAP (como "/LDAPv3/ nombre del servidor ") y antes de cualquier solicitud de nombre de usuario y contraseña.

Existe un problema conocido con el inicio de sesión en servidores LDAP remotos que puede resolverse ejecutando el siguiente script:

#! /bin/bash

for f in /Library/Preferences/OpenDirectory/Configurations/LDAPv3/*
do
  LDAP_SERVER=`/usr/bin/basename $f ".plist"`
  echo $LDAP_SERVER

  SASL_MECHANISMS="`/usr/bin/ldapsearch -x -h $LDAP_SERVER -b '' -s base -LLL "(objectclass=*)" supportedSASLMechanisms | awk '{if($2 != "") printf "%s ",$2}'`"
  echo "  $SASL_MECHANISMS"

  /usr/bin/odutil set configuration /LDAPv3/$LDAP_SERVER  module ldap option "Denied SASL Methods" $SASL_MECHANISMS

done

He ejecutado esto tanto en el escritorio como en el MacMini. Así que parece que tengo un problema diferente.

He mirado el archivo de registro del servidor LDAP para ver qué pasaba cuando seleccionaba /LDAPv3/servername y obtuve lo siguiente:

Feb  7 01:42:17 s-tow-00 slapd[65708]: conn=1266 fd=16 ACCEPT from IP=192.168.1.32:54621 (IP=0.0.0.0:389)
Feb  7 01:42:17 s-tow-00 slapd[65708]: conn=1266 fd=16 closed (connection lost)

Feb  7 01:42:28 s-tow-00 slapd[65708]: conn=1267 fd=16 ACCEPT from IP=192.168.2.127:65230 (IP=0.0.0.0:389)
Feb  7 01:42:28 s-tow-00 slapd[65708]: conn=1267 fd=16 closed (connection lost)
Feb  7 01:42:28 s-tow-00 slapd[65708]: conn=1268 fd=16 ACCEPT from IP=192.168.2.127:65231 (IP=0.0.0.0:389)
Feb  7 01:42:28 s-tow-00 slapd[65708]: conn=1268 op=0 SRCH base="" scope=0 deref=0 filter="(objectClass=*)"
Feb  7 01:42:28 s-tow-00 slapd[65708]: conn=1268 op=0 SRCH attr=supportedSASLMechanisms defaultNamingContext namingContexts schemaNamingContext saslRealm
Feb  7 01:42:28 s-tow-00 slapd[65708]: conn=1268 op=0 ENTRY dn=""
Feb  7 01:42:28 s-tow-00 slapd[65708]: conn=1268 op=0 SEARCH RESULT tag=101 err=0 nentries=1 text=

El MacMini ( conn=1266 , IP=192.168.1.32 ) vuelve inmediatamente, mientras que el escritorio ( 1267 , 1268 , 192.168.2.127 ) procede a iniciar una consulta.

He mirado los archivos en /Library/Preferences/OpenDirectory/Configurations/LDAPv3 en ambas máquinas para ver si había alguna diferencia. Ambos contienen entradas para mis servidores LDAP (llamémoslos servidor1 y servidor2 ). En el escritorio, sus permisos eran 0644, mientras que en el MacMini eran 0600. No puedo cambiar los permisos con chmod (gracias, SIP), así que empecé Directory Utility con sudo Pero el problema persiste, así que concluyo que no tiene nada que ver con los permisos.

Luego experimenté con dscl en modo interactivo. En el escritorio obtuve lo siguiente:

> ls /LDAPv3/server1
Automount
AutomountMap
CertificateAuthorities
Groups
Mounts
OrganizationalUnit
People
Users

mientras que todo lo que el MacMini podía hacer era

> ls /LDAPv3/server1
ls: Invalid Path
<dscl_cmd> DS Error: -14009 (eDSUnknownNodeName)

Estoy un poco perdido para saber cómo proceder. He pensado en exportar la configuración desde el escritorio utilizando Directory Utility 'Write to Server' y luego importarlo en el MacMini, pero me sale "Operation is not supported by the directory node.", lo que supongo que significa que he configurado algo incorrectamente. I puede "Guardar plantilla...", pero el directorio que me dijeron que estaba destinado a las plantillas ( ~/Library/Application Support/Directory Access/LDAPv3/Templates ) se ignora obstinadamente en el MacMini.

¿Alguien tiene alguna sugerencia, por favor, sobre cómo proceder?

Steve

2voto

tomasr Puntos 9990

Aprendí lo siguiente mientras arreglaba este problema. Tal vez ayude a alguien más en el futuro.

Un cliente LDAP de MacOS configurado con Directory Utility almacena los datos de configuración de los servidores LDAP que conoce en /Library/Preferences/OpenDirectory/Configurations/LDAPv3 en las listas denominadas <servername>.plist . Estos archivos se pueden manipular con odutil (ver man odutil ).

Directory Utility se puede utilizar para cargar esos plists desde el sistema de archivos local o desde el propio servidor LDAP.

Para acceder al plist desde el sistema de archivos local, cópielo en ~/Library/Application Support/Directory Access/LDAPv3/Templates y asegúrese de que se llama <anything>.plist (es decir, debe tener el tipo de archivo .plist ). Una vez hecho esto, si se editan los datos del servidor en Directory Utility en la pestaña 'Search & Mappings', en el desplegable etiquetado como 'Access this LDAPv3 server using' verá el texto '<anything>' del nombre de archivo del plist. Si selecciona esto, la configuración de su plist se aplicará al cliente.

Del mismo modo, es posible crear una entrada en el propio servidor LDAP que contenga exactamente el mismo texto y utilizarla en su lugar. Lo siguiente muestra lo que veo en ldapvi cuando miro la entrada que he creado:

13 ou=macosxodconfig,<local RDN>,<LDAP base DN>
objectClass: top
objectClass: organizationalUnit
ou: macosxodconfig
description:; <?xml version="1.0" encoding="UTF-8"?>\
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\
<plist version="1.0">\
<dict>\
    ...the rest of the plist comes here ...
</dict>\
</plist>

Nota: todo, desde el ";" hasta el final de la definición, es el contenido de nuestro plist - sin los "\", que son un artefacto de ldapvi . La forma de introducir el plist en tu servidor depende de ti: Yo uso Apache Directory Studio . La única restricción aparente es que la entrada debe ser una organizationalUnit llamado ou=macosxodconfig . Una vez hecho esto, si se editan los datos del servidor en Directory Utility en la pestaña "Search & Mappings", en el desplegable "Access this LDAPv3 server using" verá la opción "From Server". Si seleccionas esta opción, se te pedirá una base de búsqueda (sugiero que elijas '<RDN local>,<DN base LDAP>', sustituyendo lo que está entre corchetes por algo que tenga sentido en tu contexto. La configuración de su plist se aplicará entonces a su cliente.

Por si acaso lo has olvidado, tienes que decirle a MacOS que estás usando un servidor LDAP. Esto se hace en System Preferences -> 'Usuarios y grupos' -> 'Opciones de inicio de sesión': a la derecha verá la etiqueta 'Servidor de cuentas de red' con un botón 'Editar...' al lado. Autentícate haciendo clic en el candado de la parte inferior de la ventana, haz clic en el botón 'Editar...' y añade tu(s) servidor(es) a la lista.

También es posible que tenga que volver a Directory Utility y añada su(s) servidor(es) LDAP a su "Política de búsqueda" (pestaña de la ventana de inicio).

Steve

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X