så här söker du LDAP med ldapsearch (With Examples)

Om du arbetar i ett medium till stort företag interagerar du förmodligen dagligen med LDAP.

oavsett om det här är på en Windows-domänkontrollant eller på en Linux OpenLDAP-server är LDAP-protokollet mycket användbart för att centralisera autentisering.

men när din LDAP-katalog växer kan du gå vilse i alla poster som du kanske måste hantera.

lyckligtvis finns det ett kommando som hjälper dig att söka efter poster i ett LDAP-katalogträd : ldapsearch.

i denna handledning kommer vi att se hur du enkelt kan söka LDAP med ldapsearch.

Vi kommer också att granska alternativen som tillhandahålls av kommandot för att utföra avancerade LDAP-sökningar.

Innehållsförteckning

Sök LDAP med ldapsearch

det enklaste sättet att söka LDAP är att använda ldapsearch med alternativet ”-x” för enkel autentisering och ange sökbasen med ”-b”.

Om du inte kör sökningen direkt på LDAP-servern måste du ange värden med alternativet ”- H”.

$ ldapsearch -x -b <search_base> -H <ldap_host>

som ett exempel, låt oss säga att du har en OpenLDAP-server installerad och körs på 192.168.178.29 värd för ditt nätverk.

om din server accepterar anonym autentisering kan du utföra en LDAP-sökfråga utan att binda till administratörskontot.

$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29
LDAP-sökning grundläggande fråga

som du kan se, om du inte anger några filter, ldap-klienten antar att du vill köra en sökning på alla objektklasser i ditt katalogträd.

som en konsekvens kommer du att presenteras med mycket information. Om du vill begränsa informationen som presenteras kommer vi att förklara LDAP-filter i nästa kapitel.

Sök LDAP med administratörskonto

i vissa fall kanske du vill köra LDAP-frågor som administratörskonto för att få ytterligare information presenterad för dig.

för att uppnå det måste du göra en bindningsförfrågan med administratörskontot för LDAP-trädet.

för att söka i LDAP med administratörskontot måste du köra ”ldapsearch”- frågan med alternativet ”- D” för bind DN och ”- W” för att bli ombedd att ange lösenordet.

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W

låt oss till exempel säga att ditt administratörskonto har följande utmärkta namn:”cn=admin, dc=devconnected,dc=com”.

För att utföra en LDAP-sökning som detta konto måste du köra följande fråga

$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29 -D "cn=admin,dc=devconnected,dc=com" -W 
ldap-sökning med adminkonto

När du kör en LDAP-sökning som administratörskonto kan du bli utsatt för användarkrypterade lösenord, så se till att du kör din fråga privat.

att köra LDAP-sökningar med filter

att köra en vanlig LDAP-sökfråga utan filter är sannolikt slöseri med tid och resurs.

För det mesta vill du köra en LDAP-sökfråga för att hitta specifika objekt i ditt LDAP-katalogträd.

för att söka efter en LDAP-post med filter kan du lägga till ditt filter i slutet av kommandot ldapsearch : till vänster anger du objekttypen och till höger objektvärdet.

Alternativt kan du ange attributen som ska returneras från objektet (användarnamnet, användarlösenordet etc.)

$ ldapsearch <previous_options> "(object_type)=(object_value)" <optional_attributes>

hitta alla objekt i katalogträdet

för att returnera alla objekt som finns i ditt LDAP-träd kan du lägga till filtret” objectclass ”och ett jokertecken” * ” för att ange att du vill returnera alla objekt.

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=*"

När du kör den här frågan kommer du att presenteras med alla objekt och alla attribut som finns tillgängliga i trädet.

hitta användarkonton med ldapsearch

låt oss till exempel säga att du vill hitta alla användarkonton i LDAP-katalogträdet.

som standard kommer användarkonton troligen att ha strukturobjektklassen ”konto”, som kan användas för att begränsa alla användarkonton.

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account"

som standard returnerar frågan alla attribut som är tillgängliga för den angivna objektklassen.

hitta alla användare i ldap med ldapsearch

som anges i föregående avsnitt kan du lägga till valfria attribut till din fråga om du vill begränsa din sökning.

Om du till exempel bara är intresserad av användarens CN -, UID-och hemkatalog, skulle du köra följande LDAP-sökning

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account" cn uid homeDirectory
ange LDAP-attribut i ldapsearch

fantastiskt, du har framgångsrikt utfört en LDAP-sökning med filter och attributväljare!

och operatör som använder ldapsearch

för att ha flera filter åtskilda av ”och” operatörer måste du bifoga alla villkor mellan parenteserna och ha ETT ”&” tecken skrivet i början av frågan.

$ ldapsearch <previous_options> "(&(<condition_1>)(<condition_2>)...)"

till exempel, låt oss säga att du vill hitta alla poster har en ”objectclass” som är lika med ”konto” och en ”uid” som är lika med ”john”, skulle du köra följande fråga

$ ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"
och operatör ldap sökfråga

eller operatör som använder ldapsearch

för att ha flera filter åtskilda av ”eller” operatörer måste du bifoga alla villkor mellan parenteserna och ha ett ”|” tecken skrivet i början av frågan.

$ ldapsearch <previous_options> "(|(<condition_1>)(<condition_2>)...)"

Om du till exempel vill hitta alla poster som har en objektklass av typen ”konto” eller eller typ ”organizationalRole”, skulle du köra följande fråga

$ ldapsearch <previous_options> "(|(objectclass=account)(objectclass=organizationalRole))"

Negationsfilter med ldapsearch

i vissa fall vill du negativt matcha några av posterna i ditt ldap-katalogträd.

för att få ett negativt matchningsfilter måste du bifoga ditt tillstånd med en”!”karaktär och har förhållanden åtskilda genom att omsluta parentes.

$ ldapsearch <previous_options> "(!(<condition_1>)(<condition_2>)...)"

Om du till exempel vill matcha alla poster som inte har ett ”cn” – attribut av värde ”john”, skulle du skriva följande fråga

$ ldapsearch <previous_options> "(!(cn=john))"

hitta LDAP-serverkonfiguration med ldapsearch

en avancerad användning av kommandot ldapsearch är att hämta konfigurationen av ditt LDAP-träd.

Om du är bekant med OpenLDAP vet du att det finns ett globalt konfigurationsobjekt som sitter högst upp i LDAP-hierarkin.

i vissa fall kanske du vill se attribut för din LDAP-konfiguration, för att ändra åtkomstkontroll eller för att ändra root admin lösenord till exempel.

för att söka efter LDAP-konfigurationen, använd kommandot ”ldapsearch” och ange ”cn=config” som sökbas för ditt LDAP-träd.

för att köra den här sökningen måste du använda alternativet ”-Y” och ange ”extern” som autentiseringsmekanism.

$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config 

Obs : Detta kommando måste köras direkt på servern, inte från någon av dina LDAP-klienter.

söker LDAP-konfigurationsobjekt

som standard kommer detta kommando att returnera många resultat när det returnerar backends, scheman och moduler.

Om du vill begränsa din sökning till databaskonfigurationer kan du ange objektklassen ”olcDatabaseConfig” med ldapsearch.

$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectclass=olcDatabaseConfig)"

använda jokertecken i LDAP-sökningar

ett annat kraftfullt sätt att söka igenom en lista med LDAP-poster är att använda jokertecken som asterisken (”*”).

jokertecknet har samma funktion som den asterisk du använder i regex : det kommer att användas för att matcha alla attribut som börjar eller slutar med en viss delsträng.

$ ldapsearch <previous_options> "(object_type)=*(object_value)"$ ldapsearch <previous_options> "(object_type)=(object_value)*"

som ett exempel, låt oss säga att du vill hitta alla poster som har ett attribut” uid ”som börjar med bokstaven”j”.

$ ldapsearch <previous_options> "uid=jo*"
använda jokertecken i LDAP-sökfrågor

Ldapsearch Avancerade alternativ

i denna handledning lärde du dig om grundläggande ldapsearch-alternativ men det finns många andra som kan vara intresserade av dig.

LDAP Extensible Match Filters

Extensible LDAP match filters används för att överladda befintliga operatörer (till exempel equality operator) genom att ange vilken typ av jämförelse du vill utföra.

Supercharging default operators

för att ladda en LDAP-operatör måste du använda syntaxen”:=”.

$ ldapsearch <previous_options> "<object_type>:=<object_value>"

Om du till exempel vill söka efter alla poster har en” cn ”som är lika med” john”, skulle du köra följande kommando

$ ldapsearch <previous_options> "cn:=john"# Which is equivalent to$ ldapsearch <previous_options> "cn=john"

som du säkert märkt, kör sökningen på” john ”eller på” JOHN ” returnerar samma exakta resultat.

som en följd av detta kanske du vill begränsa resultaten till” john ” exakt matchning, vilket gör sökningen skiftlägeskänslig.

med Ldapsearch kan du lägga till ytterligare filter separerade med”: ”tecken.

$ ldapsearch <previous_options> "<object_type>:<op1>:<op2>:=<object_value>"

till exempel, för att få en sökning som är skiftlägeskänslig, skulle du köra följande kommando

$ ldapsearch <previous_options> "cn:caseExactMatch:=john"

Om du inte känner till LDAP-matchningsfilter, här är en lista över alla operatörer som är tillgängliga för dig.

slutsats

i denna handledning lärde du dig hur du kan söka i ett LDAP-katalogträd med kommandot ldapsearch.

Du har sett grunderna i att söka grundläggande poster och attribut samt bygga komplexa matchande filter med operatörer (och, eller och negativa operatörer).

Du lärde dig också att det är möjligt att överladda befintliga operatörer genom att använda utbyggbara matchningsalternativ och ange den anpassade operatören som ska användas.

Om du är intresserad av avancerad Linux-systemadministration har vi ett komplett avsnitt dedikerat till det på webbplatsen, så se till att kolla in det!

ldap

Related Posts

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *