Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 8768|Répondre: 1

Série OpenLDAP (3) Les commandes OpenLDAP sont expliquées en détail

[Copié le lien]
Publié sur 23/06/2020 22:34:54 | | | |
Résumé de la commande OpenLDAP

  • ldapsearch : Recherche d’entrées d’arbres d’annuaires OpenLDAP.
  • ldapadd : Ajoute les entrées de l’arbre de répertoires via le format LDIF.
  • ldapdelete : Supprime les entrées de l’arbre de répertoires OpenLDAP.
  • ldapmodify : Modifier l’entrée de l’arbre de répertoires OpenLDAP.
  • ldapwhoami : Valide l’identité des utilisateurs d’OpenLDAP.
  • ldapmodrdn : Juge l’entrée DN de l’arbre de répertoire OpenLDAP.
  • ldapcompare : Détermine si la valeur DN et la valeur du paramètre spécifiée appartiennent à la même entrée.
  • ldappasswd : Modifier l’entrée utilisateur de l’arbre de répertoires OpenLDAP pour obtenir une réinitialisation du mot de passe.
  • slaptest : Vérifiez le fichier slapd.conf ou le répertoire cn=configuration.
  • slapindex : Crée un index d’arbre d’annuaire OpenLDAP pour fournir l’efficacité des requêtes.
  • slapcat : Convertit les données en fichiers LDIF pour OpenLDAP.


Commandement ldapadd

Options
description
-x
Effectuer une authentification simple
-D
Le DN servait à lier le serveur
-h
L’adresse du service d’annuaire
-W
Liquer le mot de passe DN
-f
Fichiers qui utilisent les fichiers LDIF pour l’ajout d’entrées


Tout d’abord, nous préparons un fichier test.ldif avec la commande suivante :



Le contenu est le suivant :

dn: uid=xzz,ou=Users,dc=itsvse,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
homeDirectory: /home/itsvse_xzz
loginShell: /bin/bash
cn: xzz
uidNumber: 1000
gidNumber: 1000
sn: System Administrator
mail: xzz@itsvse.com
postalAddress: shanghai
mobile: 13788888888



Ajoutez les commandes suivantes :



Après avoir saisi le mot de passe, il est ajouté avec succès, comme montré dans la figure ci-dessous :



Commande ldapmodify

La commande ldapmodify est fixe et implémente principalement différentes fonctions de modification via des fichiers de configuration.



Le fichier demo.ldif est le suivant, ce qui signifie que le paramètre uidNumber de l’utilisateur uid=xzz est modifié.



Commandement ldappasswd

LdappassWD ouvre une connexion au serveur LDAP et change le mot de passe d’entrée.

Options
description
-x
Effectuer une authentification simple
-D
Le DN servait à lier le serveur
-W
Liquer le mot de passe DN
-S
Saisissez le mot de passe quand vous le demandez
-s
passe pour définir le mot de passe
-un
Passe Passe Ancien Passe
-Un
Invite le réglage de l’ancien passwd
-H
fait référence au serveur à lier
-Je
Utiliser la méthode de session SASL




Commandement de recherche ldap

Commande de recherche LDAP

[root@VM_0_9_centos ~]# ldapsearch -h
ldapsearch: option requires an argument -- 'h'
ldapsearch: unrecognized option -h
usage: ldapsearch [options] [filter [attributes...]]
where:
  filtre filtre de recherche LDAP conforme à la RFC 4515
  Attributs Liste séparée des espaces blancs des descriptions d’attributs
    qui peuvent inclure :
      1.1 Aucun attribut
      * tous les attributs utilisateur
      + tous les attributs opérationnels
Options de recherche :
  - un deref de jamais (par défaut), toujours, recherche, ou recherche
  -A Récupérer uniquement les noms des attributs (sans valeurs)
  -B base dn pour la recherche
  -c mode de fonctionnement continu (ne pas s’arrêter sur les erreurs)
  -E [ !] <ext>[=<extparam>] extensions de recherche ( ! indique la criticité)
             [!] domainScope (champ de domaine)
             !n’utilisePas Copie (N’Utilisez pas Copier)
             [!] mv=<filter> (filtre des valeurs correspondantes RFC 3876)
             [!] pr=<size>[/prompt|noprompt] (Résultats/invite pages RFC 2696)
             [!] sss=[-]<attr[ :OID]>[/[-]<attr[ :OID]>...]
                                         (Tri côté serveur RFC 2891)
             [!] sous-entrées[=vrai|faux] (sous-entrées RFC 3672)
             [!] sync=ro[/<cookie>] (RFC 4533 LDAP Sync RefreshOnly)
                     rp[<cookie>/][/<slimit>] (rafraîchissementEtPersistance)
             [!] vlv=<before><after>/(/<offset>/<count>| :)<value>
                                         (ldapv3-vlv-09 vues de liste virtuelle)
             [!] deref=derefAttr :attr[,...] [; derefAttr :attr[,...] [; ...]]
             [!] <oid>[= :<b64value>] (contrôle générique ; Aucune gestion de la réponse)
  -F opérations de lecture de fichier à partir de « fichier »
  -Préfixe URL du préfixe F pour les fichiers (par défaut : file:///tmp/)
  -l limite de temps (en secondes, ou « aucun(e) ou « max ») pour la recherche
  -L imprimer les réponses au format LDIFv1
  -LL imprimer les réponses au format LDIF sans commentaires
  - LLL : réponses imprimées au format LDIF sans commentaires
             et version
  -M activer Gérer le contrôle informatique DSA (-MM à rendre critique)
  -Version P version du protocole (par défaut : 3)
  -s portée un de base, un, sub ou enfants (portée de recherche)
  -S attr trie les résultats par attribut « attr »
  -t écrire des valeurs binaires dans des fichiers dans un répertoire temporaire
  -tt écrire toutes les valeurs dans des fichiers dans un répertoire temporaire
  -T le chemin écrit des fichiers dans un répertoire spécifié par chemin (par défaut : /tmp)
  -u inclut les noms d’entrées conviviales dans la sortie
  -z limite de taille (dans les entrées, ou « aucune » ou « max ») pour la recherche
Options courantes :
  -d level définissez LDAP débogage level à 'level'
  -D binddn liant DN
  -e [ !] <ext>[=<extparam>] Extensions générales ( ! indique la criticité)
             [!] assert=<filter> (RFC 4528 ; une chaîne de filtres RFC 4515)
             [!] authzid=<authzid> (RFC 4370 ; « dn <dn>» ou « u » <user>»)
             [!] enchaînement[=<resolveBehavior>[/<continuationBehavior>]]
                     l’un de « chaînementPréféré », « EnchaînementObligatoire »,
                     « recommandationsPréférentiel, « RecommandationsRequises »
             [!] manageDSAit (RFC 3296)
             [!] non
             ppolicy
             [!] postread[=<attrs>] (RFC 4527 ; liste d’attr séparée par virgules)
             [!] pré-leur[=<attrs>] (RFC 4527 ; liste d’attr séparée par virgules)
             [!] Détends-toi
             [!] Suivi de session
             abandon, annuler, ignorer (SIGINT envoie abandon/annulation,
             ou ignore la réponse ; si c’est critique, il ne faut pas attendre le SIGINT.
             pas vraiment des contrôles)
  -h host serveur LDAP
  -Identifiant(s) uniforme de ressource ldap de l’URI H
  -J’utilise le mode interactif SASL
  -n montre ce qui serait fait mais ne le fais pas vraiment
  -N n’utilisent pas le DNS inversé pour canoniser le nom d’hôte SASL
  -O props propriétés de sécurité SASL
  -o <opt>[=<optparam>] options générales
             Temps d’expiration=<timeout> (en secondes, ou « aucun » ou « max »)
             ldif-wrap=<width> (dans les colonnes, ou « non » pour no wrapping)
  port -p sur le serveur LDAP
  -Q utilise le mode silencieux SASL
  -Royaume R Royaume SASL
  -Identité d’authentification SASL authcid
  -v exécuté en mode verbeux (diagnostic vers sortie standard)
  -V informations sur la version imprimée (-VV uniquement)
  -W pass blink pass (pour une authentification simple)
  -Invite W pour lier le mot de passe
  -x Authentification simple
  -Identité d’autorisation SASL (« dn :<dn> » ou « u :<user>)
  -y fichier Lire le mot de passe à partir du fichier
  -Mécanisme SASL du mécha Y
  -Z Démarrer la requête TLS (-ZZ pour nécessiter une réponse réussie)

La commande est la suivante :


Les résultats de la requête sont les suivants :


Interrogez tous les utilisateurs :


Explication du nom LDAP

Classe d’objet

La classe d’objet LDAP est le modèle de données intégré à LDAP. Chaque objectClass possède sa propre structure de données, par exemple, nous avons une objectClass appelée « Phone Book », qui aura assurément de nombreux attributs intégrés, tels que le nom (uid), le numéro d’identification (uidNumber), le nom de l’unité (gid), l’adresse personnelle (homeDirectory), etc., en même temps, il existe aussi une objectClass appelée « Classmate Record », qui possède un « annuaire téléphonique » Certains attributs (comme uid, homeDirectory) auront aussi des attributs qui ne figurent pas dans le « bottin téléphonique » (comme la description, etc.).

Entrée

Une entrée peut être appelée une entrée, une entrée est un enregistrement, une unité de stockage de base dans LDAP ; On peut aussi la considérer comme une collection de DN et un ensemble d’attributs. Notez qu’une entrée peut contenir plusieurs objectClasses, par exemple, zhang3 peut exister simultanément dans le « Phone Book » ou dans le « Classmate Record ».

DN

Nom distingué, le nom distingué unique de l’entrée dans LDAP, une orthographe DN complète : uid=zhang3, ou=People, dc=163, dc=com. Seule l’entrée dans LDAP est unique par le serveur LDAP.

Filtre de recherche LDAP

Utilisez le filtre pour chercher LDAP. Le filtre est généralement composé d’une unité telle que (attribute=valeur), par exemple : (&(uid=ZHANGSAN)(objectclass=person)) indique que l’entrée LDAP de l’utilisateur de recherche est ZHANGSAN. Un autre exemple est : (&(|( uid= ZHANGSAN)(uid=LISI))(objectclass=personne)), indiquant que la recherche d’un utilisateur avec un identifiant de recherche est ZHANGSAN, ou LISI ; Vous pouvez aussi utiliser * pour représenter n’importe quelle valeur, comme (uid=ZHANG*SAN), et rechercher des entrées dont les valeurs uid commençant par ZHANG et se terminant par SAN. De plus, selon différentes règles de correspondance d’attributs LDAP, il peut y avoir un filtre comme suit : (&(createtimestamp>=20050301000000)(createtimestamp<=20050302000000)), qui indique que le temps de création de la recherche est compris entre 20050301000000 et 20050302000000.

Dans Filtre, « & » signifie « et » ; “!” signifie « pas » ; “|” signifie « ou ». Selon les règles de correspondance, nous pouvons utiliser « = », « ~= », « >= », et « <= ».

Base DN

Un DN de base peut être « dc=163,dc=com » ou « dc=People,dc=163,dc=com ». Puisque LDAP est une structure de données en arbre, la recherche commence depuis BaseDN après avoir spécifié le basedn, et nous pouvons spécifier le champ de recherche comme : uniquement search basedn (basedn), basedn direct sous-niveau (un niveau), et basedn all sous-arbre au niveau de l’arbre.

ObjectClass

Dans LDAP, une entrée doit contenir un attribut objectClass et se voir attribuer au moins une valeur. Chaque valeur sera utilisée comme modèle pour le stockage des données par une entrée LDAP ; Le modèle contient un attribut auquel l’entrée doit être attribuée ainsi qu’un attribut optionnel. objectClass a une hiérarchie stricte, avec top et alias en haut. Par exemple, la classe objet de PersonneOrganisationnelle est subordonnée à personne, et personne est subordonnée à top.

objectClass peut être divisé en 3 catégories suivantes :
Structurel : comme la personne et l’organisationUnité ;
Auxiliaire : comme extensibeObject ;
Abstrait : Par exemple, la classe d’objet abstraite ne peut pas être utilisée directement.
De nombreuses classes-objet sont définies dans le schéma OpenLDAP, et les noms de certaines classes d’objets couramment utilisées sont listés ci-dessous.

  • Compte
  • Alias
  • dcobject
  • Domaine
  • ipHost
  • Organisation
  • organisationnelRôle
  • Unité organisationnelle
  • personne
  • OrganisationnelPersonne
  • inetOrgPerson
  • résidentielialPerson
  • posixAccount
  • posixGroup


ObjectClass est un ensemble d’attributs, et LDAP encapsule de nombreux objets courants dans les organisations humaines et les encapsule en classes d’objets. Par exemple, le personnel inclut le nom de famille (sn), le prénom (c), le numéro de téléphone (numéro de téléphone), le mot de passe (passwordUtilisateur) et d’autres attributs, et PersonneOrganisationnelle est la classe d’héritage de la personne ; en plus des attributs ci-dessus, il inclut également le titre, le code postal (CodePostalCode) et l’adresse postale (AdressePostal) et d’autres attributs.

Les types d’objets peuvent être facilement définis via des classes d’objets. Chaque entrée peut hériter directement de plusieurs classes d’objets, ce qui hérite de diverses propriétés. S’il y a 2 classes d’objets avec le même attribut, un seul attribut sera conservé après l’héritage de l’entrée. La classe objet spécifie également quelles propriétés sont des informations de base et doivent contenir (Obligatoire) : quelles propriétés sont des informations étendues et peuvent contenir (Peut ou Optionnel).

Il existe trois types de classes d’objets : structurel, abstrait et auxiliaire. Les types structurels sont les types les plus basiques, qui spécifient les propriétés de base du corps de l’objet, et chaque entrée appartient à une seule classe d’objets structurels. Les types abstraits peuvent être des types structurels ou d’autres parents de types abstraits, qui organisent ensemble les parties communes des propriétés des objets, appelés modèles pour d’autres classes, et les entrées ne peuvent pas intégrer directement les classes d’objets abstraits. Le type auxiliaire spécifie les propriétés étendues de l’entité objet. Bien que chaque barre n’appartienne qu’à une seule classe d’objets structurels, elle peut appartenir à plusieurs classes d’objets auxiliaires en même temps.

La classe objet elle-même peut hériter les unes des autres, donc la classe racine de la classe objet est la classe d’objet abstraite supérieure. En prenant les types de personnes couramment utilisés comme exemple, leur relation d’héritage est celle que montre la figure :



Les attributs intégrés de Comptage sont : userid, description, hôte, localitéNom, NomOrganisation, NomUnitéOrganisationnel, voirAussi ;

Les attributs intégrés de inetOrgPerson sont cn, sn, description, voirAussi, TéléphoneNuméro, UtilisateurPasse, DestinationIndicateur, TéléNuméro de fac-similé, internationaliSDNNumber, l, ou, physicalDeliveryOfficeName、postOfficeBox、postalAddress、postalCode、preferredDeliveryMethod、registeredAddress、st、street、telephoneNumber、teletexTerminalIdentifier、 TelexNumber、title、x121Address、audio、usinessCategory、carLicense、departmentNumber、isplayName、employeeNumber、employeeType、givenName、homePhone、homePostalAddress、initials、 jpegPhoto, labeledURI, mail, manager, mobile, o, pager, photo, preferredLanguage, roomNumber, secrétaire, uid, userCertificate, etc. ;

Comme vous pouvez le voir, Accout ne prédéfinit que quelques attributs nécessaires et utiles (c’est clairement suffisant pour compléter la vérification de connexion), tandis que inetOrgPerson possède de nombreux attributs intégrés, tels que numéro de téléphone, numéro de téléphone portable, adresse postale, numéro d’email, adresse e-mail, numéro de chambre, avatar, manager, numéro d’employé, etc.

Par conséquent, lors de la configuration de LDAP, il est recommandé de définir le type objectClass sur compte si cela ne sert qu’à vérifier la connexion, et de définir objectClass sur inetOrgPerson si vous souhaitez créer un véritable trésor d’informations sur les employés

Ici, j’utilise généralement 'inetOrgPerson', 'posixAccount', 'shadowAccount'.

Les attributs requis du compte sont userid, tandis que ceux de posixAccount sont cn, gidNumber, homeDirectory, uid, uidNumber ; L’attribut requis de shadowAccount est uid, et les attributs optionnels incluent shadowExpire, shadowInactive, shadowMax, shadowMin, userPassword, etc. La propriété requise par le top est objectClass (on peut voir que top et les autres objectClasses sont des relations héritées).

Attribut

Les attributs sont similaires à des variables en programmation et peuvent être attribués. De nombreux attributs couramment utilisés sont déclarés dans OpenLDAP (les utilisateurs peuvent également définir leurs propres attributs). Les significations des attributs courants sont les suivantes :

  • c : Country.
  • CN : Nom commun, qui fait référence au nom d’un objet. Si elle fait référence à une personne, il faut utiliser son nom complet.
  • dc :Composant de domaine, souvent utilisé pour désigner une partie d’un nom de domaine.
  • Nom donné : fait référence au nom d’une personne, pas à un nom de famille.
  • L : Fait référence à un toponyme, tel que le nom d’une ville ou d’une autre zone géographique.
  • mail : Adresse e-mail.
  • o :organisationName, qui fait référence au nom d’une organisation.
  • ou :NomUnitéOrganisationnel, qui fait référence au nom d’une unité organisationnelle.
  • SN : Nom de famille, fait référence au nom de famille d’une personne.
  • Numéro de téléphone : Le numéro de téléphone qui doit porter le code du pays où il se trouve.


Conseil : objectClass est un attribut spécial qui contient d’autres attributs utilisés en plus de lui-même.

Pour différentes ObjectClasses, il existe généralement des valeurs de propriété requises et des valeurs de propriété optionnelles. Par exemple, vous pouvez utiliser la classe objectClass de person pour représenter une entrée d’un utilisateur dans le système, et l’utilisateur dans le système doit généralement avoir des informations telles que le nom, le numéro de téléphone, le mot de passe, la description, etc. Comme montré sur l’image ci-dessous, pour personne, définissez le prénom et le nom de famille de l’utilisateur via cn et sn, ce qui est obligatoire, tandis que les autres attributs sont optionnels.

Voici une liste de certaines exigences couramment utilisées en objectClass qui sont requises.

  • compte :userid。
  • Organisation : O。
  • Personne : CN et SN.
  • OrganisationnelPersonne : Pareil que personne.
  • RôleOrganisationnel :cn。
  • organisationUnit :ou。
  • posixGroup :cn、gidNumber。
  • posixAccount :cn、gidNumber、homeDirectory、uid、uidNumber。

(Fin)




Précédent:OpenLDAP : Échec du démarrage du démon serveur OpenLDAP.
Prochain:Série Angular 9 (neuf) #id sélectionneur appliqué sur la page
Publié sur 19/05/2023 11:23:09 |
instruit
Merci d’avoir partagé~~~
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com