[Date Prev][Date Next] [Chronological] [Thread] [Top]

openLDAP + chroot + non privileged user : error

I've installed an ldap server but I don't succeed to launch it with both a chroot jail and an unprivileged user.

This command works : /usr/local/openldap/libexec/slapd -r /chroot/ldap -d 255

But the following one doesn't :
DebServ1:/chroot/ldap# /usr/local/openldap/libexec/slapd -r /chroot/ldap -u ldap -d 255
@(#) $OpenLDAP: slapd 2.3.23 (May 20 2006 11:05:14) $
daemon_init: <null>
daemon_init: listen on ldap:///
daemon_init: 1 listeners to open...
daemon: IPv6 socket() failed errno=97 (Address family not supported by protocol)
daemon: listener initialized ldap:///
daemon_init: 2 listeners opened
No passwd entry for user ldap

I don't understand what file/program is missing in the chroot jail.
Can anyone help ?

Fabien Agranier

My searches
I've tried to add the files passwd, group and shadow to my chroot jail (/chroot/ldap/etc/) but it doesn't change anything.
I also tried to add both /etc /usr/bin /usr/sbin /bin and /sbin to the chroot jail... as same !

I figure out that the error is raised by servers/slapd/user.c (line 75) which test the return value of getpwnam()
To my mind, the souce code of the function getpwnam can help to find what is missing, but I didn't found the source and the man page seems to say that it's only the /etc/passwd file which is read...

I've found similar problem without response at :

Here is my installation script
# Chroot jail
mkdir /chroot/ldap
groupadd ldap
useradd -c "LDAP Daemon User" -g ldap -s /bin/false -d /chroot/ldap ldap
mkdir -p /chroot/ldap/dev /chroot/ldap/etc /chroot/ldap/var/run
chown -R ldap:ldap /chroot/ldap
chmod -R 700 /chroot/ldap
mknod /chroot/ldap/dev/null c 1 3
mknod /chroot/ldap/dev/random c 1 8
chmod 666 /chroot/ldap/dev/null /chroot/ldap/dev/random
cp /etc/localtime /chroot/ldap/etc/

# Installation
./configure --prefix=/usr/local/openldap --with-ssl --with-tsl --enable-wrappers --enable-hdb --enable-ldbm --with-cyrus-sasl --enable-spasswd --enable-slurpd --sysconfdir=/etc --localstatedir=/var
make depend
make install

# Copy of installed needed files to chroot jail
mv /etc/openldap /chroot/ldap/etc/
mv /var/openldap* /chroot/ldap/var/
chown -R ldap:ldap /chroot/ldap/etc/openldap /chroot/ldap/var/
chmod -R 700 /chroot/ldap/etc/openldap /chroot/ldap/var/

Extracts of my configuration file /chroot/ldap/etc/openldap/slapd.conf
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/qmail.schema

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

directory       /var/openldap-data

Thanks !!