Bohužel jsem nikdy dřív s LDAPem nepracoval a nedávno jsme s kolegy narazily na problém - sice máme mnou nově nakonfigurovaný a funkční LDAP server, na který se dá z okolních linux serverů připojit a použít pro hlášení uživatelů, ale nedaří se nám žádným způsobem vypsat konfiguraci. Používáme nový způsob konfigurace LDAPu, tedy žádný slapd.conf ale v adresáři slapd.d je cn=config . Všechny příkazy typu
ldapsearch -b "cn=config" -h <server> -D "cn=manager,dc=neco,dc=neco2" -W
končí po zadání hesla s tímto výpisem:
# extended LDIF
#
# LDAPv3
# base <cn=config> with scope subtree
# filter: objectclass=*
# requesting: ALL
#
# search result
search: 2
result: 32 No such object
# numResponses: 1
Můžu manuálně procházet adresáře a ldif soubory v konfiguraci, ale nedostanu přímo od LDAPu žádnou odpověď na konfiguraci.
Napadlo mne, že hlavní účet může být založený špatně, je to cn=Manager,dc=neco,dc=neco2, ale ten "adresář" je v podstatě na nižší úrovni než cn=config . Nemůže to být tím?
Netrap se v shellu a pouzij klikatko na to urcene. Funguje. http://codingbee.net/tutorials/rhcsa/rhcsa-setting-up-ldap-client-using-authconfig-or-realmd
To není cesta kterou se chci ubírat. Potřebuji zjistit, jestli je LDAP od základu špatně nakonfigurovaný, rozhodně na server, který je navíc v pevně oddělené vnitřní síti, nechci nainstalovat další SW. Navíc nemá grafickou nádstavbu. Instaluji teď virtuální server ze kterého budu tvůj postup zkoušet, ale není to trvalé řešení. Jde mi hlavně o to, jestli jsem nezaložil hlavní účet špatně a prostě ani on nemá přístup k nastavení. Bohužel tady se jasně projevuje moje absolutní neznalost LDAPu, hrozně blbě se hledají chyby když nevíš, jak to má vypadat správně.
Citace od: PK kdy 06. 06. 2017, 08:11:02
Napadlo mne, že hlavní účet může být založený špatně, je to cn=Manager,dc=neco,dc=neco2, ale ten "adresář" je v podstatě na nižší úrovni než cn=config . Nemůže to být tím?
S OpenLDAP som nerobil uz nejaku dobu, ale podla tohto citatu (http://www.zytrax.com/books/ldap/ch6/slapd-config.html#convert) pravdepodobne musi byt spravcovsky ucet pod
cn=config:
Citace
The rootDn of cn=config can be anything but it MUST be UNDER cn=config, for example cn=manager,cn=config will work, but cn=manager,cn=admin will be accepted but will fail to allow cn=config access and slapd will subsequently fail to load
Dalsi priklad (https://gauvain.pocentek.net/docs/cn-config-admin/#enable-remote-access-using-a-root-dn) hovori, ze rootDn mimo cn=config DIT treba pridat pristupove ACL explicitne, co potvrdzuje citat vyssie.
config je samostatna databaze, rekl bych, ze pouzivas rootDN/rootPW z jine... podivej se, jakou hodnotu ma atribut olcRootDN (pripadne si nastav olcRootPW pokud nevis) v (asi v defaultu) olcDatabase={0}config.ldif a pouzij tento jako binddn
Citace od: Kriegel kdy 06. 06. 2017, 09:23:45
config je samostatna databaze, rekl bych, ze pouzivas rootDN/rootPW z jine... podivej se, jakou hodnotu ma atribut olcRootDN (pripadne si nastav olcRootPW pokud nevis) v (asi v defaultu) olcDatabase={0}config.ldif a pouzij tento jako binddn
Dívám se a v olcDatabase={0}config.ldif žádný olcRootDN není, je jen v olcDatabase={2}hdb, kde je výše zmíněný cn=Manager,dc=neco,dc=neco2 . Jestli to chápu správně, znamená to, že konfigurační databáze žádného superusera nemá a existuje jen správce databáze uživatelů?
skus z localhostu:
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config
Citace od: PK kdy 06. 06. 2017, 09:48:00
Dívám se a v olcDatabase={0}config.ldif žádný olcRootDN není, je jen v olcDatabase={2}hdb, kde je výše zmíněný cn=Manager,dc=neco,dc=neco2 . Jestli to chápu správně, znamená to, že konfigurační databáze žádného superusera nemá a existuje jen správce databáze uživatelů?
Netusim, jak a co je v sedmicce, mi tu bezi openldap 2.4.40 na centos 6... tak to tam zkus pridat, heslo si bud zkopiruj to stejny z {2}bdb, nebo pouzij
slappaswd... samo by to melo jit i pres
olcAccess jak psal kimec, ale do toho bych se poustel asi az by fungovalo tohle...
Citace od: PK kdy 06. 06. 2017, 09:48:00
Citace od: Kriegel kdy 06. 06. 2017, 09:23:45
config je samostatna databaze, rekl bych, ze pouzivas rootDN/rootPW z jine... podivej se, jakou hodnotu ma atribut olcRootDN (pripadne si nastav olcRootPW pokud nevis) v (asi v defaultu) olcDatabase={0}config.ldif a pouzij tento jako binddn
Dívám se a v olcDatabase={0}config.ldif žádný olcRootDN není, je jen v olcDatabase={2}hdb, kde je výše zmíněný cn=Manager,dc=neco,dc=neco2 . Jestli to chápu správně, znamená to, že konfigurační databáze žádného superusera nemá a existuje jen správce databáze uživatelů?
nie, to je ok. co ti ale asi chyba, su prava na databazu config. cize nieco taketo v "olcDatabase={0}config.ldif":
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth" manage by dn="cn=Manager,dc=neco,dc=neco2" manage by * none
Asi to moc nepomůže v řešení chyby, ale já bych se nebál FreeIPA balíčku. Než konfigurovat samostatně LDAP server.
Citace od: samalama kdy 06. 06. 2017, 10:05:38
nie, to je ok. co ti ale asi chyba, su prava na databazu config. cize nieco taketo v "olcDatabase={0}config.ldif":
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth" manage by dn="cn=Manager,dc=neco,dc=neco2" manage by * none
OK, jediný problém jak to teď udělat. Snažil jsem se něco vyplodit sám, napadlo mě vytvořit ldif a ten nějak zavést, třeba přes ldapmodify
olcRootDN: cn=superuser,cn=config
olcRootPW: <hash hesla superuzivatele>
Bohužel moje mizerné znalosti ldapu se ukazují, podle mě tohle nestačí, ale nemůžu přijít na to jak to napsat správně.
Citace od: PK kdy 06. 06. 2017, 10:43:40
OK, jediný problém jak to teď udělat. Snažil jsem se něco vyplodit sám, napadlo mě vytvořit ldif a ten nějak zavést, třeba přes ldapmodify
olcRootDN: cn=superuser,cn=config
olcRootPW: <hash hesla superuzivatele>
Bohužel moje mizerné znalosti ldapu se ukazují, podle mě tohle nestačí, ale nemůžu přijít na to jak to napsat správně.
je to proste,
olcDatabase={0}config.ldif JE ldif, takze to dopis/prepis v nem a restartni. Tot vse. ;)
Citace od: Kriegel kdy 06. 06. 2017, 11:12:11
Citace od: PK kdy 06. 06. 2017, 10:43:40
OK, jediný problém jak to teď udělat. Snažil jsem se něco vyplodit sám, napadlo mě vytvořit ldif a ten nějak zavést, třeba přes ldapmodify
olcRootDN: cn=superuser,cn=config
olcRootPW: <hash hesla superuzivatele>
Bohužel moje mizerné znalosti ldapu se ukazují, podle mě tohle nestačí, ale nemůžu přijít na to jak to napsat správně.
je to proste, olcDatabase={0}config.ldif JE ldif, takze to dopis/prepis v nem a restartni. Tot vse. ;)
tak urcite...
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by dn="cn=Manager,dc=...,dc=..." manage
by * none
Citace od: Kriegel kdy 06. 06. 2017, 11:12:11
Citace od: PK kdy 06. 06. 2017, 10:43:40
OK, jediný problém jak to teď udělat. Snažil jsem se něco vyplodit sám, napadlo mě vytvořit ldif a ten nějak zavést, třeba přes ldapmodify
olcRootDN: cn=superuser,cn=config
olcRootPW: <hash hesla superuzivatele>
Bohužel moje mizerné znalosti ldapu se ukazují, podle mě tohle nestačí, ale nemůžu přijít na to jak to napsat správně.
je to proste, olcDatabase={0}config.ldif JE ldif, takze to dopis/prepis v nem a restartni. Tot vse. ;)
A v každém LDIFu je upozornění, že do něj nikdo nemá manuálně psát a kontrolní součet. Ano, napadlo mě že tohle je nejjednodušší způsob, ale fakt nevím jestli pak LDAP najede a nebude mít nějaké řeči.
Citace od: samalama kdy 06. 06. 2017, 11:21:30
Citace od: Kriegel kdy 06. 06. 2017, 11:12:11
Citace od: PK kdy 06. 06. 2017, 10:43:40
OK, jediný problém jak to teď udělat. Snažil jsem se něco vyplodit sám, napadlo mě vytvořit ldif a ten nějak zavést, třeba přes ldapmodify
olcRootDN: cn=superuser,cn=config
olcRootPW: <hash hesla superuzivatele>
Bohužel moje mizerné znalosti ldapu se ukazují, podle mě tohle nestačí, ale nemůžu přijít na to jak to napsat správně.
je to proste, olcDatabase={0}config.ldif JE ldif, takze to dopis/prepis v nem a restartni. Tot vse. ;)
tak urcite...
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by dn="cn=Manager,dc=...,dc=..." manage
by * none
Pokud rozumím zápisu, tak to není přidání nového uživatele, ale přidání práv stávajícího (Manager) tak, aby měl práva superusera, chápu správně?
presnejsie "aby mal prava superusera nad databazou config"...
Citace od: PK kdy 06. 06. 2017, 12:35:11
A v každém LDIFu je upozornění, že do něj nikdo nemá manuálně psát a kontrolní součet. Ano, napadlo mě že tohle je nejjednodušší způsob, ale fakt nevím jestli pak LDAP najede a nebude mít nějaké řeči.
IIRC tak OpenLDAP si bude stěžovat do logu, ale bude to fungovat.
Čisté řešení je použít
slapadd a
slapindex.