Коллеги, наблюдаю странное поведение 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 Пошу помочь разобраться с багой, ибо совсем не комильфо. Спасибо!
Ядра тут ни при чём. Могу предположить, что демоны свитчатся в пользователей собственными средствами, т.е. работают не под root. Достаточно посмотреть ps aux | grep zarafa. Если это так, то и параметр expect-user должен быть иным.
Виталий спасибо! Так как пользователь может менять пользователя, от которого может запускаться zarafa, я вообще убрал эти параметры. Результатом стал вот этот коммит: http://git.altlinux.org/people/radik/packages/?p=zarafa.git;a=commit;h=807ec93c7eeeebd86b2c3e9c47f0199662a61e6b Спасибо!
Если пользователи, под которыми запускаются демоны, являются настройками в конфигах, то с точки зрения безопасности лучше эти параметры достать и использовать в init-скрипте (установить expect-user в ожидаемое значение).
Виталий, если научишь, буду благодарен. Хотя бы пример уже существующего в альте пакета.