LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Server (https://www.linuxquestions.org/questions/linux-server-73/)
-   -   openLDAP ldap_add: No such object (32) (https://www.linuxquestions.org/questions/linux-server-73/openldap-ldap_add-no-such-object-32-a-761279/)

deibertine 10-12-2009 01:00 AM

openLDAP ldap_add: No such object (32)
 
I've been getting this error when importing users in the openldap db:
ldapsrv1:~# ldapadd -x -W -D "cn=admin,dc=ldapsrv1,dc=csaa,dc=com" -f ~/group.ldif
Enter LDAP Password:
adding new entry "cn=root,ou=Group,dc=ldapsrv1,dc=csaa,dc=com"
ldap_add: No such object (32)
matched DN: dc=ldapsrv1,dc=csaa,dc=com

Can someone please advise?
Cheers!
DB

bathory 10-12-2009 02:08 AM

You should post the ldif file and maybe slapd.conf, because without them we cannot diagnose what the problem is

Regards

deibertine 10-12-2009 04:18 AM

Quote:

Originally Posted by bathory (Post 3716107)
You should post the ldif file and maybe slapd.conf, because without them we cannot diagnose what the problem is

Regards

Thanks for the reply.

Here are a few entries in my group ldif:
dn: cn=root,ou=Group,dc=ldapsrv1,dc=csaa,dc=com
objectClass: posixGroup
objectClass: top
cn: root
userPassword: {crypt}x
gidNumber: 0

dn: cn=daemon,ou=Group,dc=ldapsrv1,dc=csaa,dc=com
objectClass: posixGroup
objectClass: top
cn: daemon
userPassword: {crypt}x
gidNumber: 1

Here's my slapd.conf:

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.
#######################################################################
# Global Directives:
# Features to permit
allow bind_v2
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile /var/run/slapd/slapd.pid
# List of arguments that were passed to the server
argsfile /var/run/slapd/slapd.args
# Read slapd.conf(5) for possible values
loglevel none
# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
moduleload back_hdb
# The maximum number of entries that is returned for a search operation
sizelimit 500
# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1
#######################################################################
# Specific Backend Directives for hdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend hdb
#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend <other>
#######################################################################
# Specific Directives for database #1, of type hdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database hdb
# The base of your directory in database #1
suffix "dc=ldapsrv1,dc=csaa,dc=com"
# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn "cn=admin,dc=ldapsrv1,dc=csaa,dc=com"
# Where the database file are physically stored for database #1
directory "/var/lib/ldap"
# The dbconfig settings are used to generate a DB_CONFIG file the first
# time slapd starts. They do NOT override existing an existing DB_CONFIG
# file. You should therefore change these settings in DB_CONFIG directly
# or remove DB_CONFIG and restart slapd for changes to take effect.
# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0
# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057 for more
# information.
# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500
# Indexing options for database #1
index objectClass eq
# Save the time that the entry gets modified, for database #1
lastmod on
# Checkpoint the BerkeleyDB database periodically in case of system
# failure and to speed slapd shutdown.
checkpoint 512 30
# Where to store the replica logs for database #1
# replogfile /var/lib/ldap/replog
# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=ldapsrv1,dc=csaa,dc=com" write
by anonymous auth
by self write
by * none
# Ensure read access to the base for things like
# supportedSASLMechanisms. Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
access to dn.base="" by * read
# The admin dn has full write access, everyone else
# can read everything.
access to *
by dn="cn=admin,dc=ldapsrv1,dc=csaa,dc=com" write
by * read
# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
# by dn="cn=admin,dc=ldapsrv1,dc=csaa,dc=com" write
# by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be hdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database <other>

# The base of your directory for database #2
#suffix "dc=debian,dc=org"

bathory 10-12-2009 04:38 AM

First of all you haven't define a password for rootdn. Are you sure you want this?

You have to add first the following 2 DNs, before adding users:
dc=ldapsrv1,dc=csaa,dc=com
ou=Group,dc=ldapsrv1,dc=csaa,dc=com

deibertine 10-12-2009 09:06 PM

Quote:

Originally Posted by bathory (Post 3716220)
First of all you haven't define a password for rootdn. Are you sure you want this?

You have to add first the following 2 DNs, before adding users:
dc=ldapsrv1,dc=csaa,dc=com
ou=Group,dc=ldapsrv1,dc=csaa,dc=com

Where and how would I define the password for rootdn? I have defined one password in admin when I did the initial setup dpkg-reconfigure slapd

Where would I add the 2 following DNs you mentioned?
Please advise.

Thanks mate!
DB

bathory 10-13-2009 12:34 AM

Quote:

Where and how would I define the password for rootdn? I have defined one password in admin when I did the initial setup dpkg-reconfigure slapd
In slapd.conf, along with rootdn there should be also a rootpw entry for the administrator.
When you run ldap commands, like ldapadd, with the -W option it asks you for a password which in turn is compared with rootpw. To create one (since you use crypt) run:
Code:

slappasswd -h {CRYPT}
Give the password you want twice and copy/paste the output in rootpw in slapd.conf:
Code:

rootdn "cn=admin,dc=ldapsrv1,dc=csaa,dc=com"
rootpw {CRYPT}blahblah

Then you can restart slapd.
Quote:

Where would I add the 2 following DNs you mentioned?
Please advise.
Before adding users, groups etc, you must first create the basedn, that is "dn: dc=ldapsrv1,dc=csaa,dc=com" in your case, as the directory tree is hierarchical. Also you have to add "dn: ou=Group,dc=ldapsrv1,dc=csaa,dc=com" in order to add users under that dn.
So you have to use a ldif with something like:
Code:

dn: dc=ldapsrv1,dc=csaa,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: ldapsrv1
dc: ldapsrv1

dn: ou=Group,dc=ldapsrv1,dc=csaa,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Group

You can take a look at this tutorial for more info.

Regards

deibertine 10-13-2009 06:43 PM

Quote:

Originally Posted by bathory (Post 3717274)
Before adding users, groups etc, you must first create the basedn, that is "dn: dc=ldapsrv1,dc=csaa,dc=com" in your case, as the directory tree is hierarchical. Also you have to add "dn: ou=Group,dc=ldapsrv1,dc=csaa,dc=com" in order to add users under that dn.
So you have to use a ldif with something like:
Code:

dn: dc=ldapsrv1,dc=csaa,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: ldapsrv1
dc: ldapsrv1

dn: ou=Group,dc=ldapsrv1,dc=csaa,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Group

You can take a look at this tutorial for more info.

Regards

Sorry but this is where I'm confused about.
Where would I create the basedn you stated?
I created an ldif file called people_group.ldif with these values:
dn: dc=ldapsrv1,dc=csaa,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: ldapsrv1
dc: ldapsrv1

dn: ou=People,dc=ldapsrv1,dc=csaa,dc=com
objectClass: top
objectClass: organizationalUnit
ou: People

dn: dc=ldapsrv1,dc=csaa,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: ldapsrv1
dc: ldapsrv1

dn: ou=Group,dc=ldapsrv1,dc=csaa,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Group

I'm basically migrating my current unix users from an old server and copying them on to our ldap server following this tutorial:
http://www.debuntu.org/ldap-server-a...x-ldap-clients

These commands on where I get stuck:
# ldapadd -x -W -D "cn=admin,dc=ldapsrv1,dc=csaa,dc=com" -f ~/group.ldif
# ldapadd -x -W -D "cn=admin,dc=ldapsrv1,dc=csaa,dc=com" -f ~/passwd.ldif

I get this error when initiating the above commands:
root@ldapsrv1:~# ldapadd -x -W -D "cn=admin,dc=ldapsrv1,dc=csaa,dc=com" -f ~/group.ldif
Enter LDAP Password:
adding new entry "cn=admin,dc=ldapsrv1,dc=csaa,dc=com"
ldap_add: No such object (32)
matched DN: dc=ldapsrv1,dc=csaa,dc=com

bathory 10-14-2009 12:30 AM

Have you created and added the people_group.ldif? It must be done first according to the tutorial you've used.
Also run:
Code:

ldapsearch -x -z 100 -b 'dc=ldapsrv1,dc=csaa,dc=com' '(objectclass=*)' -D "cn=admin,dc=ldapsrv1,dc=csaa,dc=com" -W
to see if you already have an entry for the basedn?
What happens if you give a wrong password when prompted?


All times are GMT -5. The time now is 11:53 PM.