Bug 26390

Summary: Странное поведение init-скриптов
Product: Sisyphus Reporter: Radik Usupov <radik>
Component: zarafaAssignee: Lenar Shakirov <snejok>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aen, boyarsh, radik, rider, vitty
Version: unstable   
Hardware: all   
OS: Linux   

Description Radik Usupov 2011-09-29 09:59:01 MSK
Коллеги, наблюдаю странное поведение init-скриптов в разных виртуальных окружениях и ядрах. Не знаю что с чем связано, поэтому прошу помочь разобраться.
Суть:
Есть виртуалка на openvz, с ядром 2.6.18-ovz-rhel-alt13.M51.18 #1 SMP Thu Dec 23 14:07:02 UTC 2010 x86_64 GNU/Linux
Есть виртуалка на kvm, я ядром 2.6.38-std-def-alt8.1 #1 SMP Fri Jun 3 10:16:35 UTC 2011 x86_64 GNU/Linux
На обоих системах р6.
Рассмотрим на примере init-скрипта zarafa-spooler.
Если запускать через /etc/init.d/zarafa-spooler, то все запускается и работает.
Но если захотеть узнать статус через /etc/init.d/zarafa-spooler status, то на виртуалке с openvz получим ошибку "zarafa-spooler is dead, but stale PID file exists". На виртуалке с kvm все отрабатывает как надо.
После выяснений причин такого поведения, оказалось, что это из-за параметра "--expect-user root" в init-скрипте. Если его убрать, то все нормально отрабатывает.

Когда писал скрипты для Zarafa использовал для примера /etc/init.d/template

Собственно мои патчи:
init-скрипт: http://git.altlinux.org/people/radik/packages/?p=zarafa.git;a=blob;f=patches/zarafa-7.0rc2-alt-use-init.alt.patch;h=93d3bfd92b990d76025721745f19b39fb459c67e;hb=HEAD#l890
Оригинал для RH: http://git.altlinux.org/people/radik/packages/?p=zarafa.git;a=blob;f=zarafa/installer/linux/zarafa-spooler.init.rhel;h=09e83c9b7d1d337169c70f5b0b94f2a420969c77;hb=HEAD

Пошу помочь разобраться с багой, ибо совсем не комильфо.
Спасибо!
Comment 1 Vitaly Kuznetsov 2011-09-29 11:29:41 MSK
Ядра тут ни при чём.

Могу предположить, что демоны свитчатся в пользователей собственными средствами, т.е. работают не под root. Достаточно посмотреть ps aux | grep zarafa. Если это так, то и параметр expect-user должен быть иным.
Comment 2 Radik Usupov 2011-09-29 11:37:35 MSK
Виталий спасибо!
Так как пользователь может  менять пользователя, от которого может запускаться zarafa, я вообще убрал эти параметры.
Результатом стал вот этот коммит: http://git.altlinux.org/people/radik/packages/?p=zarafa.git;a=commit;h=807ec93c7eeeebd86b2c3e9c47f0199662a61e6b

Спасибо!
Comment 3 Vitaly Kuznetsov 2011-09-29 12:04:21 MSK
Если пользователи, под которыми запускаются демоны, являются настройками в конфигах, то с точки зрения безопасности лучше эти параметры достать и использовать в init-скрипте (установить expect-user в ожидаемое значение).
Comment 4 Radik Usupov 2011-09-29 12:11:26 MSK
Виталий, если научишь, буду благодарен.
Хотя бы пример уже существующего в альте пакета.