Editing
LDAP
View Page
Page History
Bold
Italic
Code
Unordered List
Ordered List
Blockquote
Horizontal Rule
h1
h2
h3
Link
Image
Help
Edit Mode
AsciiDoc
Creole
Markdown
MediaWiki
Org-mode
Plain Text
Pod
RDoc
reStructuredText
Textile
Help 1
Help 1
Help 1
Help 2
Help 3
Help 4
Help 5
Help 6
Help 7
Help 8
<!-- --- title: Infrastructure LDAP ResEl--> # Description Le *LDAP* est la base de données centrale au ResEl. C'est dans cette base de données que sont enregistrées toutes les informations concernant les utilisateurs et leurs machines, les clubs, ainsi que les serveurs du ResEl. Le *LDAP* pour *Lightweight Directory Access Protocol* est à l'origine un [protocole](https://fr.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) et sert de norme pour l'architecture d'un annuaire. Un **serveur LDAP** permet de gérer un arbre *LDAP*. # Mise en place Pour gérer le LDAP, le ResEl utilise la [suite](https://www.openldap.org/software/man.cgi?query=slapd) **OpenLDAP**, dont le serveur est **slapd** (pour *stand alone LDAP daemon*). Le serveur LDAP est hébergé sur les machines [Beaune](/Serveurs/Beaune) à Brest et [Lussac](/Serveurs/Lussac) à Rennes qui fait de la réplication LDAP. Le serveur LDAP écoute sur `ldap://ldap.adm.resel.fr:389` en clair ou sur `ldaps://ldap.adm.resel.fr:636` pour une connexion TLS. Le LDAP n'est accessible que depuis le vlan admin. Le DNS a une entrée *ldap.resel.fr* pointant vers le serveur selon le campus. En plus de cela, un service de synchronisation, *syncrepl* permet de synchroniser les arbres entre les deux serveurs. *Beaune* est maître. Voir [replication](). Un script permet la vérification de l'intégrité du LDAP. Voir [intégrité](). ## Petit rappel Petits rappels sur le LDAP. Un LDAP gère un annuaire sous forme d'un arbre. Les entrées de l'arbre (ou les derniers éléments de la hiérarchie) peuvent être des `commonName`, des `uid` (ou autres) et sont censés représenter un utilisateur. Tout utilisateur qui utilise le LDAP est connecté via ce *commonName*. Les *commonName* font partie d'une *objectClass* qui les définit. Ils ont un ensemble d'`attributeType` contenant diverses infos. Les *commonName* sont regroupés au sein de la structure hiérarchique de l'arbre LDAP. Cette hiérarchie est appelée *DIT: Directory Information Tree*. Cette hiérarchie est définie par le format *X-500*. On utilise principalement cette hiérarchie : - *DC: Domain Component* : élément séparés du domaine (DNS) du réseau. Par exemple la compagnie `society.com` aura une racine `dc=compagny,dc=com`. Si la compagnie a plusieurs sous domaine, ils formeront autant de branches : `foo.society.com` et `bar.society.com` donneront les branches `dc=foo,dc=society,dc=com` et `dc=bar,dc=society,dc=com`. - *OU: organizationalUnit* : organisation qui contient des personnes, c'est un groupe. Elle peut contenir elle même des sous *OU*. - *CN: commonName* : un type d'entrée final, contenant le nom d'une personne. - *UID: user identifier* : un autre type d'entrée final, contenant l'identifiant d'une personne. On désigne une entrée LDAP avec un *DN: Distinguished Name* qui doit être lu de droite à gauche : par exemple `uid=tjacquin,ou=admins,dc=resel,dc=enst-bretagne,dc=fr`. On peut décrire une entrée LDAP avec la [notation LDIF](https://en.wikipedia.org/wiki/LDAP_Data_Interchange_Format) ``` dn: cn=The Postmaster,dc=example,dc=com objectClass: organizationalRole cn: The Postmaster ``` Plus de détails sur les articles [ici](https://www.ldap.com/the-directory-information-tree) et [là](http://www.informit.com/articles/article.aspx?p=101405&seqNum=7). ## Structure de l'arbre Historiquement les noms de domaine du ResEl en `resel.enst-bretagne.fr` et de la Maisel en `maisel.enst-bretagne.fr` ont donné naissance à deux branches : `dc=maisel,dc=enst-bretagne,dc=fr` et `dc=resel,dc=enst-bretagne,dc=fr`. La branche `dc=maisel,..` contient les informations relatives aux personnes physiques, aux clubs et assos, aux site de clubs et leur webmestres, c'est la branche plutôt *sociale*. La branche `dc=resel,..` contient les informations relatives aux personnes techniques et aux machines techniques du ResEl, les administrateurs, les machines, les switches,... (en gras, les branches les plus importantes) * **dc=maisel,dc=enst-bretagne,dc=fr** * *ou=anciens* * *ou=club-old* : ancienne branche, n'est plus utilisée * *ou=clubs* : ancienne branche, n'est plus utilisée * *ou=divers* * **ou=organisations** : associations et clubs du campus * **ou=people** : personnes inscrites au ResEl * **ou=webmasters** : tous les webmestres * **dc=resel,dc=enst-bretagne,dc=fr** * *cn=replicator* * **ou=admins** : admins ResEl * **ou=machines** : machines inscrites au ResEl * *ou=reseau* : switch du ResEl * *ou=sites* : sites web (voir [sites des clubs](/Utilisateurs/SiteClubs#fonctionnement_sch%C3%A9ma-ldap-sp%C3%A9cifique) pour des détails précis sur cette branche) * *ou=snmp* : alias snmp pour les différents switches ### Description des objets ResEl Un annuaire LDAP contient des branches, dans lesquelles on peut avoir des groupes `organizationalUnit`, puis à la fin de la hiérarchie, on trouve des éléments `commonName`. Chaque élément est une instance d'une classe (`objectClass`) et ces objets contiennent des attributs. Pour son utilisation, le ResEl a défini quelques objets LDAP spécifiques, [vous pouvez les retrouver dans la configuration](https://git.resel.fr/confs/ldap/blob/master/schema/resel-14628.schema), voici une description : Classes définies : - *enstbPerson* : pesonne ayant un compte école (tout le monde sur l'annuaire) - *maiselPerson* : personne ayant une chambre à la Maisel - *reselPerson* : personne ayant au moins une machine au ResEl - *mailPerson* : personne ayant un compte mail au ResEl - *aePerson* : personne membre de l'Association des Élèves - *club* : un club - *poste* : un poste dans un club - *machine* : une machine ayant une IP au ResEl - *administrateur* : personne ayant des droits d'administration au ResEl - *reselSwitch* : switch (contenant des ports comme fils) - *switchPort* : association port/(numéro de chambre ou autre switch ou rien) - *snmpType* : type de switch, ses fils décrivent comment manipuler un switch - *mib* : référence vers une valeur lisible (voire modifiable) du switch - *mibValue* : valeur possible pour un MIB donné - *guestPerson* : personne résidant a la Maisel temporairement mais ne disposant pas de compte école # Utilisation ### Interfaces admin Pour les lectures courantes (de la part d'administrateurs), il est conseillé d'utiliser [l'interface admin](https://admin.resel.fr). Vous ne risquez pas de faire trop de bétises avec. Dans certains cas, il est nécessaire de faire des requêtes personnalisées. Dans ce cas il est conseillé d'utiliser [phpLdapAdmin](https://admin.resel.fr/phpldapadmin/). ### Manuellement #### Lire dans le LDAP **ldapvi** est un éditeur en ligne de commande qui ouvre l'ensemble du LDAP dans votre éditeur de texte préféré, défini par la variable `$EDITOR`. Pour l'utiliser, voilà deux solutions : * Se connecter sur [Beaune](/Serveurs/Beaune) et lancer `ldapvi` dessus : ``` ldapvi --discover ``` Si vous avez les droits nécessaires, vous pouvez faire les modifications que vous voulez. * En local, éditer `~/.ldaprc` ``` HOST ldap.adm.resel.fr BINDDN uid=mon_login,ou=admins,dc=resel,dc=enst-bretagne,dc=fr TLS_CACERT chemin/vers/ca.pem ``` Puis on peut lancer : ``` ldapvi -d -D uid=mon_login,ou=admins,dc=resel,dc=enst-bretagne,dc=fr ``` #### Export avec ldapsearch On peut exporter des portions du *LDAP* au format *LDIF* avec **ldapsearch** : ``` ldapsearch -LLL -x -H ldap://lussac.adm.maisel.rennes.enst-bretagne.fr -b "dc=resel,dc=enst-bretagne,dc=fr" -LLL Affichage au format LDIF (sans commentaires, sans version LDIF) -x Authentification simple (sans utiliser SASL) -D dn DN de connexion -W Demande le mot de passe -h uri URI du serveur LDAP -b base Base de la recherche -s scope Etendue de la recherche (base, one, sub) -S "attr" trie selon l'attribut ``` #### Répliquer une branche du LDAP Il arrive que l'on ait besoin de répliquer une ou plusieurs branches du LDAP, lors d'une mise à jour, ou dans le cas d'une désynchronisation entre les LDAP de Brest et de Rennes par exemple. Pour ce faire, on commence par récupérer la branche au format *LDIF*, soit en utilisant la commande précédente, soit en utilisant **slapcat**: ``` slapcat -n dbnum > mon_fichier.ldif -n spécifie le numéro de la base de données. À l'heure où ces lignes sont écrites, la branche Maisel est sur la base de données N°1, et la branche ResEl sur la N°2 ``` **À vérifier** il peut être bon de supprimer la branche concernée avant de l'importer dans **/var/lib/ldap** Pour ajouter la sauvegarde *après avoir coupé le service sldap*, on utilise **slapadd** **en utilisant screen ou tmux**. Cette action étant très longue, une coupure de connexion peut lui être fatale. ``` slapadd -l mon_fichier.ldif -c -l spécifie le *fichier ldif* à utiliser -c ignore les erreurs -q effectue moins de vérifications (plus rapide mais risque de corruption) ``` **Attention** si *slapadd* est exécuté en root, il faut donner les droits au LDAP sinon slapd ne démarre pas: ``` chown -R openldap:openldap /var/lib/ldap ``` ### Scripting Si vous avez besoin d'accéder au ldap dans des scripts, ou depuis un quelconque code d'un projet ResEl, il existe quelques ressources sur internet : * https://www.python-ldap.org/ * https://github.com/pyldap/pyldap ### Les filtres LDAP Pour faire des recherches, on peut utiliser des filtres. La syntaxe pour faire ces filtres suit la notation polonaise : ``` (OPERATEUR_BOOLÉEN(attribut OPERATEUR_BINAIRE valeur)(attribut OPERATEUR_BINAIRE valeur)...) ``` Les opérateurs booléens étant : * la négation : `!` * la conjonction (ET) : `&` * la disjonction (OU) : `|` Les opérateurs binaires étant : * Égalité : `=` * Approximation : `~=` * Supérieur ou égal : `>=` * Inférieur ou égal : `<=` Les opérateurs binaires restant s'obtiennent par combinaison des autres. #### Exemples Tous les uid ou firstname ou lastname ou nickname ou orgaName contenant "a" ``` (|(uid=*a*)(firstname=*a*)(lastname=*a*)(nickname=*a*)(orgaName=*a*)) ``` Toutes les personnes ayant leur numéro de téléphone renseigné dans la base : ``` (&(objectclass=person)(telephoneNumber=*)) ``` Toutes les personnes dont le nom commence par 'A' et n'habitant pas Paris : ``` (&(objectclass=person)(cn=A*)(!(location=Paris))) ``` Toutes les personnes dont le nom ressemble à Febvre (Faivre, Fèvre, Lefebvre, ...): ``` (&(objectclass=person)(cn~=febvre)) ``` Idem que le premier exemple en excluant la branche `ou=club-old,dc=maisel,dc=enst-bretagne,dc=fr` : ``` (&(|(uid=*musique*)(firstname=*musique*)(lastname=*musique*)(nickname=*musique*)(orgaName=*musique*)) (!(entryDN:dnSubtreeMatch:=ou=club-old,dc=maisel,dc=enst-bretagne,dc=fr))) ``` ### Les URL et URI LDAP Afin d'accéder rapidement à une ressource, nous pouvons utiliser une URL LDAP de la forme suivante : ``` ldap[s]://<hostname>:<port>/<base_dn>?<attributes>?<scope>?<filter>?<extensions> ``` avec les paramètres suivants: * `hostname` : Adresse du serveur. L'adresse peut être absente, le client est supposé connaître un serveur LDAP à contacter, en fonction du contexte. * `port` : Port TCP de la connexion. Il ne peut y avoir de port s'il n'y a pas d'adresse. * `base_dn` : DN de l'entrée qui est le point de départ de la recherche. * `attributes` : Les attributs que l'on veut récupérer, séparés par des virgules. Si la valeur n'est pas remplie, ou si elle est remplie avec un `*`, tous les attributs d'usage `userApplication` doivent être retournés. * `scope` : La profondeur de la recherche dans l'arbre : base, one ou sub. * `filter` : Le filtre de recherche, tel que nous venons de le définir. Le filtre par défaut est (objectClass=*). * `extensions` : Les extensions sont un moyen pour pouvoir ajouter des fonctionnalités aux URL LDAP tout en gardant la même syntaxe. On peut inclure plusieurs extensions dans une URL, en les séparant par des `,`. Les extensions ont le format suivant : `type=value`. La partie `=value` est optionnelle. Elle peuvent être préfixée par un ! pour signaler une extension critique. Une extension critique signifie que le client et le serveur doivent supporter tous les deux l'extension, sinon une erreur sera levée. #### Exemple Les genericPerson dans la branche dc=maisel,dc=enst-bretagne,dc=fr ``` ldaps://ldap.resel.fr:636/dc=maisel,dc=enst-bretagne,dc=fr??sub?(objectclass=genericPerson) ``` ### Ajout d'un nouveau switch *ObjectClass* **reselMachine** Importer dans le LDAP en remplacant host par le nom du switch : ``` dn: host=pessac,ou=machines,dc=resel,dc=enst-bretagne,dc=fr host: pessac objectClass: reselMachine uidProprio: uid=reselMachine,ou=people,dc=maisel,dc=enst-bretagne,dc=fr zone: Rennes zone: SW-Adm ipHostNumber: 0.7 lastDate: 20101017000000Z macAddress: 00:1c:57:4b:42:41 ObjectClass: reselSwitch ``` Importer dans le LDAP en remplacant l'ou=C1 par l'emplacement du switch, le cn et host par le nom du switch. Il faut aussi incrémenter unite : ``` dn: cn=pessac,ou=C1,ou=reseau,dc=resel,dc=enst-bretagne,dc=fr objectClass: reselSwitch cn: pessac machine: host=pessac,ou=machines,dc=resel,dc=enst-bretagne,dc=fr switchType: type=C3750,ou=snmp,dc=resel,dc=enst-bretagne,dc=fr unite: 1 ``` # Configuration :warning: La configuration du LDAP fait l'objet d'un versionnage sur le dépôt Git [confs/LDAP](https://git.resel.fr/confs/ldap/). N'oubliez pas de commiter vos modifications ! La configuration du serveur *slapd* se trouve sur [Beaune](/Serveurs/Beaune) et [Lussac](/Serveurs/Lussac) dans `/etc/ldap`. Le dépôt contient la configuration du maître (Beaune), et de l'esclave (Lussac), donc les fichiers peuvent êtres en double, suffixés par un `-master` ou un `-slave`. On a les fichiers suivants : * `slapd.conf` : configuration principale. Existe en version maître `slapd-master.conf` et esclave `slapd-slave.conf`. C'est le seul fichier qui a besoin d'être renommé en `slapd.conf` sur la machine. Chaque fichier inclus les autres fichiers avec le bon nom. * `access.ldap` : configure les droits nécéssaires pour accéder en lecture ou en écriture à une partie du LDAP. Existe en version `access-master.ldap` et `access-slave.ldap`. * `overlay-chain.ldap` * `replication-maisel.ldap` * `replication-resel.ldap` * `rootdn.ldap` : Existe en version `rootdn-master.ldap` et `rootdn-slave.ldap`. * `schema/` : dossier contenant les schémas. * `ssl/` et `tls/` : dossiers contenant les configurations et certificats pour la sécurisation SSL/TLS. L'utilitaire `slaptest` permet de tester la validité de la configuration du serveur. Le *daemon* est géré par un simple service SysVinit : ```service slapd (start|stop|restart|status)``` **Important : Ne jamais lancer slapd en tant que root** ### Général Voici des éléments importants de la configuration du LDAP : Dans `master.cf`, on commence par définir divers paramètres de fonctionnement du serveur, on inclut les fichiers de configurations annexes, notamment les schémas LDAP. ```conf include /etc/ldap/schema/resel-14628.schema include /etc/ldap/access-master.ldap ``` La première ligne inclut les schémas spécifiques au ResEl, la seconde inclut les règles d'accès aux éléments du LDAP en configurant les droits. Voir les parties suivantes pour plus de détails. Ensuite on configure l'emplacement des certificats TLS. ```conf TLSVerifyClient never TLSCertificateKeyFile /etc/ldap/tls/ldap-key.pem.nopass TLSCertificateFile /etc/ldap/tls/ldap-crt.pem TLSCACertificateFile /etc/ldap/tls/cacert.pem ``` Diverses configurations pour les pid files et log files, certains paramètres de lancement définis dans le fichier `/var/run/slapd/slapd.args`. Puis des définitions des noms des modules noyau qui vont être lancés par sladp. Enfin commence la configuration des bases de données. On commence par indiquer que le backend est *bdb* : `backend bdb`. On déclare la branche LDAP `maisel` avec : ```conf database bdb suffix "dc=maisel,dc=enst-bretagne,dc=fr" ``` Puis la configuration de cette branche suit, on commence par définir le *DN root* et le *mot de passe root* contenus dans le fichier `include /etc/ldap/rootdn-master.ldap`. Puis le chemin de sauvegarde physique de la BDD `directory "/var/lib/ldap/maisel"` et finalement diverses options d'*indexing* et d'activation de fonctionnalités comme `memberof`. Les lignes suivantes activent la synchronisation de la branche. ```conf overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100 ``` Puis la configuration de la branche `resel` suit. ### Schéma Plus de détails sur la [compréhension des schémas LDAP](https://www.ldap.com/understanding-ldap-schema). La configuration de schémas est incluse dans tous les fichiers `schema/*.schema`. Elle configure tout les *objectClass* et *attributeType* décrits dans la section [Mise en place](#mise-en-place_structure-de-l-arbre_description-des-objets-resel). Voici la syntaxe des fichiers de schéma. #### Création d'un attribut Syntaxe : ```conf attributetype ( 1.3.6.1.4.1.14628.3.0 NAME 'firstName' DESC 'Prénom' EQUALITY caseIgnoreMatch ORDERING caseIgnoreOrderingMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) ``` Le numéro `1.3.6.1.4.1.14628.3.0` définit l'*OID: Object Identifier*, c'est un champ très peu lisible utile pour le LDAP. A noter que le dernier numéro doit être incrémenté à chaque fois. #### Création d'un ObjectClass Syntaxe: ```conf objectclass ( 1.3.6.1.4.1.14628.1.7 NAME 'reselMachine' STRUCTURAL DESC 'Machine ayant une IP et une entrée dans le DNS' MUST ( host $ uidProprio $ ipHostNumber $ macAddress $ zone ) MAY ( hostAlias $ lastDate $ ipv6HostNumber $ paramConn $ duidHostNumber $ ipv6HostPrefix $ description $ group ) ) ``` Le champ `MUST` précise les attributs obligatoires à renseigner, `MAY` ceux optionnels. ### Droits La configuration des droits est définie dans `acces-(slave|master).conf` À Brest, on définit globalement les règles suivantes : - Accès au CN *Monitor* par l'utilisateur `admin` (pas les admins en général). - Accès au CN *accesslog* par un *ldapadmin* (cn ayant le champ droit `ldapadmin`), l'admin et le *replicator*. - Accès au CN à divers élements (et le droit associé) aux admins ayant le droit en question. (Voir l'article [gestion des droits des admins](/) - Accès au mot de passe par l'utilisateur lui même, par un *ldapadmin*, par le *replicator* en lecture, par tout le monde en comparaison. - Accès à la clé privée d'un admin par lui même, ansible et le replicator en lecture - Accès aux branches *organisation* et *sites* par les membres qui sont dans le *memberUid* du site, ou les *reseladmin*. - Acces à tout par tout le monde en lecture. #### Explication de la syntaxe Voir la [documentation officielle](http://www.openldap.org/doc/admin24/access-control.html) pour plus de détails. La syntaxe est la suivante : ``` access to <champ> by <règle d'accès> <droit> ``` Globalement, on configure l'accès à un endroit précis du LDAP via le *champ*, cela peut être sous la forme d'un DN : `dn.subtree="cn=Monitor"`, ce DN va préciser le CN précis ou tout une branche ou un groupe ; ou plus généralement avec des wildcards comme `*`. On peut préciser un attribut avec `attrs=droit` ou plus spécifiquement l'attribut d'un objet précis avec `attrs=<attr> dn.subtree=<dn_voulu>`. Puis les règles d'accès consistent à comparer le CN de l'utilisateur qui accède (car tous les utilisateurs qui accèdent au LDAP se connectent avec un CN du LDAP). On peut donc vérifier que le CN vaut exactement quelque chose `by dn.exact="cn=admin,dc=maisel,dc=enst-bretagne,dc=fr"` ou être plus précis en vérifiant un attribut du CN : `set.exact="user/droit* & [ldapadmin]" write`. Dans cette règle d'accès, `this` pointe sur l'élément auquel on tente d'accéder, et `user` pointe sur l'utilisateur qui veut y accéder. On accède aux valeurs des attributs par le `/`. On précise une chaîne telle quelle entre `[ ]`. Pour vérifier une égalité de champs, on peut utiliser `set.exact="this/attr1 & user/attr2"`, ou `set.exact="user/attr & [foo]"` Finalement le droit est soit `read` soit `write` soit `compare`. Le droit *compare* est par exemple utile pour vérifier si un mot de passe est le bon sans avoir à le lire. ### Réplication Brest-Rennes On utilise pour la réplication **SyncRepl**, configuré dans les fichiers `replication-resel.ldap` et `replication-maisel.ldap`, un fichier par branche. Le LDAP de Rennes établit une connexion persistante vers l’annuaire maître et synchronise l’annuaire en temps réel. Il est possible de vérifier que la connexion est bien établie avec la commande netstat : ``` sudo netstat -naptu | grep "ESTABLISHED.*slapd" ``` Le résultat de cette commande doit montrer une connexion TCP établie entre l’adresse IP de l’esclave et l’adresse IP du maître sur le port 389 ou 636 (TLS) suivant ce qui est défini dans les fichiers [replication-resel.ldap](https://git.resel.fr/confs/ldap/blob/master/replication-resel.ldap) et [replication-maisel.ldap](https://git.resel.fr/confs/ldap/blob/master/replication-maisel.ldap). Documentation sur la réplication LDAP : * [Documentation officielle](http://www.openldap.org/doc/admin24/replication.html) * [Article plus pratique](http://www.vogelweith.com/debian_server/050_openldap.php#x1-210005) ### Synchro avec le LDAP école (TODO: Le nouveau site ne le gérant pas encore, ça ne serait pas très utile de le documenter maintenant) Sur l'ancien site admin RA2 : Lorsqu'une personne enregistrée auprès de l'école souhaite un accès au ResEl, il est possible de récupèrer son compte depuis le LDAP de l'école. Il suffit d'aller dans RA2, dans [synchro LDAP](https://admin.resel.fr/ldap/synchro.php), puis de remplir le champ de recherche avec un filtre de recherche LDAP. #### Script Il existe un script permettant d'importer une promo : [code source](https://git.resel.fr/resel/scripts/blob/master/ldap/import_promo.py). ### Scripts #### Désactivation des machines Les machines du ResEl (machines utilisateurs et serveurs) sont enregistrées dans le LDAP avec un type `reselmachine` qui contient un champ `lastdate`. Ce champ `lastdate` permet de mettre les machines en zone inactive lorsqu'elle ne sont pas vues sur le réseau depuis un certain temps. Le script `/srv/ldap/desactivation_machines.pl` sur Beaune permet de désactiver les machines absentes du réseau depuis longtemps. Il est lancé par un cron à une fréquence `37 13 * * 1` Son code source est versionné et est disponible dans [ResEl/scripts](https://git.resel.fr/resel/scripts/blob/master/ldap/desactivation_machines.pl). #### Vérification de l'intégrité Le script `/srv/ldap/check_ldap.pl` situé sur Beaune permet de vérifier l'intégrité du LDAP. Il est lancé par un cron à une fréquence `37 */4 * * *`. Son code source est versionné est disponible dans [ResEl/scripts](https://git.resel.fr/resel/scripts/blob/master/ldap/check_ldap.pl). # Bugs connus * Janvier 2016 : Il y a une erreur au démarrage, pour que cela fonctionne il faut le lancer le démon slapd en mode débug. # Liens utiles ### Articles connexes * [Beaune](/Serveurs/Beaune) ### Ressources externes * [Page Wikipedia sur le LDAP](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) * [Le manuel de ldapvi](http://www.lichteblau.com/ldapvi/manual/) * [OpenLDAP](http://www.openldap.org/) * [Repo de la configuration](https://git.resel.fr/confs/ldap/) * [Note sur la synchro LDAP](www.admin-linux.fr/?p=715) * [Compréhension des schémas LDAP](https://www.ldap.com/understanding-ldap-schema) * [Cours sur LDAP](https://www.digitalocean.com/community/tutorials/understanding-the-ldap-protocol-data-hierarchy-and-entry-components).
Uploading file ...
Expand/Collapse
Sidebar
Edit message:
Preview