Hvis du arbejder i et mellemstort til stort firma, interagerer du sandsynligvis dagligt med LDAP.
uanset om dette er på en domænecontroller eller på en OpenLDAP-server, er LDAP-protokollen meget nyttig til centralisering af godkendelse.
Når din LDAP-mappe vokser, kan du dog gå tabt i alle de poster, du muligvis skal administrere.
heldigvis er der en kommando, der hjælper dig med at søge efter poster i et LDAP-katalogtræ : ldapsearch.
i denne vejledning skal vi se, hvordan du nemt kan søge LDAP ved hjælp af ldapsearch.
vi vil også gennemgå indstillingerne fra kommandoen for at udføre avancerede LDAP-søgninger.
Indholdsfortegnelse
- søg LDAP ved hjælp af ldapsearch
- Søg LDAP med admin-konto
- kørsel af LDAP-søgninger med filtre
- Find alle objekter i katalogtræet
- find brugerkonti ved hjælp af ldapsearch
- og operatør, der bruger ldapsearch
- eller operatør, der bruger ldapsearch
- Negationsfiltre ved hjælp af ldapsearch
- find LDAP-serverkonfiguration ved hjælp af ldapsearch
- brug af jokertegn i LDAP-søgninger
- Ldapsearch Advanced Options
- LDAP-udvidelige Matchfiltre
- Supercharging standard operatorer
- konklusion
søg LDAP ved hjælp af ldapsearch
den nemmeste måde at søge LDAP på er at bruge ldapsearch med indstillingen “-h” til simpel godkendelse og angive søgebasen med “-B”.
Hvis du ikke kører søgningen direkte på LDAP-serveren, skal du angive værten med “- H” – indstillingen.
$ ldapsearch -x -b <search_base> -H <ldap_host>
som et eksempel, lad os sige, at du har en OpenLDAP-server installeret og kører på 192.168.178.29-værten på dit netværk.
Hvis din server accepterer anonym godkendelse, kan du udføre en LDAP-søgeforespørgsel uden binding til administratorkontoen.
$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29
som du kan se, hvis du ikke angiver nogen filtre, LDAP-klienten antager, at du vil køre en søgning på alle objektklasser i dit katalogtræ.
som følge heraf vil du blive præsenteret med en masse information. Hvis du vil begrænse de præsenterede oplysninger, vil vi forklare LDAP-filtre i næste kapitel.
Søg LDAP med admin-konto
i nogle tilfælde kan du køre LDAP-forespørgsler som admin-konto for at få yderligere oplysninger præsenteret for dig.
for at opnå dette skal du foretage en bindingsanmodning ved hjælp af administratorkontoen for LDAP-træet.
for at søge LDAP ved hjælp af administratorkontoen skal du udføre “ldapsearch”- forespørgslen med “- D” – indstillingen for bind DN og “- V” for at blive bedt om adgangskoden.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W
lad os som et eksempel sige, at din administratorkonto har følgende fremtrædende navn : “cn=admin,dc=devconnected,dc=com”.
for at udføre en LDAP-søgning som denne konto skal du køre følgende forespørgsel
$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29 -D "cn=admin,dc=devconnected,dc=com" -W
når du kører en LDAP-søgning som administratorkonto, kan du blive udsat for brugerkrypterede adgangskoder, så sørg for, at du kører din forespørgsel privat.
kørsel af LDAP-søgninger med filtre
kørsel af en almindelig LDAP-søgeforespørgsel uden filtre vil sandsynligvis være spild af tid og ressourcer.
det meste af tiden vil du køre en LDAP-søgeforespørgsel for at finde bestemte objekter i dit LDAP-katalogtræ.
for at søge efter en LDAP-post med filtre kan du tilføje dit filter i slutningen af ldapsearch-kommandoen : til venstre angiver du objekttypen og til højre objektværdien.
Valgfrit kan du angive de attributter, der skal returneres fra objektet (brugernavnet, brugeradgangskoden osv.)
$ ldapsearch <previous_options> "(object_type)=(object_value)" <optional_attributes>
Find alle objekter i katalogtræet
for at returnere alle objekter, der er tilgængelige i dit LDAP-træ, kan du tilføje filteret “objectclass” og et jokertegn “*” for at angive, at du vil returnere alle objekter.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=*"
Når du udfører denne forespørgsel, vil du blive præsenteret for alle objekter og alle attributter, der er tilgængelige i træet.
find brugerkonti ved hjælp af ldapsearch
lad os f.eks. sige, at du vil finde alle brugerkonti i LDAP-katalogtræet.
som standard vil brugerkonti sandsynligvis have den strukturelle objektklasse “konto”, som kan bruges til at indsnævre alle brugerkonti.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account"
som standard returnerer forespørgslen alle tilgængelige attributter for den givne objektklasse.
som angivet i det foregående afsnit kan du tilføje valgfrie attributter til din forespørgsel, hvis du vil indsnævre din søgning.
for eksempel, hvis du kun er interesseret i brugeren CN, UID og hjemmemappe, vil du køre følgende LDAP-søgning
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account" cn uid homeDirectory
fantastisk, du har med succes udført en LDAP-søgning ved hjælp af filtre og attributvælgere!
og operatør, der bruger ldapsearch
for at have flere filtre adskilt af “og” operatører, skal du vedlægge alle betingelserne mellem parenteser og have et “&” tegn skrevet i begyndelsen af forespørgslen.
$ ldapsearch <previous_options> "(&(<condition_1>)(<condition_2>)...)"
lad os for eksempel sige, at du vil finde alle poster har en “objectclass”, der er lig med “konto” og en “uid”, der er lig med “john”, Du vil køre følgende forespørgsel
$ ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"
eller operatør, der bruger ldapsearch
for at få flere filtre adskilt af “eller” operatører, skal du vedlægge alle betingelserne mellem parenteser og have et “|” tegn skrevet i begyndelsen af forespørgslen.
$ ldapsearch <previous_options> "(|(<condition_1>)(<condition_2>)...)"
Hvis du f.eks. vil finde alle poster, der har en objektklasse af typen “konto” eller eller type “organisatorisk rolle”, vil du køre følgende forespørgsel
$ ldapsearch <previous_options> "(|(objectclass=account)(objectclass=organizationalRole))"
Negationsfiltre ved hjælp af ldapsearch
i nogle tilfælde vil du negativt matche nogle af posterne i din LDAP mappetræ.
for at have et negativt matchfilter skal du vedlægge din tilstand (er) med en “!”karakter og har betingelser adskilt ved at omslutte parentes.
$ ldapsearch <previous_options> "(!(<condition_1>)(<condition_2>)...)"
Hvis du for eksempel vil matche alle poster, der ikke har en “cn” attribut af værdi “john”, vil du skrive følgende forespørgsel
$ ldapsearch <previous_options> "(!(cn=john))"
find LDAP-serverkonfiguration ved hjælp af ldapsearch
en avanceret brug af ldapsearch-kommandoen er at hente konfigurationen af dit LDAP-træ.
Hvis du er bekendt med openldap, ved du, at der er et globalt konfigurationsobjekt, der sidder øverst i dit LDAP-hierarki.
i nogle tilfælde vil du muligvis se attributter for din LDAP-konfiguration for at ændre adgangskontrol eller for at ændre rodadministratoradgangskoden for eksempel.
for at søge efter LDAP-konfigurationen skal du bruge kommandoen “ldapsearch” og angive “cn=config” som søgebase for dit LDAP-træ.
for at køre denne søgning skal du bruge indstillingen “-Y” og angive “ekstern” som godkendelsesmekanisme.
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config
Bemærk : Denne kommando skal køres direkte på serveren, ikke fra en af dine LDAP-klienter.
som standard returnerer denne kommando mange resultater, da den vender tilbage skemaer og moduler.
Hvis du vil begrænse din søgning til databasekonfigurationer, kan du angive objektklassen “olcDatabaseConfig” med ldapsearch.
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectclass=olcDatabaseConfig)"
brug af jokertegn i LDAP-søgninger
en anden effektiv måde at søge gennem en liste over LDAP-poster er at bruge jokertegn som stjernen (“*”).
jokertegnet har samme funktion som den stjerne, du bruger i regeks : det bruges til at matche enhver attribut, der starter eller slutter med en given substring.
$ ldapsearch <previous_options> "(object_type)=*(object_value)"$ ldapsearch <previous_options> "(object_type)=(object_value)*"
som et eksempel, lad os sige, at du vil finde alle poster, der har en attribut “uid”, der starter med bogstavet “j”.
$ ldapsearch <previous_options> "uid=jo*"
Ldapsearch Advanced Options
i denne tutorial, du lært om grundlæggende ldapsearch muligheder, men der er mange andre, der kan være interesseret i at du.
LDAP-udvidelige Matchfiltre
udvidelige LDAP-matchfiltre bruges til at overbelaste eksisterende operatorer (f.eks. ligestillingsoperatoren) ved at angive den sammenligningstype, du vil udføre.
Supercharging standard operatorer
for at supercharge en LDAP-operatør skal du bruge syntaksen”:=”.
$ ldapsearch <previous_options> "<object_type>:=<object_value>"
for eksempel, hvis du vil søge efter alle poster, har en “cn”, der er lig med “john”, vil du køre følgende kommando
$ ldapsearch <previous_options> "cn:=john"# Which is equivalent to$ ldapsearch <previous_options> "cn=john"
som du sikkert har bemærket, kører søgningen på “john” eller på “JOHN” det samme nøjagtige resultat.
som en konsekvens, kan du begrænse resultaterne til” john ” eksakt match, hvilket gør søgningen case sensitive.
Ved hjælp af ldapsearch kan du tilføje yderligere filtre adskilt af “:” tegn.
$ ldapsearch <previous_options> "<object_type>:<op1>:<op2>:=<object_value>"
for eksempel for at have en søgning, der er store og små bogstaver, vil du køre følgende kommando
$ ldapsearch <previous_options> "cn:caseExactMatch:=john"
Hvis du ikke er bekendt med LDAP-matchfiltre, her er en liste over alle de operatører, der er tilgængelige for dig.
konklusion
i denne vejledning lærte du, hvordan du kan søge i et LDAP-katalogtræ ved hjælp af kommandoen ldapsearch.
du har set det grundlæggende i at søge grundlæggende poster og attributter samt opbygge komplekse matchende filtre med operatører (og, eller og negative operatører).
du lærte også, at det er muligt at overbelaste eksisterende operatører ved at bruge udvidelige matchindstillinger og specificere den brugerdefinerede operatør, der skal bruges.
Hvis du er interesseret i avanceret systemadministration, har vi et komplet afsnit dedikeret til det på hjemmesiden, så sørg for at tjekke det ud!