2 votes

Avec le même serveur LDAP distant, pourquoi Directory Utility fonctionne-t-il sur une machine mais pas sur l'autre ?

J'ai un serveur LDAP (OpenLDAP) fonctionnant sous Ubuntu 20.04 que j'utilise pour l'authentification des utilisateurs dans mon réseau, qui se compose de serveurs Linux et de clients MacOS 11. Sur mon ordinateur de bureau, qui fonctionne sous MacOS 11.1, je peux utiliser les éléments suivants Directory Utility pour accéder à la base de données LDAP sans aucun problème.

J'ai un MacMini que j'ai mis à niveau la semaine dernière vers MacOS 11.2. Lorsque j'essaie d'utiliser Directory Utility sur cette machine, j'obtiens l'erreur "Connection failed to the directory server (2100)" dès que je sélectionne le serveur LDAP (comme "/LDAPv3/"). nom du serveur ") et avant toute demande de nom d'utilisateur et de mot de passe.

Il existe un problème connu de connexion à des serveurs LDAP distants qui peut être résolu en exécutant le script suivant :

#! /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

Je l'ai exécuté à la fois sur le bureau et sur le MacMini. Il semble donc que j'aie un problème différent.

J'ai regardé le fichier journal du serveur LDAP pour voir ce qui s'est passé lorsque j'ai sélectionné /LDAPv3/servername et j'ai obtenu ce qui suit :

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=

Le MacMini ( conn=1266 , IP=192.168.1.32 ) retourne immédiatement, alors que le bureau ( 1267 , 1268 , 192.168.2.127 ) procède à l'initiation d'une requête.

J'ai regardé les fichiers dans /Library/Preferences/OpenDirectory/Configurations/LDAPv3 sur les deux machines pour voir s'il y avait une différence. Les deux contiennent des entrées pour mes serveurs LDAP (appelons-les Serveur 1 y serveur2 ). Sur le bureau, leurs permissions étaient de 0644, alors que sur le MacMini elles étaient de 0600. Je ne peux pas modifier les permissions avec chmod (merci, SIP), donc j'ai commencé Directory Utility con sudo mais le problème persiste, j'en conclus donc que cela n'a rien à voir avec les autorisations.

J'ai ensuite expérimenté avec dscl en mode interactif. Sur le bureau, j'ai obtenu ce qui suit :

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

alors que tout ce que le MacMini pouvait faire était

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

Je suis un peu perdue et je ne sais pas comment procéder. J'ai pensé à exporter la configuration depuis le bureau à l'aide de la commande Directory Utility J'ai utilisé l'option "Write to Server" de la page d'accueil et je l'ai importé sur le MacMini, mais j'ai obtenu "Operation is not supported by the directory node", ce qui signifie que j'ai mal configuré quelque chose. I peut "Save Template...", mais le répertoire dont on m'a dit qu'il était destiné aux modèles ( ~/Library/Application Support/Directory Access/LDAPv3/Templates ) est obstinément ignoré sur le MacMini.

Quelqu'un a-t-il des suggestions à faire, s'il vous plaît, sur la façon de procéder ?

Steve

2voto

tomasr Points 9990

J'ai appris ce qui suit en réglant ce problème. Peut-être cela aidera-t-il quelqu'un d'autre à l'avenir.

Un client LDAP MacOS configuré avec Directory Utility stocke les données de configuration pour les serveurs LDAP qu'il connaît dans /Library/Preferences/OpenDirectory/Configurations/LDAPv3 dans des listes nommées <servername>.plist . Ces fichiers peuvent être manipulés avec odutil (voir man odutil ).

Directory Utility peut être utilisé pour télécharger ces listes à partir du système de fichiers local ou du serveur LDAP lui-même.

Pour accéder à la liste de contrôle à partir du système de fichiers local, copiez-la dans l'emplacement suivant ~/Library/Application Support/Directory Access/LDAPv3/Templates et assurez-vous qu'il est appelé <anything>.plist (c'est-à-dire qu'il doit avoir le type de fichier .plist ). Après cela, si vous modifiez les données du serveur dans la section Directory Utility sous l'onglet "Search & Mappings", dans le menu déroulant intitulé "Access this LDAPv3 server using", vous verrez le texte "<anything>" du nom de fichier de la plist. Si vous sélectionnez cette option, les paramètres de votre plist seront appliqués au client.

De même, il est possible de créer une entrée dans le serveur LDAP lui-même qui contient exactement le même texte et de l'utiliser à la place. Voici ce que je vois dans ldapvi quand je regarde l'entrée que j'ai créée :

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>

Remarque : tout ce qui va du " ;" à la fin de la définition est le contenu de notre plist - sans les "\"s, qui sont un artefact de l'API. ldapvi . C'est à vous de décider de la manière de placer le plist sur votre serveur : J'utilise Apache Directory Studio . La seule restriction apparente est que l'entrée doit être une organizationalUnit appelé ou=macosxodconfig . Après cela, si vous modifiez les données du serveur dans le fichier Directory Utility sous l'onglet "Search & Mappings", dans le menu déroulant intitulé "Access this LDAPv3 server using", vous trouverez l'option "From Server". Si vous sélectionnez cette option, vous serez invité à choisir une base de recherche (je vous suggère de choisir '<RDN local>,<DN de base LDAP>', en remplaçant les éléments entre crochets par quelque chose qui a du sens dans votre contexte. Les paramètres de votre plist seront ensuite appliqués à votre client.

Au cas où vous auriez oublié, vous devez indiquer à MacOS que vous utilisez un serveur LDAP. Vous le faites dans System Preferences -> 'Users & Groups' -> 'Login Options' : à droite, vous verrez l'étiquette 'Network Account Server' avec un bouton 'Edit...' à côté. Authentifiez-vous en cliquant sur le cadenas en bas de la fenêtre, cliquez sur le bouton 'Edit...' et ajoutez votre/vos serveur(s) à la liste ici.

Vous devrez peut-être aussi retourner à Directory Utility et ajoutez votre ou vos serveurs LDAP à sa "politique de recherche" (onglet de la fenêtre d'accueil).

Steve

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X