OpenLDAP-Befehlszusammenfassung
- ldapsearch: Suche nach OpenLDAP-Verzeichnisbaumeinträgen.
- ldapadd: Fügt Verzeichnisbaum-Einträge über das LDIF-Format hinzu.
- ldapdelete: Löscht OpenLDAP-Verzeichnisbaumeinträge.
- ldapmodify: Ändern Sie den OpenLDAP-Verzeichnisbaum-Eintrag.
- ldapwhoami: Validiert die Identität der OpenLDAP-Nutzer.
- ldapmodrdn: Bewertet den OpenLDAP-Verzeichnisbaum-DN-Eintrag.
- ldapcompare: Bestimmt, ob der DN-Wert und der angegebene Parameterwert zum selben Eintrag gehören.
- ldappasswd: Ändern Sie den Benutzereintrag im OpenLDAP-Verzeichnisbaum, um ein Passwort-Reset zu erreichen.
- slaptest: Verifiziere die Datei slapd.conf oder cn=konfigurationsverzeichnis.
- slapindex: Erstellt einen OpenLDAP-Verzeichnisbaum-Index, um Abfrageeffizienz zu gewährleisten.
- slapcat: Konvertiert Daten in LDIF-Dateien für OpenLDAP.
ldapadd-Befehl
Optionen | Beschreibung | -x | Führen Sie eine einfache Authentifizierung durch | -D | Das DN, das zum Binden des Servers verwendet wurde | -h | Die Adresse des Verzeichnisdienstes | -w | DN-Passwort binden | -f | Dateien, die LDIF-Dateien zur Eintragsergänzung verwenden. |
Zuerst bereiten wir eine test.ldif-Datei mit folgendem Befehl vor:
Der Inhalt ist wie folgt:
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
Fügen Sie folgende Befehle hinzu:
Nach Eingabe des Passworts wird es erfolgreich hinzugefügt, wie in der untenstehenden Abbildung gezeigt:
ldapmodifie-Befehl
Der Befehl ldapmodify ist fest und implementiert hauptsächlich verschiedene Modifikationsfunktionen über Konfigurationsdateien.
Die demo.ldif-Datei ist wie folgt, was bedeutet, dass der uidNumber-Parameter des Benutzers uid=xzz modifiziert wird.
ldappasswd-Kommando
ldappasswd öffnet eine Verbindung zum LDAP-Server und ändert das Passwort für den Eintrag.
Optionen | Beschreibung | -x | Führen Sie eine einfache Authentifizierung durch | -D | Das DN, das zum Binden des Servers verwendet wurde | -w | DN-Passwort binden | -S | Geben Sie das Passwort ein, wenn Sie aufgefordert werden | -s | pass um das Passwort auf pass zu setzen | -ein | Pass setzt Old Passwd zum Pass | -Ein | Prompt zur Einstellung des alten Passwd | -H | bezieht sich auf den zu bindenden Server | -Ich | Verwenden Sie die SASL-Sitzungsmethode |
ldapsearch-Befehl
ldap-Suchbefehl
[root@VM_0_9_centos ~]# ldapsearch -h
ldapsearch: option requires an argument -- 'h'
ldapsearch: unrecognized option -h
usage: ldapsearch [options] [filter [attributes...]]
where: filter RFC 4515-konforme LDAP-Suchfilter Attribute Whitespace-separierte Liste von Attributbeschreibungen Dies kann Folgendes umfassen: 1.1 Keine Attribute * alle Benutzerattribute + alle betrieblichen Attribute Suchoptionen: -ein Deref eines von nie (Standard), immer, suchen oder finden -Nur Attributnamen abrufen (ohne Werte) -b-basiertes Basis-DNS für die Suche -c kontinuierlicher Betriebsmodus (nicht bei Fehlern stoppen) -E [!] <ext>[=<extparam>] Sucherweiterungen (! gibt Kritikalität an) [!] domainScope (Domänenumfang) !dontUseCopy (Don't Use Copy) [!] mv=<filter> (RFC 3876 Filter für abgestimmte Werte) [!] pr=<size>[/prompt|noprompt] (RFC 2696 Seiten von Ergebnissen/Prompt) [!] sss=[-]<attr[:OID]>[/[-]<attr[:OID]>...] (RFC 2891 serverseitige Sortierung) [!] Untereinträge[=wahr|falsch] (RFC 3672 Untereinträge) [!] sync=ro[/<cookie>] (RFC 4533 LDAP Sync refreshOnly) rp[/<cookie>][/<slimit>] (refreshAndPersist) [!] vlv=<before>/<after>(/<offset><count>/|:<value>) (ldapv3-vlv-09 virtuelle Listenansichten) [!] deref=derefAttr:attr[,...] [; derefAttr:attr[,...] [; ...]] [!] <oid>[=:<b64value>] (generische Kontrolle; keine Antwortbehandlung) -f Dateileseoperationen aus 'Datei' -F-Präfix URL-Präfix für Dateien (Standard: file:///tmp/) -l begrenze das Zeitlimit (in Sekunden, oder "keine" oder "maximal") für die Suche -L-Druckantworten im LDIFv1-Format -LL druckt Antworten im LDIF-Format ohne Kommentare aus -LLL druckt Antworten im LDIF-Format ohne Kommentare aus und Version -M aktivieren Manage DSA IT-Steuerung (-MM, um kritisch zu machen) -P-Version Protokollversion (Standard: 3) -s Scope eins von Basis, Eins, Sub oder Children (Suchumfang) -S attr sortiere die Ergebnisse nach Attribut 'attr' -t Binärwerte in Dateien im temporären Verzeichnis schreiben -tt alle Werte in Dateien im temporären Verzeichnis schreiben -T Pfad schreibt Dateien in ein Verzeichnis, das durch den Pfad angegeben ist (Standard: /tmp) -u fügen Benutzerfreundliche Eintragsnamen in die Ausgabe hinzu -z-Größenbegrenzung (in Einträgen, oder "keine" oder "max") für die Suche Häufige Optionen: -d-Level setze das LDAP-Debugging-Level auf 'Level' -D binddn bind DN -e [!] <ext>[=<extparam>] Allgemeine Erweiterungen (! zeigt Kritikalität an) [!] assert=<filter> (RFC 4528; eine RFC 4515 Filterkette) [!] authzid=<authzid> (RFC 4370; "dn:<dn>" oder "u:<user>") [!] Ketten[=<resolveBehavior>[/<continuationBehavior>]] eines von "chainingPreferred", "chainingRequired", "EmpfehlungenBevorzugt", "EmpfehlungenErforderlich" [!] manageDSAit (RFC 3296) [!] Nein, nein Ppolicy [!] postread[=<attrs>] (RFC 4527; Komma-getrennte ATTR-Liste) [!] Vorlesen[=<attrs>] (RFC 4527; Komma-getrennte ATTR-Liste) [!] Entspann dich [!] Sessiontracking abandon, cancel, ignorieren (SIGINT sendet abandon/cancel, oder ignoriert die Reaktion; wenn kritisch, wartet nicht auf SIGINT. nicht wirklich Kontrollen) -h-Host-LDAP-Server -H URI LDAP Uniform Resource Identifier(s) -Ich benutze den SASL Interactive-Modus -n Zeig, was getan werden würde, aber tu es nicht wirklich -N Verwenden Sie Reverse DNS nicht, um den SASL-Hostnamen zu kanonisieren -O props SASL-Sicherheitseigenschaften -o <opt>[=<optparam>] allgemeine Optionen nettimeout=<timeout> (in Sekunden, oder "keine" oder "max") ldif-wrap=<width> (in Spalten, oder "nein" für kein Wrapping) -p-Portport auf einem LDAP-Server -Q verwenden Sie SASL Quiet Mode -R-Reich SASL-Reich -U authcid SASL-Authentifizierungsidentität -v läuft im Verbose-Modus (Diagnose auf Standardausgabe) -Informationen zur V-Druckversion (-nur VV) -w passwd-Bindepasswort (für einfache Authentifizierung) -W-Prompt für Passwort binden -x Einfache Authentifizierung -X-Authzid SASL-Autorisierungsidentität ("dn:<dn>" oder "u:<user>") -y Datei Passwort aus Datei lesen -Y Mech SASL-Mechanismus -Z-Start-TLS-Anfrage (-ZZ erfordert eine erfolgreiche Antwort) Der Befehl lautet wie folgt:
Die Abfrageergebnisse sind wie folgt:
Fragen Sie alle Nutzer an:
LDAP-Substantiverklärung
Objektklasse
Die LDAP-Objektklasse ist das in LDAP integrierte Datenmodell. Jede ObjektKlasse hat ihre eigene Datenstruktur, zum Beispiel haben wir eine ObjektKlasse namens "Telefonbuch", die definitiv viele eingebaute Attribute wie Name (uid), ID-Nummer (uidNumber), Einheitsname (gid), Heimadresse (homeDirectory) usw. Gleichzeitig gibt es auch eine ObjektKlasse namens "Classmate Record", die ein "Telefonbuch" besitzt. Einige Attribute (wie uid, homeDirectory) enthalten ebenfalls Attribute, die nicht im "Telefonbuch" enthalten sind (wie Beschreibung usw.).
Eintritt
Ein Eintrag kann als Eintrag bezeichnet werden, ein Eintrag ist ein Datensatz, eine einfache Speichereinheit in LDAP; Es kann auch als eine Sammlung von DNs und einer Menge von Attributen betrachtet werden. Beachten Sie, dass ein Eintrag mehrere objectClasses enthalten kann, zum Beispiel kann zhang3 gleichzeitig im "Telefonbuch" oder im "Classmate Record" existieren.
DN
Distinguished Name, der einzigartige Distinguished Name des Eintrags in LDAP, eine vollständige DN-Schreibweise: uid=zhang3, ou=People, dc=163, dc=com. Nur der Eintrag in LDAP ist vom LDAP-Server eindeutig.
LDAP-Suchfilter
Verwenden Sie den Filter, um nach LDAP zu suchen. Filter besteht im Allgemeinen aus einer Einheit wie (Attribut=Wert), zum Beispiel: (&(uid=ZHANGSAN)(Objektklasse=Person)) zeigt an, dass der LDAP-Eintrag des Suchbenutzers ZHANGSAN ist. Ein weiteres Beispiel ist: (&(|( uid= ZHANGSAN)(uid=LISI))(objectclass=person)), was darauf hinweist, dass die Suche nach einem Benutzer mit Such-ID ZHANGSAN oder LISI ist; Man kann * auch verwenden, um beliebige Werte darzustellen, wie (uid=ZHANG*SAN), und nach Einträgen mit UID-Werten suchen, die mit ZHANG beginnen und mit SAN enden. Außerdem kann es gemäß verschiedenen LDAP-Attributabgleichsregeln einen Filter wie folgt geben: (&(createtimestamp>=20050301000000)(createtimestamp<=20050302000000)), der anzeigt, dass die Sucherstellungszeit zwischen 20050301000000 und 20050302000000 liegt.
Im Filter bedeutet "&" "und"; “!” bedeutet "nicht"; “|” bedeutet "oder". Je nach Matching-Regeln können wir "=", "~=", ">=" und "<=" verwenden.
Basis-DN
Ein Basis-DN kann "dc=163,dc=com" oder "dc=People,dc=163,dc=com" sein. Da LDAP eine Baumdatenstruktur ist, beginnt die Suche von BaseDN nach der Angabe des basedn, und wir können den Suchumfang wie folgt angeben: nur search basedn (base), basedn direkte Unterebene (eine Ebene) und basedn auf allen Teilbaumebenen.
objectClass
In LDAP muss ein Eintrag ein objectClass-Attribut enthalten und mindestens einem Wert zugewiesen werden. Jeder Wert wird als Vorlage für die Datenspeicherung durch einen LDAP-Eintrag verwendet; Die Vorlage enthält ein Attribut, das dem Eintrag zugewiesen werden muss, sowie ein optionales Attribut. objectClass hat eine strenge Hierarchie, wobei Top und Alias oben stehen. Zum Beispiel ist die ObjektKlasse von organizationalPerson untergeordnet, und Person ist der oben untergeordnet.
objectClass lässt sich in die folgenden drei Kategorien unterteilen: Strukturell: wie Person und Organisation Einheit; Hilfsartikel: wie extensibeObject; Abstract: Zum Beispiel kann die abstrakte ObjektKlasse nicht direkt verwendet werden. Im OpenLDAP-Schema sind viele objectClasses definiert, und die Namen einiger häufig verwendeter objectClasses sind unten aufgeführt.
- Bericht
- Alias
- DC-Objekt
- Domäne
- ipHost
- Organisation
- organisatorische Rolle
- organisatorische Einheit
- Person
- organisatorische Person
- inetOrgPerson
- Wohnperson
- posixAccount
- posixGroup
ObjectClass ist eine Sammlung von Attributen, und LDAP kapselt viele gängige Objekte in menschlichen Organisationen und kapselt sie in Objektklassen. Zum Beispiel umfassen Personal Nachname (sn), Vorname (cn), Telefonnummer (telephoneNumber), Passwort (userPassword) und andere Attribute, und organizationalPerson ist die Erbklasse der Person; zusätzlich zu den oben genannten Attributen umfasst sie auch Titel, Postleitzahl (Postcode) und Postadresse (postalAddress) und andere Attribute.
Gegenstandstypen können leicht durch Objektklassen definiert werden. Jeder Eintrag kann direkt mehrere Objektklassen erben, die verschiedene Eigenschaften erben. Wenn es zwei Objektklassen mit demselben Attribut gibt, bleibt nach der Vererbung des Eintrags nur noch ein Attribut erhalten. Die Objektklasse legt außerdem fest, welche Eigenschaften grundlegende Informationen sind und enthalten müssen (Muss erforderlich): welche Eigenschaften erweiterte Informationen sind und enthalten können (May oder Optional).
Es gibt drei Arten von Objektklassen: Strukturell, Abstrakt und Hilfsobjekt. Strukturelle Typen sind die grundlegendsten Typen, die die grundlegenden Eigenschaften des Objektkörpers spezifizieren, und jeder Eintrag gehört zu und gehört nur zu einer strukturellen Objektklasse. Abstrakte Typen können strukturelle Typen oder andere abstrakte Typen-Eltern sein, die die gemeinsamen Teile von Objekteigenschaften zusammenfügen, sogenannte Vorlagen für andere Klassen, und Einträge können abstrakte Objektklassen nicht direkt integrieren. Der Hilfstyp spezifiziert die erweiterten Eigenschaften der Objektentität. Obwohl jeder Bar nur zu einer strukturellen Objektklasse gehört, kann er gleichzeitig mehreren Hilfsobjektklassen zugeordnet werden.
Die Objektklasse selbst kann sich gegenseitig erben, sodass die Wurzelklasse der Objektklasse die oberste abstrakte Objektklasse ist. Nehmen wir die häufig verwendeten Personentypen als Beispiel, so sieht ihre Erbbeziehung wie in der Abbildung dargestellt aus:
Die eingebauten Attribute von Accout sind: userid, description, host, localityName, organizationName, organizationalUnitName, siehe Also;
Die eingebauten Attribute von inetOrgPerson sind cn, sn, Beschreibung, siehe Also, telephoneNumber, userPassword, destinationIndicator, facsimileTelephoneNumber, internationaliSDNNumber, l, ou, physicalDeliveryOfficeName、postOfficeBox、postalAddress、postalCode、preferredDeliveryMethod、registeredAddress、st、street、telephoneNumber、teletexTerminalIdentifier、 telexNummer、Titel、X121Adresse、Audio、UsinessCategory、AutoLicense、Abteilungsnummer、isplayName、employeeNumber、employeeType、givenName、homePhone、homePostalAddress、Initials、 jpegPhoto, labeledURI, mail, manager, mobile, o, pager, photo, preferredLanguage, roomNumber, secretary, uid, userCertificate usw.;
Wie du siehst, setzt accout nur einige wenige notwendige und nützliche Attribute vor (es reicht definitiv aus, um die Login-Verifizierung abzuschließen), während inetOrgPerson viele integrierte Attribute wie Telefonnummer, Handynummer, Straßenadresse, E-Mail-Nummer, E-Mail-Adresse, Zimmernummer, Avatar, Manager, Mitarbeiternummer usw. enthält.
Daher wird bei der Konfiguration von LDAP empfohlen, den objectClass-Typ auf accout zu setzen, wenn es nur zur Überprüfung des Logins gedacht ist, und objectClass auf inetOrgPerson zu setzen, wenn Sie einen großen und umfassenden Schatz an Mitarbeiterinformationen erstellen möchten
Hier benutze ich normalerweise 'inetOrgPerson', 'posixAccount', 'shadowAccount'.
Die erforderlichen Attribute des Kontos sind userid, während die erforderlichen Attribute von posixAccount cn, gidNumber, homeDirectory, uid, uidNumber sind; Das erforderliche Attribut von shadowAccount ist uid, und zu den optionalen Attributen gehören shadowExpire, shadowInactive, shadowMax, shadowMin, userPassword usw. Die oberste erforderliche Eigenschaft ist objectClass (es ist zu sehen, dass top- und andere objectClasses vererbte Beziehungen sind).
Attribut
Attribute ähneln Variablen in der Programmierung und können zugewiesen werden. Viele häufig verwendete Attribute werden in OpenLDAP deklariert (Benutzer können auch eigene Attribute definieren). Die gängigen Bedeutungen von Attributen sind wie folgt:
- c: Land.
- CN: Common Name, der sich auf den Namen eines Objekts bezieht. Wenn es sich auf eine Person bezieht, muss ihr vollständiger Name verwendet werden.
- DC:Domain-Komponente, oft verwendet, um einen Teil eines Domainnamens zu bezeichnen.
- givenName: bezieht sich auf den Namen einer Person, nicht auf einen Nachnamen.
- l: Bezieht sich auf einen Ortsnamen, wie zum Beispiel den Namen einer Stadt oder eines anderen geografischen Gebiets.
- Mail: E-Mail-Adresse.
- o:organizationName, was sich auf den Namen einer Organisation bezieht.
- ou:organizationalUnitName, was sich auf den Namen einer organisatorischen Einheit bezieht.
- SN: Nachname bezieht sich auf den Nachnamen einer Person.
- telephoneNumber: Die Telefonnummer, die den Code des Landes tragen sollte, in dem sie sich befindet.
Tipp: ObjectClass ist ein spezielles Attribut, das neben sich selbst auch andere verwendete Attribute enthält.
Für verschiedene objectClasses gibt es in der Regel einige erforderliche Eigenschaftswerte und einige optionale Eigenschaftswerte. Zum Beispiel kann man die Objektklasse von Person verwenden, um einen Eintrag für einen Benutzer im System darzustellen, und der Benutzer im System benötigt in der Regel Informationen wie Name, Telefonnummer, Passwort, Beschreibung usw. Wie auf dem untenstehenden Bild gezeigt, setzen Sie für Person den Vor- und Nachnamen des Nutzers über cn und sn, was verpflichtend ist, während andere Attribute optional sind.
Im Folgenden eine Liste einiger häufig verwendeter objectClass-Anforderungen, die erforderlich sind.
- account:userid。
- Organisation:o。
- Person: CN und SN.
- organisatorische Person: Dasselbe wie Person.
- organizationalRole:cn。
- organizationUnit:ou。
- posixGroup:cn、gidNumber。
- posixAccount:cn、gidNumber、homeDirectory、uid、uidNumber。
(Ende)
|