GNU/Linux >> Znalost Linux >  >> Linux

Jak vyhledávat LDAP pomocí ldapsearch (s příklady)

Pokud pracujete ve střední až velké společnosti, pravděpodobně každodenně komunikujete s LDAP.

Ať už je to na řadiči domény Windows nebo na linuxovém serveru OpenLDAP , protokol LDAP je velmi užitečné pro centralizaci ověřování.

Jak se však váš adresář LDAP rozrůstá, můžete se ztratit ve všech záznamech, které budete muset spravovat.

Naštěstí existuje příkaz, který vám pomůže vyhledat položky ve stromu adresářů LDAP:ldapsearch .

V tomto tutoriálu se podíváme, jak můžete snadno prohledávat LDAP pomocí ldapsearch .

Chystáme se také zkontrolovat možnosti, které příkaz poskytuje, abychom mohli provádět pokročilé hledání LDAP .

Prohledejte LDAP pomocí ldapsearch

Nejjednodušší způsob, jak prohledávat LDAP, je použít ldapsearch s volbou „-x“ pro jednoduché ověření a specifikovat základ vyhledávání pomocí „-b“.

Pokud nespouštíte vyhledávání přímo na serveru LDAP, budete muset zadat hostitele pomocí možnosti „-H“.

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

Řekněme například, že máte nainstalovaný a spuštěný server OpenLDAP na hostiteli 192.168.178.29 vaší sítě.

Pokud váš server přijímá anonymní ověřování, budete moci provádět vyhledávací dotaz LDAP bez vazby na účet správce.

$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29

Jak vidíte, pokud neurčíte žádné filtry, klient LDAP bude předpokládat, že chcete spustit vyhledávání ve všech třídách objektů ve vašem adresářovém stromu.

V důsledku toho vám bude předloženo mnoho informací. Pokud chcete omezit prezentované informace, vysvětlíme filtry LDAP v další kapitole.

Vyhledejte LDAP pomocí účtu správce

V některých případech můžete chtít spouštět dotazy LDAP jako účet správce, aby vám byly prezentovány další informace.

Abyste toho dosáhli, budete muset vytvořit požadavek na vazbu pomocí účtu správce stromu LDAP.

Chcete-li prohledávat LDAP pomocí účtu správce, musíte provést dotaz „ldapsearch“ s volbou „-D“ pro DN vazby a „-W“, abyste byli vyzváni k zadání hesla.

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

Řekněme například, že váš účet administrátora má následující charakteristický název:„cn=admin,dc=devconnected,dc=com “.

Chcete-li provést vyhledávání LDAP jako tento účet byste museli spustit následující dotaz

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

Při vyhledávání LDAP jako účet správce můžete být vystaveni heslům zašifrovaným uživatelem, takže se ujistěte, že dotaz spouštíte soukromě.

Spouštění vyhledávání LDAP s filtry

Spuštění prostého vyhledávacího dotazu LDAP bez jakýchkoli filtrů je to pravděpodobně ztráta času a zdrojů.

Většinou chcete spustit vyhledávání LDAP dotaz, abyste našli konkrétní objekty ve stromu adresářů LDAP.

Chcete-li vyhledat položku LDAP pomocí filtrů, můžete svůj filtr připojit na konec příkazu ldapsearch :vlevo určíte typ objektu a vpravo hodnotu objektu.

Volitelně můžete zadat atributy, které mají být vráceny z objektu (uživatelské jméno, uživatelské heslo atd.)

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

Nalezení všech objektů ve stromu adresářů

Chcete-li vrátit všechny objekty dostupné ve vašem stromu LDAP, můžete přidat filtr „objectclass“ a zástupný znak „*“, abyste určili, že chcete vrátit všechny objekty.

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

Při provádění tohoto dotazu se vám zobrazí všechny objekty a všechny atributy dostupné ve stromu.

Vyhledání uživatelských účtů pomocí ldapsearch

Řekněme například, že chcete najít všechny uživatelské účty ve stromu adresářů LDAP.

Ve výchozím nastavení budou mít uživatelské účty s největší pravděpodobností třídu strukturálních objektů „account“, kterou lze použít k zúžení všech uživatelských účtů.

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

Ve výchozím nastavení dotaz vrátí všechny atributy dostupné pro danou třídu objektů.

Jak je uvedeno v předchozí části, můžete k dotazu připojit volitelné atributy, pokud chcete vyhledávání zúžit.

Pokud vás například zajímá pouze CN, UID a domovský adresář uživatele, spustili byste následující vyhledávání LDAP

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

Skvělé, úspěšně jste provedli vyhledávání LDAP pomocí filtrů a selektorů atributů!

Operátor AND pomocí ldapsearch

Chcete-li mít více filtrů oddělených operátory „AND“, musíte všechny podmínky uzavřít do hranatých závorek a mít na začátku dotazu napsaný znak „&“.

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

Řekněme například, že chcete najít všechny položky, které mají „objectclass“, která se rovná „account“ a „uid“, která se rovná „john“, spustili byste následující dotaz

$ ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"

NEBO Operátor pomocí ldapsearch

Chcete-li mít více filtrů oddělených operátory „OR“, musíte všechny podmínky uzavřít do hranatých závorek a mít „|“ znak napsaný na začátku dotazu.

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

Pokud například chcete najít všechny položky, které mají třídu objektů typu „account“ nebo nebo typu „organizationalRole“, spustili byste následující dotaz

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

Negační filtry pomocí ldapsearch

V některých případech chcete negativně porovnat některé položky ve stromu adresářů LDAP.

Chcete-li mít filtr negativní shody, musíte své podmínky uzavřít znakem „!“ znak a mají podmínky oddělené závorkami.

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

Pokud například chcete porovnat všechny položky, které NEMAJÍ atribut „cn“ s hodnotou „john“, napište následující dotaz

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

Nalezení konfigurace serveru LDAP pomocí ldapsearch

Jedním z pokročilých způsobů použití příkazu ldapsearch je načtení konfigurace vašeho stromu LDAP.

Pokud znáte OpenLDAP, víte, že na vrcholu vaší hierarchie LDAP je globální konfigurační objekt.

V některých případech můžete chtít vidět atributy vaší konfigurace LDAP, abyste mohli například upravit řízení přístupu nebo upravit heslo správce root.

Chcete-li vyhledat konfiguraci LDAP, použijte příkaz „ldapsearch“ a zadejte „cn=config“ jako základ vyhledávání pro váš strom LDAP.

Chcete-li spustit toto vyhledávání, musíte použít možnost „-Y“ a zadat „EXTERNAL“ jako mechanismus ověřování.

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

Poznámka :tento příkaz musí být spuštěn přímo na serveru, nikoli z jednoho z vašich klientů LDAP.

Ve výchozím nastavení tento příkaz vrátí mnoho výsledků, protože vrací backendy, schémata a moduly.

Pokud chcete vyhledávání omezit na konfigurace databáze, můžete zadat třídu objektu „olcDatabaseConfig“ pomocí ldapsearch.

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

Používání zástupných znaků při vyhledávání LDAP

Dalším účinným způsobem vyhledávání v seznamu položek LDAP je použití zástupných znaků, jako je hvězdička („*“).

Zástupný znak má stejnou funkci jako hvězdička, kterou používáte v regulárním výrazu:bude použit pro shodu jakéhokoli atributu začínajícího nebo končícího daným podřetězcem.

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

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

Řekněme například, že chcete najít všechny položky, které mají atribut „uid“ začínající písmenem „j“.

$ ldapsearch <previous_options> "uid=jo*"

Pokročilé možnosti Ldapsearch

V tomto tutoriálu jste se dozvěděli o základních možnostech vyhledávání ldapsearch, ale existuje mnoho dalších, které by vás mohly zajímat.

LDAP Extensible Match Filters

Rozšiřitelné filtry shody LDAP se používají k příplatku za stávající operátory (například operátor rovnosti) zadáním typu porovnání, které chcete provést.

Výchozí operátory přeplňování

Chcete-li přetížit operátora LDAP, musíte použít syntaxi „:=“.

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

Pokud například chcete vyhledat všechny položky, které mají „cn“, které se rovná „john“, spustili byste následující příkaz

$ ldapsearch <previous_options> "cn:=john"

# Which is equivalent to

$ ldapsearch <previous_options> "cn=john"

Jak jste si pravděpodobně všimli, spuštění vyhledávání na „john“ nebo na „JOHN“ vrátí přesně stejný výsledek.

V důsledku toho možná budete chtít omezit výsledky na přesnou shodu „john“, takže vyhledávání bude citlivé na velká a malá písmena.

Pomocí ldapsearch můžete přidat další filtry oddělené znaky „:“.

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

Chcete-li například hledat, kde se rozlišují velká a malá písmena, spustili byste následující příkaz

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

Pokud neznáte filtry shody LDAP, zde je seznam všech operátorů, které máte k dispozici.

Závěr

V tomto kurzu jste se naučili, jak můžete prohledávat strom adresářů LDAP pomocí ldapsearch příkaz.

Viděli jste základy vyhledávání základních záznamů a atributů a také vytváření složitých filtrů shody s operátory (a nebo a záporné operátory).

Dozvěděli jste se také, že je možné příplatky za stávající operátory pomocí rozšiřitelných možností shody a zadáním vlastního operátoru, který se má použít.

Pokud máte zájem o Advanced Linux System Administration, máme na webu kompletní sekci, která se jí věnuje, takže se na ni určitě podívejte!


Linux
  1. Jak zajistit, aby Ldapsearch fungoval na Sles Over Tls pomocí certifikátu?

  2. Jak zahrnout potřebnou knihovnu C pomocí gcc?

  3. Jak podložit soubor pomocí FF pomocí dd?

  1. Jak používat příkaz ethtool s příklady

  2. SSH na jiný port než 22:Jak na to (s příklady)

  3. Jak rozbalit soubory v Linuxu (s příklady)

  1. Jak vygenerovat pár klíčů SSH (s příklady)

  2. Přidat uživatele do skupiny v Linuxu, jak na to (s příklady)

  3. Jak prohledávat databázi pomocí phpMyAdmin