Bug 12305

Summary: не работает init.d скрипт
Product: Sisyphus Reporter: Boris Savelev <boris>
Component: openldap-serversAssignee: Anton V. Boyarshinov <boyarsh>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: boris, boyarsh, imz, klark, ldv, shaba, slev, vitty, viy, vvk
Version: unstable   
Hardware: all   
OS: Linux   

Description Boris Savelev 2007-07-11 18:08:38 MSD
openldap-servers-2.3.35-alt0
Так стартует:
# start-stop-daemon --start -N 0 --exec /usr/sbin/slapd --pidfile
/var/lib/ldap/var/run/slapd.pid -- -u ldap -r /var/lib/ldap -h ldap://localhost/

А так нет:
# service slapd start
Adjusting environment for slapd:                                        [ DONE ]
Starting slapd service:                                                 [FAILED]

# sh -x /etc/init.d/slapd start
+ WITHOUT_RC_COMPAT=1
+ . /etc/init.d/functions
++ export
PATH=/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
++ PATH=/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
++ '[' 0 = 0 ']'
++ LANG=POSIX
++ LANGUAGE=POSIX
++ LC_ALL=POSIX
++ '[' -z '' ']'
++ SourceIfNotEmpty /etc/sysconfig/init
++ local f
++ f=/etc/sysconfig/init
++ shift
++ '[' -s /etc/sysconfig/init ']'
++ . /etc/sysconfig/init
+++ BOOTUP=color
+++ RES_OFFSET=8
+++ LOGLEVEL=1
+++ PROMPT=yes
++ '[' -n color ']'
++ '[' -x /sbin/consoletype ']'
+++ consoletype
++ '[' pty = serial ']'
++ '[' color = color ']'
++ . /etc/init.d/outformat
+++ '[' -n xterm ']'
+++ export TERM
+++ : '{RES_OFFSET:=8}'
+++ '[' -n 8 ']'
+++ '[' 8 -gt 0 ']'
+++ : 0 1 2 3 4 5 6 7
++ '[' color '!=' verbose ']'
++ INITLOG_ARGS=-q
++ '[' -n 1 ']'
++ '[' 1 -ge 0 ']'
++ '[' -n 1 ']'
+ SourceIfNotEmpty /etc/sysconfig/network
+ local f
+ f=/etc/sysconfig/network
+ shift
+ '[' -s /etc/sysconfig/network ']'
+ . /etc/sysconfig/network
++ NETWORKING=yes
++ CONFMETHOD=etcnet
++ HOSTNAME=localhost.localdomain
++ DOMAINNAME=localdomain
++ RESOLV_MODS=yes
+ SourceIfNotEmpty /etc/sysconfig/ldap
+ local f
+ f=/etc/sysconfig/ldap
+ shift
+ '[' -s /etc/sysconfig/ldap ']'
+ . /etc/sysconfig/ldap
++ SLAPDURLLIST=ldap://localhost/
++ SLAPD_OPTIONS=
++ SLURPD_OPTIONS='-t /'
+ DAEMON=/usr/sbin/slapd
+ DAEMONTEST=/usr/sbin/slaptest
+ ROOT=/var/lib/ldap
+ CONFIG=/etc/openldap/slapd.conf
+ LOCKFILE=/var/lock/subsys/slapd
+ PIDFILE=/var/lib/ldap/var/run/slapd.pid
+ RETVAL=0
+ case "$1" in
+ adjust
+ action 'Adjusting environment for slapd:' /etc/chroot.d/ldap.all
+ local STRING
+ STRING='Adjusting environment for slapd:'
+ shift
+ echo -n 'Adjusting environment for slapd: '
Adjusting environment for slapd: + initlog -q -c /etc/chroot.d/ldap.all
+ local rc=0
+ '[' 0 -eq 0 ']'
+ success 'Adjusting environment for slapd:'
+ '[' -z '' ']'
+ initlog -q -n /etc/init.d/slapd -s 'Adjusting environment for slapd:' -e 1
+ echo_success
+ MOVE_TO_COL
+ '[' -n 80 ']'
+ local pos=72
+ '[' 72 -le 0 ']'
+ tput -- hpa 72
                                                                        + echo
-n '[ '
[ + SETCOLOR_SUCCESS
+ echo bold
+ echo setaf 2
+ tput -S
+ echo -n DONE
DONE+ SETCOLOR_NORMAL
+ echo op
+ echo sgr0
+ tput -S
+ echo -ne ' ]\r'
+ return 0
+ return 0
+ echo

+ return 0
+ start
+ is_yes yes
+ '[' 1 = 0 ']'
+ case "$1" in
+ return 0
+ start_daemon --pidfile /var/lib/ldap/var/run/slapd.pid --lockfile
/var/lock/subsys/slapd -- /usr/sbin/slapd -u ldap -r /var/lib/ldap -h
ldap://localhost/ ''
+ local ANNOUNCE BASENAME CMDNAME DISPNAME EXPECT FLAGS LOCKFILE MAKE_PIDFILE
NICE PIDFILE STATUS SU WHICH
+ ANNOUNCE=1
+ CMDNAME=
+ DISPNAME=
+ EXPECT=
+ LOCKFILE=
+ MAKE_PIDFILE=
+ NICE=0
+ PIDFILE=
+ SU=
+ '[' --pidfile '!=' -pidfile -o --pidfile '!=' --pidfile ']'
+ case "$1" in
+ shift
+ PIDFILE=/var/lib/ldap/var/run/slapd.pid
+ shift
+ '[' --lockfile '!=' -lockfile -o --lockfile '!=' --lockfile ']'
+ case "$1" in
+ shift
+ LOCKFILE=/var/lock/subsys/slapd
+ shift
+ '[' -- '!=' - -o -- '!=' -- ']'
+ case "$1" in
+ shift
+ break
+ '[' -z /usr/sbin/slapd ']'
++ absolute /usr/sbin/slapd
++ local WHICH
++ '[' -n /usr/sbin/slapd ']'
+++ type -p /usr/sbin/slapd
++ WHICH=/usr/sbin/slapd
++ '[' /usr/sbin/slapd '!=' usr/sbin/slapd ']'
++ echo /usr/sbin/slapd
+ WHICH=/usr/sbin/slapd
+ '[' -n '' ']'
++ basename /usr/sbin/slapd
+ BASENAME=slapd
+ shift
+ '[' -n '' -a -z /var/lib/ldap/var/run/slapd.pid ']'
+ '[' -n '' ']'
+ DISPNAME=slapd
+ ulimit -Sc 0
+ export -n HOME TMP TMPDIR
+ FLAGS='--start -N 0'
+ '[' -z '' ']'
+ FLAGS='--start -N 0 --exec /usr/sbin/slapd'
+ '[' -z /var/lib/ldap/var/run/slapd.pid ']'
+ FLAGS='--start -N 0 --exec /usr/sbin/slapd --pidfile
/var/lib/ldap/var/run/slapd.pid'
+ '[' -z '' ']'
+ '[' -z '' ']'
+ start-stop-daemon --start -N 0 --exec /usr/sbin/slapd --pidfile
/var/lib/ldap/var/run/slapd.pid --test
+ '[' -z 1 ']'
+ msg_starting slapd
+ local a
+ a=slapd
+ shift
+ printf 'Starting %s service: ' slapd
Starting slapd service: + '[' -z '' ']'
+ initlog -q -n slapd -c 'start-stop-daemon --start -N 0 --exec /usr/sbin/slapd
--pidfile /var/lib/ldap/var/run/slapd.pid -- -u ldap -r /var/lib/ldap -h
ldap://localhost/ '
+ STATUS=1
+ '[' 1 = 0 ']'
+ failure 'slapd startup'
+ local rc=1
+ '[' -z '' ']'
+ initlog -q -n /etc/init.d/slapd -s 'slapd startup' -e 2
+ echo_failure
+ MOVE_TO_COL
+ '[' -n 80 ']'
+ local pos=72
+ '[' 72 -le 0 ']'
+ tput -- hpa 72
                                                                        + echo
-n '['
[+ SETCOLOR_FAILURE
+ echo bold
+ echo setaf 1
+ tput -S
+ echo -n FAILED
FAILED+ SETCOLOR_NORMAL
+ echo op
+ echo sgr0
+ tput -S
+ echo -ne ']\r'
+ return 1
+ return 1
+ echo

+ return 1
+ RETVAL=1
+ return 1
+ exit 1
Steps to Reproduce:
1.apt-get install openldap-servers
2.service slapd start
3.
Comment 1 Boris Savelev 2007-07-12 12:07:43 MSD
система "чистая" -- контейнер OVZ
причина -- не нравится "-u ldap". Юзер есть, с правами все ОК. Если вместо этого
написать "-u root" -- тоже не стартует. А если убрать вовсе -- стартует.
Далее:
service slapd stop
Service slapd is not running.                                                  
        [PASSED]
[root@ldap sysconfig]# ps ax | grep slapd
 5185 ?        Ssl    0:00 /usr/sbin/slapd -h ldap://localhost/ ldaps:/// -r
/var/lib/ldap

опять что-то не то, но убивать легче, чем стартовать
Comment 2 Dmitry V. Levin 2007-08-07 12:39:16 MSD
To package maintainer.
Comment 3 Dmitry Lebkov 2007-10-15 04:20:13 MSD
Возможно уже исправлено в 2.3.37-alt1 или в 2.3.38-alt1.
У себя в контейнере OVZ подобное поведение так и не смог
воспроизвести.
Comment 4 Boris Savelev 2008-01-14 18:00:13 MSK
к сожадению ничего не изменилось.

2.6.18-ovz-smp-alt13
openldap-2.3.39-alt1
openldap-servers-2.3.39-alt1

[root@gosa ~]# ps ax | grep slapd
22446 pts/2    S+     0:00 grep slapd
[root@gosa ~]# slapd -f /etc/openldap/slapd.conf -u ldap
[root@gosa ~]# ps ax | grep slapd
22453 pts/2    S+     0:00 grep slapd
[root@gosa ~]# slapd -f /etc/openldap/slapd.conf -u root
[root@gosa ~]# ps ax | grep slapd
22456 ?        Ssl    0:00 slapd -f /etc/openldap/slapd.conf -u root
22459 pts/2    S+     0:00 grep slapd
Comment 5 Dmitry Lebkov 2008-01-15 02:20:37 MSK
(In reply to comment #4)
> к сожадению ничего не изменилось.

1) Что выдает команда 'id ldap' в этом контейнере?
2) Необходимо проверить владельца каталогов в /var/lib/ldap/ -- оно всё
должно пренадлежать UID/GID ldap/ldap.
3) См. http://faq.altlinux.ru по ключевому слову ldap на предмет диагностики slapd.
Comment 6 Boris Savelev 2008-01-15 12:33:13 MSK
1) id ldap
uid=55(ldap) gid=55(ldap) группы=55(ldap)
2) по этому поводу была бага: https://bugzilla.altlinux.org/show_bug.cgi?id=12492
как все-таки правильно? в пакете права вообще: 
drwxr-x---    2 root    ldap                0 Oct 30 02:45 /var/lib/ldap
Comment 7 Vladimir V. Kamarzin 2008-01-15 14:05:15 MSK
> 2) по этому поводу была бага: https://bugzilla.altlinux.org/show_bug.cgi?id=12492
> как все-таки правильно? в пакете права вообще: 
> drwxr-x---    2 root    ldap                0 Oct 30 02:45 /var/lib/ldap

Гм, с такими правами нужно делать reopen #12492
Comment 8 Dmitry Lebkov 2008-01-15 14:35:28 MSK
(In reply to comment #6)
> 1) id ldap
> uid=55(ldap) gid=55(ldap) группы=55(ldap)

Всё правильно.

> 2) по этому поводу была бага: https://bugzilla.altlinux.org/show_bug.cgi?id=12492
> как все-таки правильно? в пакете права вообще: 
> drwxr-x---    2 root    ldap                0 Oct 30 02:45 /var/lib/ldap
Читаем внимательнее. Я писал о _содержимом_ каталога /var/lib/ldap. Вот UID/GID
содержимого и надо проверить на соответствие ldap:ldap.

Comment 9 Boris Savelev 2008-01-15 14:48:19 MSK
ls -l /var/lib/ldap/
total 32
drwxrwx--T 3 root ldap 4096 Jan 14 14:12 bases
drwxrwx--T 3 root ldap 4096 Jan 14 14:12 dblogs
drwxrwxr-x 2 root ldap 4096 Jan 15 02:05 dev
drwxr-xr-x 4 root ldap 4096 Jan 14 14:12 etc
drwxr-x--- 2 root ldap 4096 Jan 14 14:12 lib
lrwxrwxrwx 1 root root    3 Jan 14 14:10 lib64 -> lib
drwxrwx--T 2 root ldap 4096 Oct 30 02:44 replica
drwxr-xr-x 3 root root 4096 Jan 14 14:10 usr
drwxr-xr-x 5 root root 4096 Oct 30 02:45 var

НО в пакете точно такие же
Comment 10 Dmitry Lebkov 2008-01-15 15:10:18 MSK
(In reply to comment #9)

Тогда остается только 3). 

--- FAQ ---
# slapd -u ldap -r /var/lib/ldap -h 'ldap://localhost' -d 64
и смотреть на stdout. 
man slapd.conf на предмет loglevel (значение параметра -d)
--- FAQ ---
Comment 11 Dmitry Lebkov 2008-01-15 15:22:11 MSK
(In reply to comment #7)
> > 2) по этому поводу была бага:
https://bugzilla.altlinux.org/show_bug.cgi?id=12492
> > как все-таки правильно? в пакете права вообще: 
> > drwxr-x---    2 root    ldap                0 Oct 30 02:45 /var/lib/ldap
> 
> Гм, с такими правами нужно делать reopen #12492

А что не так с правами?
Comment 12 Vladimir V. Kamarzin 2008-01-15 15:33:25 MSK
Действительно, с правами всё в порядке. Я просто увидел что нет sticky-бита на
/var/lib/ldap, но он там и не нужен.
Comment 13 Dmitry Lebkov 2008-01-15 16:16:40 MSK
(In reply to comment #9)
> drwxrwx--T 3 root ldap 4096 Jan 14 14:12 bases
> drwxrwx--T 3 root ldap 4096 Jan 14 14:12 dblogs

Совсем заработался. :( Посмотрите еще права на содержимое этих каталогов. Вот
оно должно пренадлежать ldap:ldap. Ну и запуск slapd руками с параметром -d 64
тоже должен многое рассказать о том, почему оно не может нормально стартовать.
Comment 14 Boris Savelev 2008-01-15 16:35:49 MSK
после запуска под рутом, содержимое каталогов принадлежит руту ессно.
поменял владельца на ldap и скрипт заработал...
вообщем можно закрывать снова видимо
всем спасибо, извините за беспокойство
Comment 15 Vladimir V. Kamarzin 2008-01-15 17:11:32 MSK
Ага, и после импортирования базы spalcat-ом от рута slapd тоже не может
прочитать её. Вот может бы добавить в какой-нибудь из chroot-скриптов chown,
чтобы перед стартом права на все базы давались юзеру ldap?