slapd - slapadd nyűg

Sziasztok, van nekem egy ldif állományom amit nem tudok beimportálni az ldap szerverembe. Ezt a hibát kapom:

%slapadd -c -v -l dhcpd.ldif
bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
bdb_index_read: Could not open DB objectClass
=> bdb_tool_entry_put: index_entry_add failed: Internal error (80)
=> bdb_tool_entry_put: txn_aborted! Internal error (80)
slapadd: could not add entry dn="cn=virtualbox,dc=chello,dc=hu" (line=1): txn_aborted! Internal error (80)
bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
bdb_index_read: Could not open DB objectClass
=> bdb_tool_entry_put: index_entry_add failed: Internal error (80)
=> bdb_tool_entry_put: txn_aborted! Internal error (80)
slapadd: could not add entry dn="cn=DHCP Config,dc=chello,dc=hu" (line=7): txn_aborted! Internal error (80)
bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
bdb_index_read: Could not open DB objectClass
=> bdb_tool_entry_put: index_entry_add failed: Internal error (80)
=> bdb_tool_entry_put: txn_aborted! Internal error (80)
slapadd: could not add entry dn="cn=10.0.1.0,cn=DHCP Config,dc=chello,dc=hu" (line=20): txn_aborted! Internal error (80)
bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
bdb_index_read: Could not open DB objectClass
=> bdb_tool_entry_put: index_entry_add failed: Internal error (80)
=> bdb_tool_entry_put: txn_aborted! Internal error (80)
slapadd: could not add entry dn="cn=192.168.0.0,cn=DHCP Config,dc=chello,dc=hu" (line=26): txn_aborted! Internal error (80)
bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
bdb_index_read: Could not open DB objectClass
=> bdb_tool_entry_put: index_entry_add failed: Internal error (80)
=> bdb_tool_entry_put: txn_aborted! Internal error (80)
slapadd: could not add entry dn="cn=192.168.10.0,cn=DHCP Config,dc=chello,dc=hu" (line=32): txn_aborted! Internal error (80)
bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
bdb_index_read: Could not open DB objectClass
=> bdb_tool_entry_put: index_entry_add failed: Internal error (80)
=> bdb_tool_entry_put: txn_aborted! Internal error (80)
slapadd: could not add entry dn="cn=10.16.100.0,cn=DHCP Config,dc=chello,dc=hu" (line=38): txn_aborted! Internal error (80)
bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
bdb_index_read: Could not open DB objectClass
=> bdb_tool_entry_put: index_entry_add failed: Internal error (80)
=> bdb_tool_entry_put: txn_aborted! Internal error (80)
slapadd: could not add entry dn="cn=some_computer,cn=DHCP Config,dc=chello,dc=hu" (line=48): txn_aborted! Internal error (80)
_#################### 100.00% eta none elapsed none fast!
Closing DB...Error, entries missing!
entry 1: dc=chello,dc=hu
entry 3: dc=chello,dc=hu
entry 5: dc=chello,dc=hu
entry 6: cn=dhcp config,dc=chello,dc=hu
entry 8: dc=chello,dc=hu
entry 9: cn=dhcp config,dc=chello,dc=hu
entry 11: dc=chello,dc=hu
entry 12: cn=dhcp config,dc=chello,dc=hu
entry 14: dc=chello,dc=hu
entry 15: cn=dhcp config,dc=chello,dc=hu
entry 17: dc=chello,dc=hu
entry 18: cn=dhcp config,dc=chello,dc=hu

bdb(dc=chello,dc=hu): Database handles still open at environment close
bdb_db_close: database "dc=chello,dc=hu": close failed: Invalid argument (22)
%

Maga az dhcpd.ldif állomány egy működő dhcpd.conf -ból lett konvertálva a dhcpd-conf-to-ldap.pl script segítségével. A slapd.conf ban benne van a megfelelő séma:

include /usr/local/etc/openldap/schema/dhcp.schema
index dhcpHWAddress eq
index dhcpClassData eq

és ellenőriztem a jogokat is:

#chown -R ldap:ldap /var/db/openldap-data

Nem igazán értem hogy mi a baja! Azt írja hogy "Could not open DB objectClass" de az nem egy adatbázis hanem egy osztály kellene hogy legyen! Viszont ha elindítom a slapd -t és elkezdem böngészni egy ldap schema browser-rel akkor látszódik az összes osztály (objectClass és a dhcp-sek is: dhcpSubNet, dhcpGroup stb.)

Mi lehet a baj?

Köszi,

L

Hozzászólások

Tekintve, hogy slapadd es nem ldapadd, nem is szukseges binddn, mert nem az a szint.

Ami viszont erdekesebb kerdes, hogy egy mukodo vagy egy nem mukodo LDAP szerver ala akarja betolni ezt az LDIF-et. A slapadd ugyanis nem mindig jo futo LDAP szervernel, tekitnve, hogy direktben a DB-t maceralja.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Pontosan, legállítottam előtte a slapd-t.

De most kicsit elbizonytalanodtam és inkább megpróbáltam így is:

%slapadd -c -v -f /usr/local/etc/openldap/slapd.conf -l dhcpd.ldif

de sajnos így is pontosan ugyan azokat a hibákat adja!

Az ldapadd -ot nem igazán tudom kipróbálni, mert az én slapd-m nem SASL-os. Csak cleartext authentication van, és az ldapadd ezt nem tudja. (Van ugyan neki -w kapcsolója a jelszóhoz, de a felhasználóhoz csak -R vagy -U van, és azok SASL -osak. Cleartext-et nem tud, és nem is akarnám újrafordítani mert nincs szükségem SASL-os LDAP-ra.)

%echo "proc /proc procfs rw 0 0" >> /etc/fstab
%mount/proc
%strace slapadd -v -f /usr/local/etc/openldap/slapd.conf -l dhcpd.ldif |& more
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
pread: Device busy
.... (még soksok ilyen)
bdb_db_open: database "dc=chello,dc=hu": unclean shutdown detected; attempting recovery.
pread: Device busy
pread: Device busy
.... (még soksok ilyen)

és így tovább a végén még van egy ilyen:

PIOCWSTOP: Inappropriate ioctl for device
trouble opening proc file

muti már azt az ldif-et. Mert feltennék rá egy százast, hogy az egy sima ldif, amit ldapadd-al adhatsz hozzá, nem pedig egy ldap dump, amit slapaddal. utóbbiban jóval több információ leledzik.

(meg mintha a strace alapján, fut az ldap szervered???)

Nem igazán értem hogy mi a baja!

No such file or directory (2)

Ez a baja. Javítsd meg a strace-t, és szépen mutatni fogja, hogy mit nem tud megnyitni.

--

Áruld el nekem, hogy miért slapadd-dal próbálod betölteni az ldif-et? Miért is nem az ldapadd parancsot használod?

%uname -a
FreeBSD virtualbox 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011 root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
%pkg_info | grep strace
strace-4.5.18_1 A portable process tracer
%

A rendszer nemrég lett telepítve stable 8.2 CD-ről. A ports tree kb. tegnapelőtt lett letöltve, és strace forrásból van fordítva.

Hát ha FreeBSD (volt egy ilyen gyanúm a ports-ból), akkor én strace helyett a FreeBSD saját eszközét használnám: man ktrace / kdump . Az strace nálam is mindenféle hülyeséget mond, még a /proc felmountolása után is :-) Szóval inkább "ktrace -t i slapadd ..." formában futtasd, majd kdump és akkor legalább azzt látni fogod, hogy valóban azokat a fájlokat nyitogatja-e, amiket kellene neki.

Mielőtt mindenki félrevezetné: ennek az a baja, hogy a bdb adatbázis nincs alatta.

Az openLDAP-nak milyen a konfigja? A régi, amikor konfig fájlt írtál vagy az új amikor futó ldap mellett lehet ldap adatbázist hozzáadni?

Mert ha az utóbbi, akkor slapaddal, nem is nagyon tudod hozzáadni..

Nyilván az a baja, hogy valami elbaszott konfigurációt olvas a slapadd, nem azt, amiből a slapd fut. De honnan jönne rá, hogy mit, ha nem ért az egészhez? Strace nélkül lehetne még esetleg forrást böngészni...

Amúgy a probléma megoldása "természetesen" az, hogy ldapadd-ot használunk arra, amire ldapadd való.

> Nyilván az a baja, hogy valami elbaszott konfigurációt olvas a slapadd

Hát ez jogos lenne, de konkrétan kipróbáltam a slapadd parancsot -f kapcsolóval is, és megadtam neki a hogy konkrétan melyik slapd.conf-ot használja. És úgy is ugyan ezt a hibát írta ki.

Egyébként nem tudom hogyan tudna valamilyen más "elbaszott" konfigurációt használni, mert a rendszeren tudtommal egyetlen egy konfig file van (az amit default fölrakott, csak beleírtam 3 sort)

Ha slapd.conf-ot használsz, akkor a slapd.d könyvtárat töröld, mert hiába adod meg neki a -F-et, simán benyeli a slapd.d-t.
A másik: utf-8ban legyenek az entryk, mert kényes az openLDAP arra, hogy UTF-8 legyen minden - igen, a konzolod is, ha ott szerkesztesz LDIF-et -, ami a szabványos LDAP előírás.
Kíváncsi vagyok ilyen probléma volt-e.

OpenLDAP konfigja alább látható. Olyan mint a default kivéve hogy az utolsó 3 sor hozzá lett adva.

Gond nélkül el lehet indítani és nem ír ki semmiféle hibát vagy warning-ot.

Nem tudom hogy mit értessz "új" és "régi" konfig fájl alatt. Nekem csak ez az egy van. :-s

--------------------------------------- nyissz ---------------------------------------
%cat /usr/local/etc/openldap/slapd.conf
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /usr/local/etc/openldap/schema/core.schema

# Define global ACLs to disable default read access.

# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral ldap://root.openldap.org

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

# Load dynamic backend modules:
modulepath /usr/local/libexec/openldap
moduleload back_bdb
# moduleload back_hdb
# moduleload back_ldap

# Sample security restrictions
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:
# Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn. (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!

#######################################################################
# BDB database definitions
#######################################################################

database bdb
suffix "dc=chello,dc=hu"
rootdn "cn=Manager,dc=chello,dc=hu"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw secret
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/db/openldap-data
# Indices to maintain
index objectClass eq

include /usr/local/etc/openldap/schema/dhcp.schema
index dhcpHWAddress eq
index dhcpClassData eq
%

--------------------------------------- nyissz ---------------------------------------

és itt van az ldif amivel nem megy (de igazából ha már az első 6 sort próbálom megetetni vele, az sem megy):

%cat dhcpd.ldif
dn: cn=virtualbox, dc=chello,dc=hu
cn: virtualbox
objectClass: top
objectClass: dhcpServer
dhcpServiceDN: cn=DHCP Config, dc=chello,dc=hu

dn: cn=DHCP Config, dc=chello,dc=hu
cn: DHCP Config
objectClass: top
objectClass: dhcpService
objectClass: dhcpOptions
dhcpPrimaryDN: cn=virtualbox, dc=chello,dc=hu
dhcpStatements: max-lease-time 7200
dhcpStatements: log-facility local7
dhcpStatements: default-lease-time 600
dhcpOption: domain-name "example.org"
dhcpOption: domain-name-servers 192.168.10.10, 192.168.10.100
dhcpOption: ntp-servers 192.168.10.10

dn: cn=10.0.1.0, cn=DHCP Config, dc=chello,dc=hu
cn: 10.0.1.0
objectClass: top
objectClass: dhcpSubnet
dhcpNetMask: 28

dn: cn=192.168.0.0, cn=DHCP Config, dc=chello,dc=hu
cn: 192.168.0.0
objectClass: top
objectClass: dhcpSubnet
dhcpNetMask: 24

dn: cn=192.168.10.0, cn=DHCP Config, dc=chello,dc=hu
cn: 192.168.10.0
objectClass: top
objectClass: dhcpSubnet
dhcpNetMask: 24

dn: cn=10.16.100.0, cn=DHCP Config, dc=chello,dc=hu
cn: 10.16.100.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 24
dhcpRange: 10.16.100.5 10.16.100.9
dhcpStatements: next-server 192.168.10.100
dhcpOption: routers 192.168.0.14

dn: cn=some_computer, cn=DHCP Config, dc=chello,dc=hu
cn: some_computer
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
dhcpHWAddress: ethernet 00:14:38:50:e8:df
dhcpStatements: fixed-address 10.16.100.2
dhcpStatements: next-server 192.168.10.100
dhcpOption: routers 192.168.0.14

%ls -l /var/db/openldap-data
total 10494
-rw------- 1 ldap ldap 155 Dec 10 16:16 DB_CONFIG
-rw------- 1 root ldap 24576 Dec 10 20:37 __db.001
-rw------- 1 root ldap 2146304 Dec 10 20:37 __db.002
-rw------- 1 root ldap 335552512 Dec 10 20:37 __db.003
-rw------- 1 root ldap 2359296 Dec 10 20:37 __db.004
-rw------- 1 root ldap 475136 Dec 10 20:37 __db.005
-rw------- 1 root ldap 32768 Dec 10 20:37 __db.006
-rw-r--r-- 1 ldap ldap 4096 Dec 10 20:37 alock
-rw------- 1 ldap ldap 32768 Dec 10 20:37 dn2id.bdb
-rw------- 1 ldap ldap 32768 Dec 9 22:19 id2entry.bdb
-rw------- 1 ldap ldap 10485760 Dec 10 20:37 log.0000000001
%

Lehetne rá mondani azt hogy nem jók a jogok, de mivel root-ként vagyok bent... Még mielőtt valaki rákérdezne, így sem megy:

%chown -R ldap:ldap /var/db/openldap-data
%whoami
root
%slapadd -v -l dhcpd.ldif
bdb_db_open: database "dc=chello,dc=hu": unclean shutdown detected; attempting recovery.
bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
bdb_index_read: Could not open DB objectClass
=> bdb_tool_entry_put: index_entry_add failed: Internal error (80)
=> bdb_tool_entry_put: txn_aborted! Internal error (80)
slapadd: could not add entry dn="cn=virtualbox,dc=chello,dc=hu" (line=1): txn_aborted! Internal error (80)
_# 9.35% eta none elapsed none spd 11.1 k/s
Closing DB...Error, entries missing!
entry 1: dc=chello,dc=hu

bdb(dc=chello,dc=hu): Database handles still open at environment close
bdb_db_close: database "dc=chello,dc=hu": close failed: Invalid argument (22)
%

Plusz most már van ktrace is, és úgy tűnik hogy jó könyvtárban keresgéli a file-okat. Sőt, még a config file-t is beolvassa, és még a core.schema file-t is megnyitja.

%ktrace slapadd -l dhcpd.ldif
bdb_db_open: database "dc=chello,dc=hu": unclean shutdown detected; attempting recovery.
bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
bdb_index_read: Could not open DB objectClass
=> bdb_tool_entry_put: index_entry_add failed: Internal error (80)
=> bdb_tool_entry_put: txn_aborted! Internal error (80)
slapadd: could not add entry dn="cn=virtualbox,dc=chello,dc=hu" (line=1): txn_aborted! Internal error (80)
_# 9.35% eta none elapsed none spd 43.7 k/s
Closing DB...Error, entries missing!
entry 1: dc=chello,dc=hu

bdb(dc=chello,dc=hu): Database handles still open at environment close
bdb_db_close: database "dc=chello,dc=hu": close failed: Invalid argument (22)
%kdump ktrace.out
%kdump -f ktrace.out > ktrace.txt
%grep open ktrace.txt
5810 slapd CALL open(0x28176832,O_RDONLY,0x1b6)
5810 slapd RET open -1 errno 2 No such file or directory
5810 slapd CALL open(0x2818b000,O_RDONLY,0)
5810 slapd RET open 3
5810 slapd CALL open(0x2818b040,O_RDONLY,0xbfbfe5dc)
5810 slapd RET open 3
5810 slapd CALL open(0x281870a0,O_RDONLY,0xbfbfe5dc)
5810 slapd RET open 3
0x0dc8 7065 6e00 7374 7263 6d70 006c 745f 646c 6f70 656e 006c 745f 5f65 7272 6f72 5f73 7472 696e 6700 6c74 5f5f 7365 745f 6c61 7374 5f65 7272 6f72 0070 7265 6f70 656e 5f4c 5458 5f67 6574 5f76 7461 626c 6500 6c74 5f5f |pen.strcmp.lt_dlopen.lt__error_string.lt__set_last_error.preopen_LTX_get_vtable.lt__|
5810 slapd CALL open(0x2818b080,O_RDONLY,0xbfbfe5dc)
5810 slapd RET open 3
5810 slapd CALL open(0x28187140,O_RDONLY,0xbfbfe5dc)
5810 slapd RET open 3
5810 slapd CALL open(0x28175a21,O_RDONLY,0xbfbfe3c8)
5810 slapd RET open 3
"/lib:/usr/lib:/usr/lib/compat:/usr/local/lib:/usr/local/libexec/openldap\0"
5810 slapd CALL open(0x281871a0,O_RDONLY,0xbfbfe5dc)
5810 slapd RET open 3
5810 slapd CALL open(0x28187200,O_RDONLY,0xbfbfe5dc)
5810 slapd RET open 3
0x0888 7368 005f 5f70 726f 7065 7274 795f 6669 6e64 006f 7065 6e00 5f5f 7072 6f70 6572 7469 6573 5f72 6561 6400 636c 6f73 6500 7379 736c 6f67 005f 5f73 7461 636b 5f63 686b 5f67 7561 7264 0042 6c6f 7766 6973 685f 696e |sh.__property_find.open.__properties_read.close.syslog.__stack_chk_guard.Blowfish_in|
5810 slapd CALL open(0x28187260,O_RDONLY,0xbfbfe5dc)
5810 slapd RET open 3
5810 slapd CALL open(0x281872c0,O_RDONLY,0xbfbfe5dc)
5810 slapd RET open 3
5810 slapd CALL open(0x28187320,O_RDONLY,0xbfbfe5dc)
5810 slapd RET open 3
5810 initial thread CALL open(0x28707030,O_RDONLY,0x1b6)
5810 initial thread RET open 3
5810 initial thread NAMI "/usr/local/etc/openldap/slapd.d"
5810 initial thread NAMI "/usr/local/etc/openldap/slapd.conf"
5810 initial thread CALL open(0x8101ac8,O_RDONLY,0x1b6)
5810 initial thread NAMI "/usr/local/etc/openldap/slapd.conf"
5810 initial thread RET open 4
include /usr/local/etc/openldap/schema/core.schema
#referral ldap://root.openldap.org
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
modulepath /usr/local/libexec/openldap
directory /var/db/openldap-data
include /usr/local/etc/openldap/schema/dhcp.schema
5810 initial thread NAMI "/usr/local/etc/openldap/schema/core.schema"
5810 initial thread CALL open(0x2871ec49,O_RDONLY,0x1b6)
5810 initial thread NAMI "/usr/local/etc/openldap/schema/core.schema"
5810 initial thread RET open 5
## This work is part of OpenLDAP Software .
5810 initial thread CALL open(0x2875c100,O_RDONLY,0x1b6)
5810 initial thread NAMI "/usr/local/libexec/openldap/back_bdb.la"
5810 initial thread RET open 5
# The name that we can dlopen(3).
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
libdir='/usr/local/libexec/openldap'
5810 initial thread CALL open(0x2818b240,O_RDONLY,0xbfbf2464)
5810 initial thread NAMI "/usr/local/libexec/openldap/back_bdb-2.4.so.8"
5810 initial thread RET open 5
5810 initial thread CALL open(0x287534a0,O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
5810 initial thread NAMI "/var/db/openldap-data/DUMMY"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/DUMMY"
5810 initial thread CALL open(0x28753440,O_RDONLY,0x1b6)
5810 initial thread NAMI "/var/db/openldap-data/DB_CONFIG"
5810 initial thread RET open 5
5810 initial thread NAMI "/usr/local/etc/openldap/schema/dhcp.schema"
5810 initial thread CALL open(0x28760449,O_RDONLY,0x1b6)
5810 initial thread NAMI "/usr/local/etc/openldap/schema/dhcp.schema"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data"
5810 initial thread CALL open(0x2874fd60,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
5810 initial thread NAMI "/var/db/openldap-data/alock"
5810 initial thread RET open 4
"bdb_db_open: database "dc=chello,dc=hu": unclean shutdown detected; attempting recovery.
5810 initial thread NAMI "/var/db/openldap-data/DB_CONFIG"
5810 initial thread CALL open(0x28760440,O_RDONLY,0x1b6)
5810 initial thread NAMI "/var/db/openldap-data/DB_CONFIG"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28760440,O_RDONLY,0)
5810 initial thread NAMI "/var/db/openldap-data/__db.rep.init"
5810 initial thread RET open -1 errno 2 No such file or directory
5810 initial thread CALL open(0x28760440,O_RDWR,0)
5810 initial thread NAMI "/var/db/openldap-data/__db.001"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28760440,O_RDWR,0)
5810 initial thread NAMI "/var/db/openldap-data/__db.001"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28774980,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.002"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/__db.002"
5810 initial thread CALL open(0x28774980,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.003"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/__db.003"
5810 initial thread CALL open(0x28774980,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.004"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/__db.004"
5810 initial thread CALL open(0x28774980,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.005"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/__db.005"
5810 initial thread CALL open(0x28774980,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.006"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/__db.006"
5810 initial thread NAMI "/var/db/openldap-data/__db.001"
5810 initial thread NAMI "/var/db/openldap-data"
5810 initial thread CALL open(0x28760440,O_NONBLOCK,0x28151626)
5810 initial thread NAMI "/var/db/openldap-data"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/."
5810 initial thread NAMI "/var/db/openldap-data/.."
5810 initial thread NAMI "/var/db/openldap-data/alock"
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread NAMI "/var/db/openldap-data/DB_CONFIG"
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread NAMI "/var/db/openldap-data/dn2id.bdb"
5810 initial thread CALL open(0x28760440,O_RDWR|O_CREAT|O_EXCL,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.001"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28760440,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.001"
5810 initial thread RET open 6
5810 initial thread CALL open(0x287749c0,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.002"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28774a00,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.003"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28774a40,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.004"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data"
5810 initial thread CALL open(0x28774a80,O_NONBLOCK,0x1)
5810 initial thread NAMI "/var/db/openldap-data"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/."
5810 initial thread NAMI "/var/db/openldap-data/.."
5810 initial thread NAMI "/var/db/openldap-data/alock"
5810 initial thread NAMI "/var/db/openldap-data/__db.001"
5810 initial thread NAMI "/var/db/openldap-data/__db.002"
5810 initial thread NAMI "/var/db/openldap-data/__db.003"
5810 initial thread NAMI "/var/db/openldap-data/__db.004"
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread NAMI "/var/db/openldap-data/DB_CONFIG"
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread NAMI "/var/db/openldap-data/dn2id.bdb"
5810 initial thread CALL open(0x28774ac0,O_RDONLY,0)
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28774a80,O_RDONLY,0)
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28774ac0,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.005"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28774b40,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/__db.006"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28774b80,O_RDONLY,0)
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data"
5810 initial thread CALL open(0x28774b80,O_NONBLOCK,0x1)
5810 initial thread NAMI "/var/db/openldap-data"
5810 initial thread RET open 6
5810 initial thread NAMI "/var/db/openldap-data/."
5810 initial thread NAMI "/var/db/openldap-data/.."
5810 initial thread NAMI "/var/db/openldap-data/alock"
5810 initial thread NAMI "/var/db/openldap-data/__db.001"
5810 initial thread NAMI "/var/db/openldap-data/__db.002"
5810 initial thread NAMI "/var/db/openldap-data/__db.003"
5810 initial thread NAMI "/var/db/openldap-data/__db.004"
5810 initial thread NAMI "/var/db/openldap-data/__db.005"
5810 initial thread NAMI "/var/db/openldap-data/__db.006"
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread NAMI "/var/db/openldap-data/DB_CONFIG"
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread NAMI "/var/db/openldap-data/dn2id.bdb"
5810 initial thread CALL open(0x28774bc0,O_RDONLY,0)
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread RET open 6
5810 initial thread NAMI "/var/db/openldap-data/db/id2entry.bdb"
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread CALL open(0x28774c00,O_RDWR,0)
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread RET open 6
5810 initial thread NAMI "/var/db/openldap-data/db/id2entry.bdb"
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread CALL open(0x28774c00,O_RDWR,0)
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread RET open 6
5810 initial thread CALL open(0x28774bc0,O_RDWR,0)
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread RET open 5
5810 initial thread CALL open(0x28774bc0,O_RDONLY,0)
5810 initial thread NAMI "/var/db/openldap-data/log.0000000002"
5810 initial thread RET open -1 errno 2 No such file or directory
5810 initial thread CALL open(0x28774c00,O_RDONLY,0)
5810 initial thread NAMI "/var/db/openldap-data/log.00002"
5810 initial thread RET open -1 errno 2 No such file or directory
5810 initial thread CALL open(0x28774bc0,O_RDWR,0)
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/db/id2entry.bdb"
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread CALL open(0x28774bc0,O_RDWR,0)
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/db/id2entry.bdb"
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread CALL open(0x28774bc0,O_RDWR|O_CREAT,0)
5810 initial thread NAMI "/var/db/openldap-data/id2entry.bdb"
5810 initial thread RET open 5
5810 initial thread NAMI "/var/db/openldap-data/db/dn2id.bdb"
5810 initial thread NAMI "/var/db/openldap-data/dn2id.bdb"
5810 initial thread NAMI "/var/db/openldap-data/dn2id.bdb"
5810 initial thread CALL open(0x28774c00,O_RDWR,0)
5810 initial thread NAMI "/var/db/openldap-data/dn2id.bdb"
5810 initial thread RET open 6
5810 initial thread NAMI "/var/db/openldap-data/db/dn2id.bdb"
5810 initial thread NAMI "/var/db/openldap-data/dn2id.bdb"
5810 initial thread CALL open(0x28774c00,O_RDWR|O_CREAT,0)
5810 initial thread NAMI "/var/db/openldap-data/dn2id.bdb"
5810 initial thread RET open 6
5810 initial thread CALL open(0xbfbf55c7,O_RDONLY,0)
5810 initial thread RET open -1 errno 2 No such file or directory
5810 initial thread CALL open(0xbfbf5537,O_RDONLY,0x281513e8)
5810 initial thread RET open 7
5810 initial thread CALL open(0x8149e10,O_RDONLY,0)
5810 initial thread RET open 7
5810 initial thread CALL open(0x8149e10,O_RDONLY,0)
5810 initial thread RET open 7
5810 initial thread CALL open(0x285e6720,O_RDONLY,0x70d08f)
5810 initial thread RET open 7
5810 initial thread NAMI "/var/db/openldap-data/db/objectClass.bdb"
5810 initial thread NAMI "/var/db/openldap-data/objectClass.bdb"
5810 initial thread NAMI "/var/db/openldap-data/db/objectClass.bdb"
5810 initial thread NAMI "/var/db/openldap-data/db/objectClass.bdb"
5810 initial thread NAMI "/var/db/openldap-data/db/__db.80000005.fd954058"
5810 initial thread NAMI "/var/db/openldap-data/__db.80000005.fd954058"
5810 initial thread NAMI "/var/db/openldap-data/db/__db.80000005.fd954058"
5810 initial thread CALL open(0x28774cc0,O_RDWR,0)
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread RET open 7
5810 initial thread CALL open(0x28761bf0,O_RDWR|O_CREAT|O_EXCL,S_IRUSR|S_IWUSR)
5810 initial thread NAMI "/var/db/openldap-data/db/__db.80000005.fd954058"
5810 initial thread RET open -1 errno 2 No such file or directory
5810 initial thread CALL open(0x28774cc0,O_RDONLY,0)
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread RET open 8
5810 initial thread NAMI "/var/db/openldap-data/db/__db.80000005.fd954058"
5810 initial thread NAMI "/var/db/openldap-data/__db.80000005.fd954058"
5810 initial thread NAMI "/var/db/openldap-data/db/__db.80000005.fd954058"
5810 initial thread NAMI "/var/db/openldap-data/db/__db.80000005.fd954058"
"bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
"bdb_index_read: Could not open DB objectClass
5810 initial thread CALL open(0x28774c80,O_RDONLY,0)
5810 initial thread NAMI "/var/db/openldap-data/log.0000000001"
5810 initial thread RET open 8
5810 initial thread NAMI "/var/db/openldap-data/db/dn2id.bdb"
5810 initial thread NAMI "/var/db/openldap-data/dn2id.bdb"
5810 initial thread CALL open(0x28774b80,O_RDWR,0)
5810 initial thread NAMI "/var/db/openldap-data/dn2id.bdb"
5810 initial thread RET open 5
"bdb(dc=chello,dc=hu): Database handles still open at environment close
%

5810 initial thread CALL open(0xbfbf55c7,O_RDONLY,0)
5810 initial thread RET open -1 errno 2 No such file or directory

Továbbra is gyenge a system call tracer működése. Ha nálam így indítana egyszer a FreeBSD, hogy nem mondja meg, mi volt az open string paramétere, akkor a következő 10 évben nem néznék rá, az is tuti.

Viszont az ls -l alapján megmondom, mi hiányzik neki: az objectClass.bdb, ami az objectClass alapú index kéne legyen.

Ott vezettél meg minket, hogy állításod szerint a slapd kurvajól működik, ami az ls -l tartalma alapján baromira nem igaz. Mondjuk abból, hogy az ldapadd gondot okoz, ráébredhettünk volna, hogy az ldapsearch is, márpedig akkor nyilvánvalóan nem kérdeztél még le semmit az adatbázisból...

A problémád egyébként az, hogy nincs egy rendes adatbázisod, rendes indexekkel.

Az ldap használata:

- telepíted a csomagokat
- elkészíted a slapd.conf-ot
- slapd-t elindítod
- indulóentry-ket betöltöd ldapadd-dal

Ha az indulóentry-k hiányoznak, akkor szarul fog menni az openldap (nagyjából semmit nem tudsz csinálni az adatbázissal, amíg azok nincsenek meg).

Ha a slapd.conf-ban az "index" sorokhoz hozzányúlsz, amikor már nem üres az adatbázis, akkor pedig a "slapindex is your friend" következik.

> Ha nálam így indítana egyszer a FreeBSD, hogy nem mondja meg, mi volt az open string paramétere, akkor a következő 10 évben nem néznék rá, az is tuti.

Csak halkan szólok, hogy egy "grep open tracefile" parancs kimenentét látod, míg a FreeBSD ktrace-je külön sorban, namei translation-ként írja ki a szükséges fájlnevet az open/access/stb utáni sorban :-)

(Nehogy már ezen múljon a FreeBSD használatod.)

Lehetne rá mondani azt hogy nem jók a jogok, de mivel root-ként vagyok bent... Még mielőtt valaki rákérdezne, így sem megy:

A jogok amúgy tényleg nem jók, de ez a slap* parancsokat nem fogják zavarni, ellenben a slapd-t fogják. Szóval minden root-ként futtatott kézi adatbázis manipuláló parancs után, mielőtt a slapd-t visszaindítod, helyre kell állítani a jogosultságokat, különben a slapd fog pampogni és nem menni.

Probald meg ldapadd-dal. Ez amugy tenyleg egy olyan ldif, amit az ldapadd is megesz.

ldapadd -D "" -xWf dhcpconfig.ldif

Kerni fog toled a binddn-hez egy jelszot, megadod, es kesz.

Persze, ehhez futni kell a slapd-nek.

Ha nem igy csinalod, akkor viszont indokold meg, hogy miert nem.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Már írtam fentebb, hogy ldapadd hogy SASL auth kell és az én slapd-mbe nincs befordítva (és nem is szeretném mert nincs rá szükségem.) Szóval ez lesz belőle:

%/usr/local/etc/rc.d/slapd start
Starting slapd.
%/usr/local/etc/rc.d/slapd status
slapd is running as pid 5895.
%ldapadd -D "" -xWf dhcpd.ldif
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
%

Illetve:

%ldapadd -D "cn=Manager,dc=chello,dc=hu" -xWf dhcpd.ldif
Enter LDAP Password:
adding new entry "cn=virtualbox, dc=chello,dc=hu"
ldap_add: No such object (32)

%

Az ldapadd -hoz nem értek, úgyhogy nem tudom ezek mit jelentenek. :-(

%ldapadd -D "" -xWf dhcpd.ldif
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
%

Ez azt jelenti, hogy üres usernévvel nem tudsz csatlakozni. Ez nem meglepő...


%ldapadd -D "cn=Manager,dc=chello,dc=hu" -xWf dhcpd.ldif
Enter LDAP Password:
adding new entry "cn=virtualbox, dc=chello,dc=hu"
ldap_add: No such object (32)

%

Ez azt jelenti, hogy az authentikáció sikerült (különben 49-et kaptál volna), viszont a berakni kívánt objektumot nem tudod berakni az adatbázisba, mert valami előfeltétel objektum nem létezik. Mondjuk akarsz csinálni "cn=virtualbox, dc=chello,dc=hu" entry-t, de nincs "dc=chello,dc=hu" entry az adatbázisban, mert mondjuk síküres az egész.

Nyomjál már egy slapcat-ot az adatbázisra... Szerintem töküres lesz.

- "SASL nincs befordítva": ParserException. Mi a jo budos francert kellene egy simple bind-hez (-x) SASL? Legalabb egy man ldapadd-ot nyomjal mar, legy olyan kedves, mielott valaszolsz.
- Szerintem te a komplett LDAP feltelepiteshez nem ertesz, szoval ezt a temat inkabb ne feszegessuk

Lentebb/fentebb is irjak, hogy egyreszt maga a LDAP szervered baromira nem mukodokepes, masreszrol pedig itt nagyon sok minden el van kefelve, jo lenne ha elmondanad, mit csinaltal a gepen azota, hogy eldontotted: itten marpedig LDAP szerver lesz..

A telepites menete pedig ugy kene, hogy menjen, hogy leallitod az LDAP szervert, az adatbazisat letorlod a francba (a DB_COFNIG fajlt ne torold!!!!), elinditod megint. Nem kell felni, letrehozza megint. (Tippre ez egy uj telepitveny, szoval semmi kart nem tudsz okozni).

Utana fogod magad, letoltod a migration tools-t innen (lap aljan a letoltesi link), felrakod, a migrate_common.ph-nak nekigyurkozol, elovasod minden kommentjet, kitoltod a megfelelo valtozokat az elejen, majd ezutan nyomsz egy ./migrate_base.pl -t, a kimenetet elmented mondjuk base.ldif neven. Ezutan a slapd.conf-ban belovod a rootdn-t es a rootpw-t (keress peldakat a neten), restartolod a slapd-t, es ldapadd-dal betoltod. Es bizz bennem, menni fog.

Ezek utan az alapvetesek utan lehet nekigyurkozni a meglevo ldif-nek, es megnezni, hogy mi a nyugje.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

>- "SASL nincs befordítva": ParserException. Mi a jo budos francert kellene egy simple bind-hez (-x) SASL? Legalabb egy man ldapadd-ot nyomjal mar, legy >olyan kedves, mielott valaszolsz.
>- Szerintem te a komplett LDAP feltelepiteshez nem ertesz, szoval ezt a temat inkabb ne feszegessuk

Ez tényleg azt jelenti hogy nem értek hozzá. De ha értenék hozzá akkor nem kértem volna segítséget ugye? A man -ját olvastam, de ezek szerint azt sem értettem meg. :-)

>Lentebb/fentebb is irjak, hogy egyreszt maga a LDAP szervered baromira nem mukodokepes, masreszrol pedig itt nagyon sok minden el van kefelve, jo lenne >ha elmondanad, mit csinaltal a gepen azota, hogy eldontotted: itten marpedig LDAP szerver lesz..

A következőket csináltam, egészen pontosan (fölírtam a parancsokat):

#portsnap fetch
#portsnap extract
#cd /usr/ports/net/openldap24-server
#make install clean

Ezután /etc/rc.conf -ba:

slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/"'
slapd_sockets="/var/run/openldap/ldapi"

Plusz beállítottam a hostname-et a slapd.conf -ba, és bemásoltam a DB_CONFIG.example -t az adatkönyvtárába (kiterjesztés nélkül).

Ezután tettem föl a DHCP-t:

cd /usr/ports/net/isc-dhcp42-server
make config (itt megadtam az LDAP-ot neki)
make install clean

Újabb dolgok a /etc/rc.conf-ba:

dhcpd_enable="YES" # dhcpd enabled?
dhcpd_flags="" # command option(s)
dhcpd_conf="/usr/local/etc/dhcpd.conf" # configuration file
dhcpd_ifaces="em0" # ethernet interface(s)
dhcpd_withumask="022" # file creation mask

Ezután kipróbáltam magában a dhcp szerver, miután beállítottam a /usr/local/etc/dhcpd.conf -ot, és működőképesnek bizonyult.

Végül megpróbáltam áttenni LDAP-ra, amihez ezt használtam föl:

http://wiki.ih.szie.hu/node/135

Úgyhogy ennek megfelelően módosítottam a slapd.conf -ot (beleírtam azt a 3 sort), utána lefuttattam a "dhcpd-conf-to-ldap.pl " script-et a dhcpd.conf -ra, ez csinált belőle dhcpd.ldif -et.

Végül jött ez:

/etc/init.d/slapd stop
slapadd -c -v -l dhcpd.ldif

és most ez dobja a kérdéses hibát. A fenti példában ( http://wiki.ih.szie.hu/node/135 ) nekik nem dobott hibát.

És igen, a slapcat az üres adatbázist ad vissza. Lehet hogy ez baj? (Tényleg nem értek hozzá, én csak elővettem a fenti példát és megpróbáltam utána csinálni.)

>Utana fogod magad, letoltod a migration tools-t innen (lap aljan a letoltesi link), felrakod, a migrate_common.ph-nak nekigyurkozol, elovasod minden >kommentjet, kitoltod a megfelelo valtozokat az elejen, majd ezutan nyomsz egy ./migrate_base.pl -t, a kimenetet elmented mondjuk base.ldif neven. Ezutan >a slapd.conf-ban belovod a rootdn-t es a rootpw-t (keress peldakat a neten), restartolod a slapd-t, es ldapadd-dal betoltod. Es bizz bennem, menni fog.
>
>Ezek utan az alapvetesek utan lehet nekigyurkozni a meglevo ldif-nek, es megnezni, hogy mi a nyugje.

Rendben, akkor ezt fogom tenni. Köszi. :-)

És igen, a slapcat az üres adatbázist ad vissza. Lehet hogy ez baj?

_Pontosan_ ez a baj.

Nem olvastad el az openldap install guide-ot, és nem csináltad meg azt, ami ott le van írva.
Pótold a hiányosságot (indulásként slapd leállít, adatbáziskönyvtárban összes fájl a DB_CONFIG kivételével letöröl, mert az ott jelenleg mind szemét, utána jöhet az install guide).

Nem feltetlen kell install guide, meg hatha nem tud angolul. Amit leirtam, az egy sokszor vegigzonogorazott metodus, 1000% hogy mukodik, a migrationtools ezen resze acelos, kb. 10 perc munkaval mukodo LDAP szervert lehet eloallitani vele. Ja, es a migrationtools miatt kisebb az esely, hogy hibazik.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Próbáltam végigcsinálni.

Először:

/usr/local/etc/rc.d/slapd stop

Ezután töröltem mindent a /var/db/openldap-data/ alól, kivéve a DB_CONFIG-ot.

Ezután letöltöttem a migration tool-t:

%fetch http://www.padl.com/download/MigrationTools.tgz
MigrationTools.tgz 100% of 20 kB 47 kBps
%tar xvfz MigrationTools.tgz

Ezután a migrate_common.ph -ba ezeket írtam:

$DEFAULT_MAIL_DOMAIN = "chello.hu";
$DEFAULT_BASE = "dc=chello,dc=hu";
$DEFAULT_MAIL_HOST = "mail.chello.hu";

Ez gond nélkül lefutott:

%./migrate_base.pl > base.ldif

A root pw-t már korábban beállítottam a slapd.conf -ba (feljebb a kommentek között megtalálod).

%/usr/local/etc/rc.d/slapd start
Starting slapd.
%ldapadd -D "cn=Manager,dc=chello,dc=hu" -xWf base.ldif
Enter LDAP Password:
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
%/usr/local/etc/rc.d/slapd status
slapd is not running.

Eközben a /var/log/debug-ban ez jelent meg:

Dec 12 19:04:50 virtualbox slapd[1284]: @(#) $OpenLDAP: slapd 2.4.26 (Dec 9 2011 22:16:10) $ administrator@virtualbox.chello.hu:/usr/ports/net/openldap24-server/work/openldap-2.4.26/servers/slapd
Dec 12 19:04:50 virtualbox slapd[1285]: bdb_db_open: database "dc=chello,dc=hu": db_open(/var/db/openldap-data/id2entry.bdb) failed: No such file or directory (2).
Dec 12 19:04:50 virtualbox slapd[1285]: backend_startup_one (type=bdb, suffix="dc=chello,dc=hu"): bi_db_open failed! (2)
Dec 12 19:04:50 virtualbox slapd[1285]: bdb_db_close: database "dc=chello,dc=hu": alock_close failed
Dec 12 19:04:50 virtualbox slapd[1285]: slapd stopped.

Úgy emlékszem hogy volt ott ilyen file, de kitöröltem. Azt írtad hogy ne aggódjak, mert újra létre fogja hozni. Hát nem teszi.

Tudom túl sok a bajom. :-)

Megpróbáltam az installation guide alapján is: http://www.openldap.org/doc/admin23/quickstart.html

Ehhez először töröltem az egész /var/db/openldap könyvtárat, leszedtem az openldap szervert és újratelepíttem. Ezután mentem végig a lépéseken, beállítottam a rootpw-t létrehoztam az általuk megadott tartalmú ldif-et (ez már a 10. lépés a guide-ban):

------------------------------------------
dn: dc=virtualbox,dc=chello,dc=hu
objectclass: dcObject
objectclass: organization
o: Teszt
dc: virtualbox

dn: cn=Manager,dc=virtualbox,dc=chello,dc=hu
objectclass: organizationalRole
cn: Manager
------------------------------------------

És megpróbáltam hozzáadni:

%/usr/local/etc/rc.d/slapd restart
Stopping slapd.
Starting slapd.
%ldapadd -x -D "cn=Manager,dc=virtualbox,dc=chello,dc=hu" -W -f base.ldif
Enter LDAP Password:
adding new entry "dc=virtualbox,dc=chello,dc=hu"
ldap_add: Other (e.g., implementation specific) error (80)
additional info: index generation failed

Érdekes, most egy harmadik fajta hibát kaptam. A /var/log/debug-ban ez jelent meg:

Dec 12 19:18:43 virtualbox slapd[34323]: conn=1000 op=0 BIND dn="cn=Manager,dc=virtualbox,dc=chello,dc=hu" method=128
Dec 12 19:18:43 virtualbox slapd[34323]: conn=1000 op=0 BIND dn="cn=Manager,dc=virtualbox,dc=chello,dc=hu" mech=SIMPLE ssf=0
Dec 12 19:18:43 virtualbox slapd[34323]: conn=1000 op=0 RESULT tag=97 err=0 text=
Dec 12 19:18:43 virtualbox slapd[34323]: connection_input: conn=1000 deferring operation: binding
Dec 12 19:18:43 virtualbox slapd[34323]: conn=1000 op=1 ADD dn="dc=virtualbox,dc=chello,dc=hu"
Dec 12 19:18:43 virtualbox slapd[34323]: bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)
Dec 12 19:18:43 virtualbox slapd[34323]: bdb_index_read: Could not open DB objectClass
Dec 12 19:18:43 virtualbox slapd[34323]: conn=1000 op=1 RESULT tag=105 err=80 text=index generation failed
Dec 12 19:18:43 virtualbox slapd[34323]: conn=1000 op=2 UNBIND
Dec 12 19:18:43 virtualbox slapd[34323]: conn=1000 fd=11 closed

A lényeg itt szerintem a "Could not open DB objectClass" üzenet. Ami pont ugyan az mint amit slapadd-al is kaptam, csak itt valami miatt más hibakódot ad.

Szóval ez sem jött be. Van esetleg valami más installation guide amit kipróbálhatnék?

Én vagyok ennyire hülye, vagy valami nem úgy működik ezen a gépen ahogy kellene?

A konfig fájl szerint az adatbázis gyökere a dc=chello,dc=hu:

database bdb
suffix "dc=chello,dc=hu"

Ez azt jelenti, hogy ha az üres adatbázisban bármi mást próbálsz létrehozni ELSŐ entryként, mint a dc=chello,dc=hu-t, akkor lyukra fogsz futni. Mert hiányzik a gyökér node, amire épülhetne a többi, ezért a dc=virtualbox,dc=chello,dc=hu entry-t nem tudod berakni. Az egy másik kérdés, hogy az az elkefélt hibaüzenet, az valójában ennek szólt-e, vagy sem.

Vagy átírtad a konfig fájlt is az előző próbálkozáshoz képest, és most már dc=virtualbox,dc=chello,dc=hu van suffix-ként?

Így próbáld:

Üres /var/lib/izémizé mappa, nem fut a slapd, de a config fájl az helyes!

Ezt, slapaddal adod hozzá (slapadd -f /etc/configfájl -b dc=chello,dc=hu -l ezafajl.ldif), ha dc=chello,dc=hu az ldap root-od (suffix a config fájlba):
dn: dc=chello,dc=hu
objectClass: dcObject
objectClass: organization
dc: chello
o: chello

Ezután egy slapindex, majd a /var/lib/openldap mappát chownold át arra, aki futtatja a slapd-t.

El lehet indítani a slapd-t, ldapsearch-re vissza kell kapnod a dc=chello,dc=hu bejegyzést ( ldapsearch -h ldap.halozatom -x -W -D cn=admin,dc=chello,dc=hu )

Majd ldapaddal mehet bele a további tartalom.

Ha fut a slapd, es megvan a rootdn, akkor mindegy, hogy mi van a db-ben, a konfig fajlhoz fog authentikalni a slapd.
Azert mondtam a migrationtools-t, mert az megfelelo ldif-et general, megfelelo sorrendekkel.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Nekem szokott.

Konfig fájlt elkészít.
Halál üres adatbázissal slapd elindít.
Root dn-t + directory manager dn-t cryptelt jelszóval ldif-ből ldapadd-dal berak (authentikációhoz ugye a konfig fájlban levő dn+pass-t használjuk).
Utána slapd leállít.
Konfig fájlból pass-t töröl.
Ezután slapd visszaindít.

Innentől kezdve minden megy ldap*-gal, directory manager pedig már az adatbázisból authentikálódik.

Íme:

%/usr/local/etc/rc.d/slapd stop
Stopping slapd.
%mkdir ~/backup
%mv /var/db/openldap-data/* ~/backup
%mv ~/backup/DB_CONFIG /var/db/openldap-data/
%cd
%cat > root.ldif
dn: dc=virtualbox,dc=chello,dc=hu
objectClass: dcObject
objectClass: organization
dc: virtualbox
o: virtualbox
^D
%grep suffix /usr/local/etc/openldap/slapd.conf
suffix "dc=virtualbox,dc=chello,dc=hu"
%grep ^rootdn /usr/local/etc/openldap/slapd.conf
rootdn "cn=Manager,dc=virtualbox,dc=chello,dc=hu"
%slapadd -f /usr/local/etc/openldap/slapd.conf -l root.ldif
bdb_db_open: database "dc=virtualbox,dc=chello,dc=hu": db_open(/var/db/openldap-data/id2entry.bdb) failed: No such file or directory (2).
backend_startup_one (type=bdb, suffix="dc=virtualbox,dc=chello,dc=hu"): bi_db_open failed! (2)
slap_startup failed
%

Szóval ez a "töküreshez slapadd-olok" dolog továbbra sem megy. Megpróbáltam nemüreshez is:

%cp ~/backup/* /var/db/openldap-data/
%slapadd -f /usr/local/etc/openldap/slapd.conf -l root.ldif
slapadd: line 1: database #1 (dc=virtualbox,dc=chello,dc=hu) not configured to hold "dc=chello,dc=hu"; no database configured for that naming context
_#################### 100.00% eta none elapsed none fast!
Closing DB...
%

Na ez már érdekes! Egészen másfajta üzenet! Kitaláltam olyan hülyeségeket is hogy ez egy hierarchikus adatbázis és miért ne próbáljam meg fölfelé építeni:

%cat > root.ldif
dn: dc=hu
objectClass: dcObject
objectClass: organization

dn: dc=chello,dc=hu
objectClass: dcObject
objectClass: organization
dc: chello
o: chello

dn: dc=virtualbox,dc=chello,dc=hu
objectClass: dcObject
objectClass: organization
dc: virtualbox
o: virtualbox
%slapadd -f /usr/local/etc/openldap/slapd.conf -l root.ldif
slapadd: line 1: database #1 (dc=virtualbox,dc=chello,dc=hu) not configured to hold "dc=hu"; no database configured for that naming context
_#### 22.69% eta none elapsed none spd 800.2 k/s
Closing DB...
%

Meg egyéb más variációkban is, de most legtöbbször ez az üzenet hogy "no database configured for that naming context".

Mert tényleg nem érted...

Ha az adatbázis a dc=virtualbox,dc=chello,dc=hu ponton kezdődik, akkor abba csak olyan entry-ket lehet beírni, amik erre végződnek. A dc=chello,dc=hu meg a dc=hu entry-t nem tudod berakni ebbe az adatbázisba, bárhogy erőlködsz.

Szóval ez a "töküreshez slapadd-olok" dolog továbbra sem megy.

Amúgy kipróbáltam üres perceimben, és ami neked nem megy, az nálam gyönyörűen.

Tehát:
-üres adatbázis
-slapadd-dal az adatbázis gyökerét belerakom
-slapd-t beindítom
-ldapsearch szépen mutatja, slapcat szépen mutatja

-üres adatbázis
-slapd-t beindítom
-ldapsearch üres adatbázist mutat
-ldapadd-dal az adatbázis gyökerét belerakom
-ldapsearch szépen mutatja, slapcat szépen mutatja

Mind bdb, mind hdb backenddel megy. Openldap 2.4.24, db 4.8.30

slapd.conf:
include /etc/openldap/schema/core.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
database bdb
suffix "dc=my-domain,dc=com"
checkpoint 32 30
rootdn "cn=Manager,dc=my-domain,dc=com"
rootpw secret
directory /var/lib/openldap-data
index objectClass eq

/var/run/openldap/slapd.args:
/usr/lib/openldap/slapd -u ldap -g ldap

/var/lib/openldap-data/DB_CONFIG nincs

gyökér ldif:
dn: dc=my-domain,dc=com
objectClass: dcObject
objectClass: organization
dc: my-domain
o: my-domain

ldapadd:
ldapadd -D "cn=Manager,dc=my-domain,dc=com" -w secret -x

ldapsearch:
ldapsearch -b "dc=my-domain,dc=com"

Akkor végülis az a probléma gyökere, hogy nekem a gyökér ldif-et sem sikerül berakni! Minden ugyan az mint nálad, kivéve hogy a gyökér ldif hozzáadásánál ilyen hibát dob:

bdb_db_cache: db_open(objectClass) failed: No such file or directory (2)

ami értelmes, mert a Te gyökér ldif-edben is szerepelt egy "objectClass: dcObject" rész, és úgy tűnik hogy nálam az objectClass -t nem tudja értelmezni. Arra akar egy db_open -t hívni, de minek, mikor az egy beépített core dolog kellene hogy legyen.

Talán a legelső próbálkozásom sem volt rossz (annak ellenére hogy azt sem tudtam mit csinálok) mert ott is ez a hiba jött elő.

Nos ezek után a következőt csináltam. Megnéztem a core.schema-t. És találtam mellette egy core.ldif -et! És abban van benne ez:

objectClass: olcSchemaConfig
cn: core

Tehát a következő próbám ez volt:

%slapadd -f /usr/local/etc/openldap/slapd.conf -l /usr/local/etc/openldap/schema/core.ldif
slapadd: line 1: database #1 (dc=virtualbox,dc=chello,dc=hu) not configured to hold "cn=core,cn=schema,cn=config"; did you mean to use database #0 (cn=config)?
_#################### 100.00% eta none elapsed none fast!
Closing DB...
%

Itt rákérdez hogy "did you mean to use database #0 (cn=config)?". A -n 0 kapcsolóval nem megy:

%slapadd -f /usr/local/etc/openldap/slapd.conf -n 0 -l /usr/local/etc/openldap/schema/core.ldif
slapadd: could not open database.
%

Ezek csak szánalmas kis próbálkozások. :-) Látszólag mindent ugyan úgy csinálok mint Te, és mégsem megy.

ami értelmes, mert a Te gyökér ldif-edben is szerepelt egy "objectClass: dcObject" rész, és úgy tűnik hogy nálam az objectClass -t nem tudja értelmezni. Arra akar egy db_open -t hívni, de minek, mikor az egy beépített core dolog kellene hogy legyen.

Nem.

Az objectClass mezőre definiáltál a konfig fájlban egy indexet. Ez lakik az objectClass.bdb nevű fájlban.
Amikor az első entry-t berakod az adatbázisba, akkor hozza létre ezt a fájlt. Nekem. Nálad nem hozza létre.

root@odon:~>ls -l /var/lib/openldap-data/
total 4
-rw------- 1 root root 921 Nov 4 15:45 DB_CONFIG.example
root@odon:~>/etc/init.d/slapd start
* Starting ldap-server ... [ ok ]
root@odon:~>ls -l /var/lib/openldap-data/
total 824
-rw------- 1 root root 921 Nov 4 15:45 DB_CONFIG.example
-rw------- 1 ldap ldap 24576 Dec 13 19:41 __db.001
-rw------- 1 ldap ldap 188416 Dec 13 19:41 __db.002
-rw------- 1 ldap ldap 270336 Dec 13 19:41 __db.003
-rw------- 1 ldap ldap 163840 Dec 13 19:41 __db.004
-rw------- 1 ldap ldap 548864 Dec 13 19:41 __db.005
-rw------- 1 ldap ldap 32768 Dec 13 19:41 __db.006
-rw-r--r-- 1 ldap ldap 2048 Dec 13 19:41 alock
-rw------- 1 ldap ldap 8192 Dec 13 19:41 dn2id.bdb
-rw------- 1 ldap ldap 32768 Dec 13 19:41 id2entry.bdb
-rw------- 1 ldap ldap 10485760 Dec 13 19:41 log.0000000001
root@odon:~>ldapadd -D "cn=Manager,dc=my-domain,dc=com" -w secret -x
dn: dc=my-domain,dc=com
objectClass: dcObject
objectClass: organization
dc: my-domain
o: my-domain
adding new entry "dc=my-domain,dc=com"

root@odon:~>ls -l /var/lib/openldap-data/
total 852
-rw------- 1 root root 921 Nov 4 15:45 DB_CONFIG.example
-rw------- 1 ldap ldap 24576 Dec 13 19:41 __db.001
-rw------- 1 ldap ldap 188416 Dec 13 19:42 __db.002
-rw------- 1 ldap ldap 270336 Dec 13 19:42 __db.003
-rw------- 1 ldap ldap 163840 Dec 13 19:42 __db.004
-rw------- 1 ldap ldap 548864 Dec 13 19:42 __db.005
-rw------- 1 ldap ldap 32768 Dec 13 19:42 __db.006
-rw-r--r-- 1 ldap ldap 2048 Dec 13 19:41 alock
-rw------- 1 ldap ldap 8192 Dec 13 19:41 dn2id.bdb
-rw------- 1 ldap ldap 32768 Dec 13 19:41 id2entry.bdb
-rw------- 1 ldap ldap 10485760 Dec 13 19:42 log.0000000001
-rw------- 1 ldap ldap 8192 Dec 13 19:42 objectClass.bdb
root@odon:~>

Látszólag mindent ugyan úgy csinálok mint Te, és mégsem megy.

Akkor esetleg az eszközökben lehet a probléma... OS, openldap, libdb.

Igen, nálam tényleg nem hozza létre!

Ezek szerint a db_open(objectClass.bdb) hívás azért failed-ezik mert nem tudja létrehozni a file-t. Én is arra gondolnék hogy a libdb a rossz, viszont akkor a többi bdb állományt akkor hogy a túróba hozta létre?

Plusz vegyük hozzá hogy az oprendszer max. egy hetes, a ports tree max. egy hetes, és openldap forrásból lett fordítva.

Elmondom mi lesz. Először forrásból újrafordítom az egész rendszert, a kernelt meg a libdb-t és végül az openldap-ot is megint. Ha úgy sem megy akkor telepítek egy másik virtuális gépet másfajta rendszerrel (pl. debian) és megpróbálom ott is végigcsinálni pontosan ugyan ezeket a lépéseket. Ha ott nem lesz gond, akkor ez valami FreeBSD specifikus baj lesz és tovább küldöm a port maintainer-nek hogy nézze meg.

Majd megírom a fejleményeket. Elnézést kérek mindenkitől hogy ennyire sokat problémáztam. Lehet nem lett volna ennyire nehézkes ha nem hibás az alap telepítésem.