Fórumok
Sziasztok!
Próbálok életre kelteni 1 openldap szervert, de valahányszor bekonfigurálom a dokumentációk alapján, indításkor mindig hibát kapok:
"The operation failed but no operation produced. ..."
Két parancsot ajánl segítségképpen:
slapd -d 16383
slapd -h 'ldap://127.0.0.1 ldaps:/// ldapi:///' -g openldap -u openldap -f /etc/ldap/slapd.conf
Az elsőre kapok egy rakás infó, a második visszatér mindenféle üzenet nélkül.
A syslogban mindig a következő hibát látom:
main: TLS init def ctx failed: -1
Van valakinek valami ötlete?
Én a tanúsítványokra gondolok, nem pedig ldap hibára. De a tanúsítványokat hiába csinálom meg újra, nem javul a helyzet...
Sanyi
Hozzászólások
Annyit már sikerült összegugliznom, hogy a 2.4-es OpenLDAP-ok már nem OpenSSL-t használnak, hanem gnutls-t.
Készített már valaki gnutls-sel certeket?
Ha van ilyen, kérem: ne habozzon!
Egyébként amikor kivettem a titkosítós részeket az ldap konfokból, csont nélkül indult...
en is hasonlo cipoben jarok, esetleg tudsz vmi hasznalhato doksit a cert generalasra?
udv Zoli
Sajnos nem értem rá vele foglalkozni, ahogy lentebb olvasható, még a tls nélküli ldap-om is eléggé szét van esve.
Ha találsz valami jó doksit, kérlek linkeld be ide!
Sanyi
Üdv!
Fent hibaüzenet okozója megvan, előző hozzászólásomban írtan róla.
Most egy újabb hibába ütköztem slapd indításkor. A képernyőn megjelenő hibaüzi ugyanaz, mint a bejelentésemben olvasható, a syslogban viszont más hiba jelenik meg:
daemon. bind(9) failed errno=98 (Address already in use)
Ez mit jelenthet, illetve hogy tudom az egész ldapot szőrőstől-bőröstől leszedni.
apt-get remove --purge slapd
nem elég, hiszen ha utána újra felrakom, akkor már ismer olyan beállításokat, amiket még az eltávolítás előtt adtam meg.
Pl.: slapindex futtatásakor kiírja, hogy a "dc=ize,dc=hoze,dc=hu" már létezik.
Szóval minden korábbi beállításomat el akarom távolítani, és utána újra felépíteni az egészet. Ebben a formában elég sok baja van már, és mivel új, üres db van készülőben, ezért nyugodtan lerombolhatom az előzményeket!
Sanyi
Address already in use - valami már rányitotta a socket.et a portra
netstat -antp mielőtt indítod a slapd-t
Örök hála!
Valami miatt volt egy bentragadt slapd processz...
A fenti parancs kimenetében még akkor is volt egy slapd, amikor az ldap nem futott. Az nmap localhost is nyitottnak mutatta a 389-es portot ekkor.
A ps -A kimenetében találtam egy elég magas processzID-vel rendelkező slapd-ot, és mikor azt kinyírtam, utána már elindult a slapd!
Mer ugye valószínűleg az init indítja. Van egy /etc/init.d/slapd, ami lindul a szerver indításakot és ez így is van jól.
Azóta nem volt szerver újraindítás.
Viszont most, ha a slapindexet akarom futtatni, akkor a /var/lib/ldap-ban minden file-t újraindexel, kivéve a cn.bdb-t!
Ennek a módosítás időpontja nem változik, pedig slapd leállítva, cn.bdb openldap/openldap tulajdonossal, 600 jogosultsággal szerepel.
Pedig ha jól sejtem újraindexeléskor a cn.bdb-nek is frissülnie kellene...
Üdv!
Az ldap mostmár elindul, tudtam is felvenni benne bejegyzéseket, telepítettem a libpam-ldap, libnss-ldap csomagokat, szerkesztettem az nsswitch.conf-ot, és a
getent
parancs újraindítás után sem látja sajnos az LDAPban lévő neveket, csoportokat (csak a unix neveket/csoportokat).
Samba szintén nem fogadja el az ldapban felvett usert csatlakozáskor...
Merre keressem a hibát, mit ronthattam el???
Ezt tanulmányozd, van benne neked kellő rész.
"
* Frissítsük az /etc/nsswitch.conf fájlt :
passwd: compat ldap
group: compat ldap
shadow: compat ldap
hosts: files dns ldap
"
PHPAdmin - Ha a táblázatkezelő már nem elég...
OK, átolvasom.
Közben nézem a syslogot:
pam_ldap: ldap_simple_bind Can't contact LDAP server
Tehát a apm_ldap táján van gond, azt kell mégegyszer körüljárni.
Gyanítom a samba is emiatt nem fogadja el a jelszavamat...
1. netstat -antp (nyitva a sima port, nem az ssl-es tls-es)
2. ldapsearch -x '(objectclass=*)' (add vissza értéket?, akkor megy az ldap tls nélkük, hokés)
2.1. mi van az ldap.conf.ban, hova akar konnektálni? ldap://, vagy ldaps://?
3.
Az összes előtt állítsd le az ldap-ot (/etc/init.d/slapd stop)....add ki a "slapd -d 5" ....egy másik terminálon add ki a fenti parancsokat és utána mindig nézd meg a slapd-s terminált.
ha ezek után semmi, akkor pastebin-re az nssswitch.conf-al, az ldap.conf-al és a pam.d/{common-{auth,account,session},login}-nal
1.
netstat -antp | grep 389
-ratcp 0 0 127.0.0.1:389 0.0.0.0:* LISTEN 3385/slapd
2. ad vissza, az összes korábban felvett ou, uid, stb. benne van
3.
HOST 127.0.0.1
BASE dc=mydomain,dc=hu
URI ldap://127.0.0.1/
tehát titkosítás nélkül
4. A csak_az_ldapban lévő felhasználókat nem találja!
És ennek megfelelően hiába próbálok sambához is kapcsolódni xp-vel, nem fogadja el az ldapban lévő júzereket.
Merre lehet a baj?
Okis...akkor a pam-mal van elkefélve valami....ha az nsswitch.conf-ban bent van az ldap is passwd,shadow,group esetén
az id ugyanis csak az account szekciót nézi és nincs auth, vagy passwd, vagy session.
nyomd rá pastebin-re a pam-os konfigod.
Akkor az elejéről mindent:
/etc/nsswitch.conf:
passwd: compat ldap
group: compat ldap
shadow: compat ldap
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
common-account:
account sufficient pam_ldap.so
account required pam_unix.so try_first_pass
commn-auth:
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure try_first_pass
common-password:
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5 try_first_pass
common-session:
session sufficient pam_ldap.so
session required pam_unix.so
[lame]Ezt a pastebin dolgot pedig még nem használtam, hogy csináljam? [/lame]
hmmm....ez jónak tűnik....mondjuk hiányolom a pam_deny.so-kat...
most meg mán arra lennék kíváncsi hogy hogy vannak az acl-ek a slapd.conf-ban
egyébbként nem írt semmit a slapd -d 5 esetén a konzolra, mikor az id ldapuser-t próbáltad?
ja még valami...nem mintha nem bíznék benned, de egy dpkg -l |grep ldap is jövetne (tudod libnss-ldap, libpam-ldap van e?) :)
4.:
:-)
Vannak! :-) De jogos: térjünk ki minden apróságra, nehogy valami jelentéktelen dolog legyen a banánhéj, amin elcsúszok.
Sorrendben:
ldap-utils
libldap-2.4-2
libnet-ldap-perl
libnss-ldap
libpam-ldap
libsasl2-modules-ldap
smbldap-tools
A többit holnap írom.
akkor most má csak a jó öreg logfigyelés, debug opció és tcpdump szetnháromságban bízok.
slapd -d 5
tail -f /var/log/messages
tcpdump host localhost (először ne nézzünk portot, de aztán mehet a 389 ellenőrzése is)
ja +1 a ráadás a 3 mellé az strace:
strace id ldapfelhasználó
...ha ez sem jön be, akkor kernelt debuggolunk :D
strace qrva sok mindent kiír, miket keressek/figyeljek benne?
hát open-eket a socketre vagy connect-et, meg send és recvmsg függvényhívásokat.
az id ldapfelhasznalo nem sokat kéne hogy kiírjon...kb 70 sor, aminek az eleje nem lényeg, a vége nem lényeg, csak a közepe :)
Nekem majd' 400 sor a kimenete.
Éppen ezért nem ide másolom be, hanem feltöltöttem, letölthető innen: http://myfreefilehosting.com/f/eadd2c2342_0.03MB
Oké
akkor kell a tartalma a
/etc/libnss-ldap.conf
/etc/libnss-ldap.secret
/etc/ldap/ldap.conf
természetesen a szenzitív adatok kihagyásával :)
egyetlen nagyon érdekes:
socket(PF_FILE, SOCK_STREAM, 0) = 3
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(3, {sa_family=AF_FILE, path="127.0.0.1:389"...}, 110) = -1 ENOENT (No such file or directory)
shutdown(3, 2 /* send and receive */) = 0
ezek szerint rohadtul nem konnektál a megnyitott socket-en keresztül a 127.0.0.1:389-ra (man 2 connect)
illetve ezek szerint
connect(3, {sa_family=AF_FILE, path="/dev/log"...}, 110) = 0
sendto(3, "<83>May 4 11:21:56 id: nss_ldap:"..., 136, MSG_NOSIGNAL, NULL, 0) = 136
az nss_ldap logol a syslogra, azt is érdemes akkor megnézni, hogy mit....vagy a pam_ldap.so-nak megadni a debug opciót.
libnss-ldap.conf:
base dc=mydomain,dc=hu
uri ldapi://127.0.0.1:389/
ldap_version 3
rootbinddn cn=admin,dc=mydomain,dc=hu
Ebben a fileban van 1 csomó komment pl.: nss_base_xxx-ként, lehet, hogy ezeket kellene a konfig számára láthatóvá tenni? De miket, és hogyan?
libnss-ldap.secret:
a_jelszavam_mindenféle_kódolás_nélkül_olvashatóan
ldap.conf:
host 127.0.0.1
base dc=mydomain,dc=hu
uri ldap://127.0.0.1/
Közben feltettem az nscd-t, és a strace kimenete így már csak 107 soros, és nincs benne a 127.0.0.1:389 sor.
Ezt is feltettem ide
azé nincsen benne, mert ilyenkor az nscd socket-jére olvas rá, mint az strace-ban is látható.
ami viszont látszik, hogy szépen küldi meg fogadja az üzeneteket a socketen keresztül...küldi a csonkasanyi nevet, aztán vissza is jön 36 byte válasz, amiből viszont az id azt a következtetést vonja le, hogy nincs ilyen felhasználó
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = 0
sendto(3, "\2\0\0\0\0\0\0\0\f\0\0\0csonkasanyi\0"..., 24, MSG_NOSIGNAL, NULL, 0) = 24
poll([{fd=3, events=POLLIN|POLLERR|POLLHUP}], 1, 5000) = 1 ([{fd=3, revents=POLLIN|POLLHUP}])
read(3, "\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"..., 36) = 36
close(3)
...
most már tényleg a slapd -d 5-öt kellene látnunk, hogy mit nyom ki egy id esetén
Reggel első dolgom lesz, hogy a slapd-d 5-öt kiíratom egy file-ba, és feltöltöm valahová.
Köszönöm az eddigi fáradozásodat is!
Sanyi
bazzmegsanyi...ha az "ldapi" lesz a probléma én megkereslek...debizonyisten....és egymás arcába röhögünk :)
Makón várlak! :-)
Szóval:
Beleteszem a pam_deny.so-kat, de újraindítani csak este tudom a szervert, ui.: élesben használják.
A slapd konzolon semmit nem ír mikor lekérdezem az ldapusert. Akkor sem ha létező usert keresek, akkor sem ha nem létezőt.
Ami még gyanús számomra:
ldapsearch kiadja a root felhasználót is és engem is, de a samba csak a root felhasználót engedi be, pedig az smb.conf-ban benne van, hogy
passdb backend = ldapsam:"ldap://localhost"
slapd.conf:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema
include /etc/ldap/schema/mail-alias.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel none
modulepath /usr/lib/ldap
moduleload back_hdb
sizelimit 500
backend hdb
database hdb
suffix "dc=mydomain,dc=hu"
directory "/var/lib/ldap"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index objectClass eq
index cn pres,sub,eq
index sn pres,sub,eq
index uid pres,sub,eq
index displayName pres,sub,eq
index uidNumber eq
index gidNumber eq
index memberUid eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index givenname eq,sub
index default sub
lastmod on
checkpoint 512 30
access to attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPwdLastSet,sambaPwdCanChange
by dn="cn=admin,dc=mydomain,dc=hu" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=mydomain,dc=hu" write
by self write
by * read
pam_deny.so miért szükséges? úgy tudom ha valami nem adja vissza hogy OK akkor deny lesz alapból...
Ezek vannak benne, annyi kivétellel, hogy a hosts sorban nem szerepel az ldap.
De nem hinném hogy az én problémámat ez okozná...
azt az ldapi://-t cseréld le ldap://-re, és csodát fogsz látni.
*szameg!!! Ha ez a baj...má megen nem tudok olvasni...multkor két napig vesződtem valamivel azért, mert akárhányszor végigolvastam mindig jónak tűnt...majd mikor már hazavittem a munkát, az asszony megkérdezte, hogy az miért nem az, mint a másik helyen..."azé bazzmeg, mer egy hülye állat vagyok, akinek elsőben ki kellett volna buknia...általánosban" :)
Előfordul :-)
Én sem vettem észre, pedig én többet láttam magam előtt a konfigot. :-)
IGEN, EZAZ!!!
Kivettem az "i" betűt, nyomtam egy reboot-ot, és azóta már megy is.
Legalábbis a getent látja az ldapos usereket, id is válaszol!
DE: sajnos ssh/samba-n nem tudok ezekkel a userekkel belépni. Hiába módosítok jelszót, és írja is, hogy
Changing UNIX and samba password
, utána sem tudok belépni.Ezt merre keressem?
a samba egy külön pálya lesz, előbb az ssh menjen.
ehhez az ldapsearch -D működőképességét kéne előbb elérni, hogy az adott usert tudja az ldap authentikálni. amíg ez nem fogadja el a user jelszavát, addig nem fog menni más sem.
ldapsearch -x -D "uid=csonkasanyi,ou=users,dc=mydomain,dc=hu" -W
-re kiadja a teljes fát, tehát elfogadja a jelszót!Ugyanezt másik ldap userrel is teljesíti.
Következő lépés?
ldap log bekapcsolása, az ldapsearch által, és az ssh-s bejelentkezés által "okozott" log összehasonlítása.
Az ssh már megoldva.
Az sshd_config-ban egyetlen csoport volt engedélyezve, és abba nem tartozott bele az ldap-os userem.
Miután hozzáadtam, rögtön be tudok lépni ssh-n is!
Az újabb probléma: első belépéskor nem hozza létre számára a saját home könyvtárát.
Próbaképpen létrehoztam kézzel, de xp kliensről akkor sem enged be...
a pam-nak van egy modulja ami be kellene tölteni:
session optional pam_mkhomedir.so
Sanyibazzmeg! Most komolyan! Nem akarsz egy kis doksit is olvasni a dolgoról? :D
Sajnos a /lib/security-ben megvan minden pam modul, kivéve a pam_mkhomedir.so-t...
Ennek hiányában ha jól sejtem hiába is írom be a /etc/pam.d/login-ba a fenti sort...
De honnan tudom beszerezni? Kernelt kell forgatnom?
Sorry a sok láma kérdésért, de egyéb szolgáltatások élesben menneka gépen, így nem nagyon tudok kísérletezni rajta... :-(
A PAM-mal nem is kell, mivel pluggable...azaz berakod, oszt a következő login esetén a session már úgy fog menni.
apt-get install libpam-modules
de ugye ezt is megmondta volna egy apt-file search pam_mkhomedir.so
sanyiiiii!!!! sanyikáááám!!!!
Biztos én vagyok a nagyon idióta, pancser, tudatlan, stb., de hiába írom be a fenti sort a /etc/pam.d/common-session-ba, illetve a /etc/pam.d/login-ba, ldap user belépésekor továbbra sem hozza létre a könyvtárat számára...
No akkor, a modul dokumentációja alpján (kacsintok most rád, hogy elolvasd)
/etc/pam.d/common-account-be bele
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
a fenti sort
:)
(Visszakacsintok, hogy én is olvastam, de ezek szerint nem ugyanazt)
EZ alapján úgy gondoltam, hogy a login-ba kell bekalapálni...
Betettem a common-account-ba is, és megcsinálja!
Köszi!!!
Ui.: "már csak" a samba kellene, hogy beengedjen, aztán vehetem fel a gépeket a tartományba...
Te Sanyi! Én most belerakom egy bőröndbe a /usr/share/docs könyvtárat és lemegyek Makóra és rádborítom a bőrönd tartalmát....de komolyan :)
De honnan tudom beszerezni?
miért, a többi szart honnan szerezted a gépedre?
az openldapot, az sshd-t, meg ki tudja még hány másik cuccot? az már elsőre is lejött, hogy nem magad fordítottad ezeket a programokat...
Reboot-kor volt egy kis para, mert legalább 50 soron keresztül írta, hogy nss-ldap nem tud kapcsolódni az ldap szerverhez...
Aztán a végén elindult az OpenLDAP! :-)