OpenLDAP-commandosamenvatting
- ldapsearch: Zoek naar OpenLDAP-directoryboomvermeldingen.
- ldapadd: Voegt directoryboomvermeldingen toe via LDIF-formaat.
- ldapdelete: Verwijdert OpenLDAP-directoryboomvermeldingen.
- ldapmodify: Wijzig de OpenLDAP-directoryboom-entry.
- ldapwhoami: Valideert de identiteit van OpenLDAP-gebruikers.
- ldapmodrdn: Beoordeelt de OpenLDAP-directoryboom DN-invoer.
- ldapcompare: Bepaalt of de DN-waarde en de gespecificeerde parameterwaarde tot dezelfde invoer behoren.
- ldappasswd: Pas de gebruikersinvoer van de OpenLDAP-directoryboom aan om een wachtwoordreset te bereiken.
- slaptest: Controleer het slapd.conf-bestand of de cn=configuration-map.
- slapindex: Maakt een OpenLDAP-directoryboomindex aan om query-efficiëntie te bieden.
- slapcat: Zet data om naar LDIF-bestanden voor OpenLDAP.
ldapadd-commando
Opties | beschrijving | -x | Voer eenvoudige authenticatie uit | -D | De DN die werd gebruikt om de server te binden | -h | Het adres van de directoryservice | -w | Bind DN-wachtwoord | -f | Bestanden die LDIF-bestanden gebruiken voor invoeroptelling |
Eerst bereiden we een test.ldif-bestand voor met het volgende commando:
De inhoud is als volgt:
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
Voeg commando's toe als volgt:
Na het invoeren van het wachtwoord wordt het succesvol toegevoegd, zoals weergegeven in de onderstaande figuur:
ldapmodifie-commando
Het ldapmodifie-commando is vast en implementeert voornamelijk verschillende aanpassingsfuncties via configuratiebestanden.
Het demo.ldif-bestand is als volgt, wat betekent dat de uidNumber-parameter van de gebruiker uid=xzz is aangepast.
ldappasswd commando
ldappasswd opent een verbinding met de LDAP-server en verandert het invoerwachtwoord.
Opties | beschrijving | -x | Voer eenvoudige authenticatie uit | -D | De DN die werd gebruikt om de server te binden | -w | Bind DN-wachtwoord | -S | Voer het wachtwoord in wanneer daarom wordt gevraagd | -s | pass om het wachtwoord op pass in te stellen | -a | Pass zet oude Passwd om te passeren | -A | Zet de instelling van oude passwd aan | -H | verwijst naar de server die gebonden moet worden | -Ik | Gebruik de SASL-sessiemethode |
ldapsearch-commando
LDAP-zoekcommando
[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 conforme LDAP zoekfilter attributen witruimte-gescheiden lijst van attribuutbeschrijvingen Dit kan onder meer zijn: 1.1 Geen Attributen * alle gebruikersattributen + alle operationele attributen Zoekopties: -een deref van never (standaard), altijd, zoeken, of vinden -A alleen attribuutnamen ophalen (geen waarden) -b gebaseerd op basis DNS voor zoeken -c continue bedrijfsmodus (niet stoppen bij fouten) -E [!] <ext>[=<extparam>] zoekextensies (! duidt kritischheid aan) [!] domainScope (domeinscope) !dontUseCopy (gebruik geen copy) [!] mv=<filter> (RFC 3876 filter voor gematchte waarden) [!] pr=<size>[/prompt|noprompt] (RFC 2696 gepageerde resultaten/prompt) [!] sss=[-]<attr[:OID]>[/[-]<attr[:OID]>...] (RFC 2891 serverzijde sortering) [!] subentrees[=true|false] (RFC 3672 subitems) [!] sync=ro[/<cookie>] (RFC 4533 LDAP Sync refreshOnly) rp[/<cookie>][/<slimit>] (refreshAndPersist) [!] vlv=<before>/<after>(/<offset><count>/|:<value>) (LDAPV3-VLV-09 virtuele lijstweergaven) [!] deref=derefAttr:attr[,...] [; derefAttr:attr[,...] [; ...]] [!] <oid>[=:<b64value>] (generieke controle; geen responsbehandeling) -f bestandsleesoperaties vanuit 'bestand' -F-prefix URL-prefix voor bestanden (standaard: file:///tmp/) -l limiet tijdslimiet (in seconden, of "geen" of "maximaal") voor zoeken -L print antwoorden in LDIFv1-formaat -LL print antwoorden in LDIF-formaat zonder commentaar -LLL print antwoorden in LDIF-formaat zonder opmerkingen en versie -M schakel Manage DSA IT-controle in (-MM om kritisch te maken) -P-versie protocolversie (standaard: 3) -s scope één van basis, één, sub of kinderen (zoekscope) -S attr sorteer de resultaten op attribuut 'attr' -t schrijf binaire waarden naar bestanden in een tijdelijke map -tt schrijf alle waarden naar bestanden in een tijdelijke map -T pad schrijf bestanden naar map gespecificeerd door het pad (standaard: /tmp) -u vermeld gebruikersvriendelijke invoernamen in de uitvoer -z limiet op groottelimiet (in items, of "geen" of "max") voor zoeken Veelvoorkomende opties: -d niveau Stel het LDAP-debuggingniveau in op 'niveau' -D binddn bind DN -e [!] <ext>[=<extparam>] algemene uitbreidingen (! duidt op criticaliteit) [!] assert=<filter> (RFC 4528; een RFC 4515 filterstring) [!] authzid=<authzid> (RFC 4370; "dn:<dn>" of "u:<user>") [!] Chaining[=<resolveBehavior>[/<continuationBehavior>]] één van "chainingPreferred", "chainingRequired", "verwijzingenVoorkeur", "verwijzingenVereist" [!] manageDSAit (RFC 3296) [!] Nee Ppolicy [!] postread[=<attrs>] (RFC 4527; komma-gescheiden attr-lijst) [!] voorlezen[=<attrs>] (RFC 4527; komma-gescheiden attr-lijst) [!] Ontspan [!] Sessietracking abandon, cancel, negeer (SIGINT stuurt abandon/cancel, of negeert de reactie; als het kritiek is, wacht je niet op SIGINT. niet echt controles) -h host LDAP-server -H URI LDAP Uniform Resource Identifier(s) -Ik gebruik SASL Interactieve modus -n laat zien wat er gedaan zou worden, maar doe het niet echt -N gebruik geen reverse DNS om SASL-hostnaam te canonicaliseren -O steun SASL beveiligingseigenschappen -o <opt>[=<optparam>] algemene opties Nettimeout=<timeout> (in seconden, of "geen" of "max") ldif-wrap=<width> (in kolommen, of "nee" voor geen wrapping) -p poortpoort op LDAP-server -Q gebruik SASL Stille modus -R rijk SASL rijk -U authcid SASL authenticatie-identiteit -v draait in verbose modus (diagnostiek naar standaarduitgang) -V-print versie-informatie (-VV alleen) -w passwd bind wachtwoord (voor eenvoudige authenticatie) -W-prompt voor bindwachtwoord -x Eenvoudige authenticatie -X authzid SASL-autorisatie-identiteit ("dn:<dn>" of "u:<user>") -y bestand Wachtwoord uit bestand lezen -Y mech SASL-mechanisme -Z Start TLS-verzoek (-ZZ vereist een succesvolle reactie) Het commando is als volgt:
De zoekresultaten zijn als volgt:
Vraag alle gebruikers:
LDAP-zelfstandig naamwoordverklaring
Objectklasse
De LDAP-objectklasse is het datamodel dat in LDAP is ingebouwd. Elke objectClass heeft zijn eigen datastructuur, bijvoorbeeld hebben we een objectClass genaamd "Phone Book", die zeker veel ingebouwde attributen zal hebben, zoals naam (uid), ID-nummer (uidNumber), eenheidsnaam (gid), thuisadres (homeDirectory), enzovoort. Tegelijkertijd is er ook een objectClass genaamd "Classmate Record", die een "telefoonboek" heeft. Sommige attributen (zoals uid, homeDirectory) hebben ook attributen die niet in het "telefoonboek" staan (zoals beschrijving, enz.).
Inschrijving
Een entry kan een entry worden genoemd, een entry is een record, een basisopslagunit in LDAP; Het kan ook worden gezien als een verzameling DN's en een set attributen. Let op dat een invoer meerdere objectClasses kan bevatten, bijvoorbeeld kan zhang3 tegelijk in het "Telefoonboek" of in het "Classmate Record" bestaan.
DN
Distinguished Name, de unieke onderscheidende naam van de vermelding in LDAP, een volledige DN-spelling: uid=zhang3, ou=People, dc=163, dc=com. Alleen de vermelding in LDAP is uniek door de LDAP-server.
LDAP Zoekfilter
Gebruik een filter om te zoeken naar LDAP. Filter bestaat doorgaans uit een eenheid zoals (attribuut=waarde), bijvoorbeeld: (&(uid=ZHANGSAN)(objectclass=person)) geeft aan dat de LDAP-invoer van de zoekgebruiker ZHANGSAN is. Een ander voorbeeld is: (&(|( uid= ZHANGSAN)(uid=LISI))(objectclass=person)), wat aangeeft dat de zoekopdracht naar een gebruiker met een zoek-id ZHANGSAN is, of LISI; Je kunt * ook gebruiken om elke waarde weer te geven, zoals (uid=ZHANG*SAN), en zoeken naar vermeldingen met uid-waarden beginnend met ZHANG en eindigend met SAN. Bovendien kan er volgens verschillende LDAP-attribuutmatchingsregels een Filter zijn als volgt: (&(createtimestamp>=20050301000000)(createtimestamp<=20050302000000)), wat aangeeft dat de zoekcreatietijd tussen 20050301000000 en 20050302000000 ligt.
In Filter betekent "&" "en"; “!” betekent "niet"; “|” betekent "of". Afhankelijk van de matchingregels kunnen we "=", "~=", ">=" en "<=" gebruiken.
Basis DN
Een basis-DN kan zijn "dc=163,dc=com" of "dc=People,dc=163,dc=com". Aangezien LDAP een boomdatastructuur is, begint de zoekopdracht bij BaseDN nadat de basedn is gespecificeerd, en we kunnen de zoekscope specificeren als: alleen search basedn (basis), based dn direct sub level (één niveau), en basedn all subboomniveau.
objectClass
In LDAP moet een item een objectClass-attribuut bevatten en ten minste één waarde worden toegewezen. Elke waarde wordt gebruikt als sjabloon voor gegevensopslag door een LDAP-invoer; Het sjabloon bevat een attribuut dat aan de invoer moet worden toegewezen en een optioneel attribuut. objectClass heeft een strikte hiërarchie, met top en alias bovenaan. Bijvoorbeeld, de objectKlasse van organizationalPerson is ondergeschikt aan persoon, en persoon is ondergeschikt aan top.
objectClass kan worden onderverdeeld in de volgende drie categorieën: Structureel: zoals persoon en organisatie Eenheid; Hulp: zoals extensibeObject; Abstract: Bijvoorbeeld, de abstracte objectClass kan niet direct worden gebruikt. Er zijn veel objectClasses gedefinieerd in het OpenLDAP-schema, en de namen van enkele veelgebruikte objectClasses worden hieronder vermeld.
- Verslag
- Alias
- dcobject
- domein
- ipHost
- Organisatie
- organisatorische rol
- organisatorische Eenheid
- persoon
- organisatorischPersoon
- inetOrgPerson
- residentieelPersoon
- posixAccount
- posixGroup
ObjectClass is een verzameling attributen, en LDAP kapselt veel veelvoorkomende objecten in menselijke organisaties en kapt ze in objectklassen. Bijvoorbeeld, personeel omvat achternaam (sn), voornaam (cn), telefoonnummer (telephoneNumber), wachtwoord (userPassword) en andere attributen, en organizationalPerson is de erfenisklasse van persoon; naast bovenstaande attributen omvat het ook titel, postcode (postcode) en postadres (postadres) en andere eigenschappen.
Itemtypes kunnen eenvoudig worden gedefinieerd via objectklassen. Elke invoer kan direct meerdere objectklassen erven, die verschillende eigenschappen erven. Als er 2 objectklassen met hetzelfde attribuut zijn, blijft er slechts één attribuut behouden nadat de invoer is geërfd. De objectklasse specificeert ook welke eigenschappen basisinformatie zijn en moeten bevatten (Moet Vereist): welke eigenschappen uitgebreide informatie zijn en kunnen bevatten (Mogelijk of Optioneel).
Er zijn drie typen objectklassen: Structureel, Abstract en Hulp. Structurele types zijn de meest basale types, die de basiseigenschappen van het objectlichaam specificeren, en elke invoer behoort tot en behoort tot slechts één structurele objectklasse. Abstracte types kunnen structurele types zijn of andere abstracte type-ouders, die de gemeenschappelijke delen van objecteigenschappen samen organiseren, templates genoemd voor andere klassen, en entries kunnen abstracte objectklassen niet direct integreren. Het hulptype specificeert de uitgebreide eigenschappen van de objectentiteit. Hoewel elke balk slechts tot één structurele objectklasse behoort, kan hij tegelijkertijd tot meerdere hulpobjectklassen behoren.
De objectklasse zelf kan elkaar erven, dus de wortelklasse van de objectklasse is de bovenste abstracte objectklasse. Neem de veelgebruikte typen mensen als voorbeeld, hun erfrelatie is zoals weergegeven in de figuur:
De ingebouwde attributen van accout zijn: userid, description, host, localityName, organizationName, organizationalUnitName, zie Ook;
De ingebouwde attributen van inetOrgPerson zijn cn, sn, beschrijving, zie Ook, telephoneNumber, userPassword, destinationIndicator, facsimileTelephoneNumber, 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, secretary, uid, userCertificate, enz.;
Zoals je ziet, stelt accout slechts een paar noodzakelijke en nuttige attributen in (het is zeker genoeg om de inlogverificatie te voltooien), terwijl inetOrgPerson veel ingebouwde attributen heeft, zoals telefoonnummer, mobiel nummer, straatadres, e-mailnummer, e-mailadres, kamernummer, avatar, manager, werknemernummer, enzovoort.
Daarom wordt bij het configureren van LDAP aanbevolen om het objectClass-type op accout in te stellen als dit alleen bedoeld is om inloggen te verifiëren, en objectClass in te stellen op inetOrgPerson als je een grote en uitgebreide schat aan medewerkersinformatie wilt creëren
Hier gebruik ik meestal 'inetOrgPerson', 'posixAccount', 'shadowAccount'.
De vereiste attributen van het account zijn userid, terwijl de vereiste attributen van posixAccount cn, gidNumber, homeDirectory, uid, uidNumber zijn; Het vereiste attribuut van shadowAccount is uid, en de optionele attributen zijn onder andere shadowExpire, shadowInactive, shadowMax, shadowMin, userPassword, enzovoort. De vereiste top-eigenschap is objectClass (het is te zien dat top en andere objectClasses geërfde relaties zijn).
Attribuut
Attributen lijken op variabelen in programmeren en kunnen worden toegewezen. Veel veelgebruikte attributen worden gedeclareerd in OpenLDAP (gebruikers kunnen ook hun eigen attributen definiëren). Veelvoorkomende betekenissen van het attribuut zijn als volgt:
- c: Land.
- CN: Common Name, die verwijst naar de naam van een object. Als het naar een persoon verwijst, moet de volledige naam worden gebruikt.
- DC:domeincomponent, vaak gebruikt om te verwijzen naar een deel van een domeinnaam.
- GivenName: verwijst naar de naam van een persoon, niet naar een achternaam.
- l: Verwijst naar een plaatsnaam, zoals de naam van een stad of ander geografisch gebied.
- mail: E-mailadres.
- o:organizationName, wat verwijst naar de naam van een organisatie.
- ou:organizationalUnitName, wat verwijst naar de naam van een organisatorische eenheid.
- SN: Achternaam, verwijst naar iemands achternaam.
- telephoneNumber: Het telefoonnummer, dat de code van het land waarin het zich bevindt moet bevatten.
Tip: objectClass is een speciaal attribuut dat naast zichzelf ook andere gebruikte attributen bevat.
Voor verschillende objectClasses zijn er meestal enkele vereiste eigenschapswaarden en enkele optionele eigenschapswaarden. Je kunt bijvoorbeeld de objectClass of person gebruiken om een invoer voor een gebruiker in het systeem te representeren, en de gebruiker in het systeem moet meestal informatie hebben zoals naam, telefoonnummer, wachtwoord, beschrijving, enzovoort. Zoals te zien is op de onderstaande afbeelding, stel voor persoon de voor- en achternaam van de gebruiker in via cn en sn, wat verplicht is, terwijl andere attributen optioneel zijn.
Hieronder volgt een lijst van enkele veelgebruikte objectClass-vereisten die vereist zijn.
- account:userid。
- organisatie:o。
- Persoon: CN en SN.
- organisatoralPerson: Hetzelfde als persoon.
- organizationalRole:cn。
- organisatieEenheid: ou。
- posixGroup:cn、gidNumber。
- posixAccount:cn、gidNumber、homeDirectory、uid、uidNumber。
(Einde)
|