hello all,
we are trying to setup a ldap server which uses the mysql as back-end instead of bdb backend.we have installed slapd and ldap-utils in debian-etch .we also have installed mylibodbc, mysql-client-5,mysql-server-5. we have established the mysql-ODBC connectivity and tested the connectivity using isql.we have configured the slapd.conf file to connect mysql and when we tried to add entries using ldapadd , we get the following err
ldap_add: Server is unwilling to perform (53) additional info: operation not permitted within namingContext
this is the slapd.conf file
# 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 0
# Where the dynamically loaded modules are stored modulepath /usr/lib/ldap moduleload back_sql
# 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 bdb: # Backend specific directives apply to this backend until another # 'backend' directive occurs backend sql checkpoint 512 30
####################################################################### # 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 bdb: # Database specific directives apply to this databasse until another # 'database' directive occurs database sql suffix "dc=example,dc=org" rootdn "cn=admin,dc=example,dc=org" rootpw ldap dbname ldap dbuser new dbpasswd new #insentry_query "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values ((select max(id)+1 from ldap_entries),?,?,?,?)" #upper_func "upper" #strcast_func "text" #concat_pattern "?||?" #has_ldapinfo_dn_ru no #schemacheck on
lastmod off
# The base of your directory in database #1 suffix "dc=example,dc=org"
# rootdn directive for specifying a superuser on the database. This is needed # for syncrepl. rootdn "cn=admin,dc=example,dc=org" rootpw secret # Where the database file are physically stored for database #1 directory "/var/lib/ldap"
# 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 cn,sn,ou # Save the time that the entry gets modified, for database #1 lastmod on
# 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=example,dc=org" 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=example,dc=org" write by * none
# 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=example,dc=org" write # by dnattr=owner write
####################################################################### # Specific Directives for database #2, of type 'other' (can be bdb 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"
vinodh kumar wrote:
hello all,
we are trying to setup a ldap server which uses the mysql as back-end instead of bdb backend.we have installed slapd and ldap-utils in debian-etch .we also have installed mylibodbc, mysql-client-5,mysql-server-5. we have established the mysql-ODBC connectivity and tested the connectivity using isql.we have configured the slapd.conf file to connect mysql and when we tried to add entries using ldapadd , we get the following err
ldap_add: Server is unwilling to perform (53) additional info: operation not permitted within namingContext
this is the slapd.conf file
Do you realize that most of the directives in your slapd.conf are back-bdb specific, and thus meaningless when using back-sql? Do you realize that back-sql is NOT a transparent replacement for back-bdb? How did you define the LDAP to SQL mappings in the database? Did you read http://www.openldap.org/faq/data/cache/978.html? Did you ultimately read http://www.openldap.org/faq/data/cache/378.html?
Short answer to your specific problem: back-sql needs specific mapping between LDAP and SQL data to allow writing (in that case, adding an entry). Probably, you didn't provide any.
p.
Ing. Pierangelo Masarati OpenLDAP Core Team
SysNet s.r.l. via Dossi, 8 - 27100 Pavia - ITALIA http://www.sys-net.it --------------------------------------- Office: +39 02 23998309 Mobile: +39 333 4963172 Email: pierangelo.masarati@sys-net.it ---------------------------------------
hello all...
Read the links which you directed and we followed t...we set up the mysql table structure as follows..thanks for ur response:) we added an ldif file... dn: cn:new,dc=example,dc=com objectClass:inetOrgPerson cn:new sn:a uid:new displayname:neww
while doing ldapserach we encountered error..
ldapadd -x -D "cn=admin,dc=example,dc=com" -f /etc/ldap/ldiffs/ocnew.ldif -w cas
adding new entry "cn=new,dc=example,dc=com" ldap_add: Server is unwilling to perform (53) additional info: operation not permitted within namingContext
select * from ldap_attr_mappings;
+-----+-----------+----------- ----+---------------------------------------+------------+-----------+------------+----------+-------------+-------------+---------------+ | id | oc_map_id | name | sel_expr | sel_expr_u | from_tbls | join_where | add_proc | delete_proc | param_order | expect_return | +-----+-----------+---------------+---------------------------------------+------------+-----------+------------+----------+-------------+-------------+---------------+ | 1 | 1 | cn | concat(persons.name,,persons.surname) | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 2 | 1 | sn | persons.surname | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 4 | 1 | displayname | persons.displayname | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 3 | 1 | uid | persons.uid | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 101 | 101 | uid | persons.name | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 102 | 101 | uidNumber | 2000 | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 103 | 101 | gidNumber | 2000 | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 104 | 101 | homeDirectory | persons.name | NULL | persons | NULL | NULL | NULL | 3 | 0 | +-----+-----------+---------------+---------------------------------------+------------+-----------+------------+----------+-------------+-------------+---------------+
select * from ldap_entry_objclasses; +----------+------------------+ | entry_id | oc_name | +----------+------------------+ | 2 | posixAccount | | 7 | extensibleObject | | 1 | inetOrgPerson | +----------+------------------+
select * from ldap_entries; +----+-------------------+-----------+--------+--------+ | id | dn | oc_map_id | parent | keyval | +----+-------------------+-----------+--------+--------+ | 1 | dc=example,dc=com | 1 | 0 | 1 | | 2 | cn=sri ram | 1 | 1 | 2 | +----+-------------------+-----------+--------+--------+
select * from ldap_oc_mappings; +-----+---------------+---------+--------+-------------+-------------+---------------+ | id | name | keytbl | keycol | create_proc | delete_proc | expect_return | +-----+---------------+---------+--------+-------------+-------------+---------------+ | 1 | inetOrgPerson | persons | id | NULL | NULL | 0 | | 101 | posixAccount | persons | id | NULL | NULL | 0 | +-----+---------------+---------+--------+-------------+-------------+---------------+
select * from persons; +----+------+---------+------+-------------+ | id | name | surname | uid | displayname | +----+------+---------+------+-------------+ | 1 | sri | ram | 12 | sriram | +----+------+---------+------+-------------+
while doing ldapsearch after this we encountered the error,
ldapsearch error # extended LDIF # # LDAPv3 # base <> with scope subtree # filter: (objectclass=*) # requesting: ALL #
# search result search: 2 result: 80 Internal (implementation specific) error
# numResponses: 1
what is the problem here?? whats that internal error??
our slapd.conf looks like...
# 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 0
# Where the dynamically loaded modules are stored modulepath /usr/lib/ldap moduleload back_sql
# 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 bdb: # Backend specific directives apply to this backend until another # 'backend' directive occurs backend sql checkpoint 512 30
####################################################################### # 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 bdb: # Database specific directives apply to this databasse until another # 'database' directive occurs database sql suffix "dc=example,dc=com" rootdn "cn=admin,dc=example,dc=com" rootpw ldap dbname ldap dbuser new dbpasswd new insentry_query "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values ((select max(id)+1 from ldap_entries),?,?,?,?)" upper_func "upper" strcast_func "text" concat_pattern "?||?" has_ldapinfo_dn_ru no schemacheck on
lastmod off
# The base of your directory in database #1 suffix "dc=example,dc=com"
# rootdn directive for specifying a superuser on the database. This is needed # for syncrepl. rootdn "cn=admin,dc=example,dc=com" rootpw XXX # Where the database file are physically stored for database #1 directory "/var/lib/ldap"
# 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 cn,sn,ou # Save the time that the entry gets modified, for database #1 lastmod on
# 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=example,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=example,dc=com" write by * none
# 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=example,dc=com" write # by dnattr=owner write
####################################################################### # Specific Directives for database #2, of type 'other' (can be bdb 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"
On Tue, Feb 26, 2008 at 12:44 AM, Pierangelo Masarati ando@sys-net.it wrote:
vinodh kumar wrote:
hello all,
we are trying to setup a ldap server which uses the mysql as back-end instead of bdb backend.we have installed slapd and ldap-utils in debian-etch .we also have installed mylibodbc, mysql-client-5,mysql-server-5. we have established the mysql-ODBC connectivity and tested the connectivity using isql.we have configured the slapd.conf file to connect mysql and when
we
tried to add entries using ldapadd , we get the following err
ldap_add: Server is unwilling to perform (53) additional info: operation not permitted within namingContext
this is the slapd.conf file
Do you realize that most of the directives in your slapd.conf are back-bdb specific, and thus meaningless when using back-sql? Do you realize that back-sql is NOT a transparent replacement for back-bdb? How did you define the LDAP to SQL mappings in the database? Did you read http://www.openldap.org/faq/data/cache/978.html? Did you ultimately read http://www.openldap.org/faq/data/cache/378.html?
Short answer to your specific problem: back-sql needs specific mapping between LDAP and SQL data to allow writing (in that case, adding an entry). Probably, you didn't provide any.
p.
Ing. Pierangelo Masarati OpenLDAP Core Team
SysNet s.r.l. via Dossi, 8 - 27100 Pavia - ITALIA http://www.sys-net.it
Office: +39 02 23998309 Mobile: +39 333 4963172 Email: pierangelo.masarati@sys-net.it
vinodh kumar wrote:
hello all...
Read the links which you directed and we followed t...we set up the mysql table structure as follows..thanks for ur response:) we added an ldif file... dn: cn:new,dc=example,dc=com objectClass:inetOrgPerson cn:new sn:a uid:new displayname:neww
while doing ldapserach we encountered error..
ldapadd -x -D "cn=admin,dc=example,dc=com" -f /etc/ldap/ldiffs/ocnew.ldif -w cas
adding new entry "cn=new,dc=example,dc=com" ldap_add: Server is unwilling to perform (53) additional info: operation not permitted within namingContext
select * from ldap_attr_mappings;
+-----+-----------+----------- ----+---------------------------------------+------------+-----------+------------+----------+-------------+-------------+---------------+ | id | oc_map_id | name | sel_expr | sel_expr_u | from_tbls | join_where | add_proc | delete_proc | param_order | expect_return | +-----+-----------+---------------+---------------------------------------+------------+-----------+------------+----------+-------------+-------------+---------------+ | 1 | 1 | cn | concat(persons.name,,persons.surname) | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 2 | 1 | sn | persons.surname | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 4 | 1 | displayname | persons.displayname | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 3 | 1 | uid | persons.uid | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 101 | 101 | uid | persons.name | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 102 | 101 | uidNumber | 2000 | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 103 | 101 | gidNumber | 2000 | NULL | persons | NULL | NULL | NULL | 3 | 0 | | 104 | 101 | homeDirectory | persons.name | NULL | persons | NULL | NULL | NULL | 3 | 0 | +-----+-----------+---------------+---------------------------------------+------------+-----------+------------+----------+-------------+-------------+---------------+
Perhaps the fact that all add procedures are NULL could explain the inability to perform an LDAP add operation?
p.
Ing. Pierangelo Masarati OpenLDAP Core Team
SysNet s.r.l. via Dossi, 8 - 27100 Pavia - ITALIA http://www.sys-net.it --------------------------------------- Office: +39 02 23998309 Mobile: +39 333 4963172 Email: pierangelo.masarati@sys-net.it ---------------------------------------
On 3/15/08, Pierangelo Masarati ando@sys-net.it wrote:
vinodh kumar wrote:
hello all...
Read the links which you directed and we followed t...we set up the
mysql
table structure as follows..thanks for ur response:) we added an ldif file... dn: cn:new,dc=example,dc=com objectClass:inetOrgPerson cn:new sn:a uid:new displayname:neww
while doing ldapserach we encountered error..
ldapadd -x -D "cn=admin,dc=example,dc=com" -f
/etc/ldap/ldiffs/ocnew.ldif -w
cas
adding new entry "cn=new,dc=example,dc=com" ldap_add: Server is unwilling to perform (53) additional info: operation not permitted within namingContext
select * from ldap_attr_mappings;
+-----+-----------+-----------
----+---------------------------------------+------------+-----------+------------+----------+-------------+-------------+---------------+
| id | oc_map_id | name |
sel_expr |
sel_expr_u | from_tbls | join_where | add_proc | delete_proc |
param_order |
expect_return |
+-----+-----------+---------------+---------------------------------------+------------+-----------+------------+----------+-------------+-------------+---------------+
| 1 | 1 | cn | concat(persons.name,,persons.surname)
|
NULL | persons | NULL | NULL | NULL |
3
| 0 | | 2 | 1 | sn | persons.surname
|
NULL | persons | NULL | NULL | NULL |
3
| 0 | | 4 | 1 | displayname | persons.displayname
|
NULL | persons | NULL | NULL | NULL |
3
| 0 | | 3 | 1 | uid | persons.uid
|
NULL | persons | NULL | NULL | NULL |
3
| 0 | | 101 | 101 | uid | persons.name
|
NULL | persons | NULL | NULL | NULL |
3
| 0 | | 102 | 101 | uidNumber |
2000 |
NULL | persons | NULL | NULL | NULL |
3
| 0 | | 103 | 101 | gidNumber |
2000 |
NULL | persons | NULL | NULL | NULL |
3
| 0 | | 104 | 101 | homeDirectory | persons.name
|
NULL | persons | NULL | NULL | NULL |
3
| 0 |
+-----+-----------+---------------+---------------------------------------+------------+-----------+------------+----------+-------------+-------------+---------------+
Perhaps the fact that all add procedures are NULL could explain the inability to perform an LDAP add operation?
p.
we have removed the null values ,then we tried ldapsearch it works well.butnot able to do ldapadd... we are encountering the error..
ldap_add: Internal (implementation specific) error (80) additional info: no structuralObjectClass operational attribute
Perhaps the fact that all add procedures are NULL could explain the inability to perform an LDAP add operation?
we have removed the null values ,then we tried ldapsearch it works well.
My guess is that the presence/absence of "add" procedures does not impact LDAP searches.
butnot able to do ldapadd... we are encountering the error..
ldap_add: Internal (implementation specific) error (80) additional info: no structuralObjectClass operational attribute
Are you sure the entry you're trying to add has a valid objectClass chain? Is mapping present for that objectClass? Can you post your ldap_oc_mappings and ldap_attr_mappings? Can you post the LDIF that fails?
p.
Ing. Pierangelo Masarati OpenLDAP Core Team
SysNet s.r.l. via Dossi, 8 - 27100 Pavia - ITALIA http://www.sys-net.it --------------------------------------- Office: +39 02 23998309 Mobile: +39 333 4963172 Email: pierangelo.masarati@sys-net.it ---------------------------------------
On Sun, Mar 16, 2008 at 10:57 PM, Pierangelo Masarati ando@sys-net.it wrote:
Perhaps the fact that all add procedures are NULL could explain the inability to perform an LDAP add operation?
we have removed the null values ,then we tried ldapsearch it works well.
My guess is that the presence/absence of "add" procedures does not impact LDAP searches.
butnot able to do ldapadd... we are encountering the error..
ldap_add: Internal (implementation specific) error (80) additional info: no structuralObjectClass operational attribute
Are you sure the entry you're trying to add has a valid objectClass chain?
wat u mean by valid objectClass chain ????
Is mapping present for that objectClass? Can you post your ldap_oc_mappings and ldap_attr_mappings? Can you post the LDIF that fails?
ya ..here the tables are...
mysql> select * from ldap_attr_mappings; +-----+-----------+---------------+--------------+------------+-----------+----- -------+----------+-------------+-------------+---------------+ | id | oc_map_id | name | sel_expr | sel_expr_u | from_tbls | join _where | add_proc | delete_proc | param_order | expect_return | +-----+-----------+---------------+--------------+------------+-----------+----- -------+----------+-------------+-------------+---------------+ | 101 | 101 | uid | persons.name | NULL | persons | | | | 3 | 0 | | 102 | 101 | uidNumber | 2000 | NULL | persons | | | | 3 | 0 | | 103 | 101 | gidNumber | 2000 | NULL | persons | | | | 3 | 0 | | 104 | 101 | homeDirectory | persons.name | NULL | persons | | | | 3 | 0 | +-----+-----------+---------------+--------------+------------+-----------+----- -------+----------+-------------+-------------+---------------+ 4 rows in set (0.00 sec)
mysql> select * from ldap_oc_mappings; +-----+--------------+---------+--------+-------------+-------------+----------- ----+ | id | name | keytbl | keycol | create_proc | delete_proc | expect_ret urn | +-----+--------------+---------+--------+-------------+-------------+----------- ----+ | 101 | posixAccount | persons | id | | | 0 | +-----+--------------+---------+--------+-------------+-------------+----------- ----+ 1 row in set (0.01 sec)
mysql> select * from ldap_entries; +----+-------------------+-----------+--------+--------+ | id | dn | oc_map_id | parent | keyval | +----+-------------------+-----------+--------+--------+ | 1 | dc=example,dc=com | 101 | 0 | 1 | +----+-------------------+-----------+--------+--------+ 1 row in set (0.01 sec)
mysql> select * from ldap_entry_objclasses; +----------+--------------+ | entry_id | oc_name | +----------+--------------+ | 2 | posixAccount | +----------+--------------+ 1 row in set (0.00 sec)
our ldif file is,
dn: cn:new,dc=example,dc=com objectClass:posixAccount cn:new uid:new displayname:neww homedirectory
our ldif file is,
dn: cn:new,dc=example,dc=com objectClass:posixAccount cn:new uid:new displayname:neww homedirectory
typo error :P
homedirectory:/home/new
-- regards vinodh i blog @ http://vinsvision.wordpress.com
--On Monday, March 17, 2008 11:26 PM +0530 vinodh kumar vinstce@gmail.com wrote:
our ldif file is,
dn: cn:new,dc=example,dc=com
objectClass:posixAccount cn:new uid:new displayname:neww homedirectory homedirectory:/home/new
I suggest you research into objectClasses and valid objectClass chains. The error you've gotten is quite correct, you've failed to provide a structural objectClass in your entry. Think of it in terms of object oriented programming -- Every entry object must be of a specific class, which can then be added onto with auxiliary information. posixAccount is auxiliary, you need to add a valid structural OC to your entry.
"account" may be the one you're looking for:
objectclass ( 0.9.2342.19200300.100.4.5 NAME 'account' SUP top STRUCTURAL MUST userid MAY ( description $ seeAlso $ localityName $ organizationName $ organizationalUnitName $ host ) )
--Quanah
--
Quanah Gibson-Mount Principal Software Engineer Zimbra, Inc -------------------- Zimbra :: the leader in open source messaging and collaboration
openldap-technical@openldap.org