Я нашел сценарий инициализации, который по какой-то причине настаивает на запуске указанного приложения от имени пользователя root. Я не могу понять, почему он это делает, какие-то намеки? Скрипт работает в Redhat Enterprise Linux 5.9.
#!/bin/bash
#
# Start/Stop apfe.
#
# chkconfig: - 62 38
# description: apfe
# Start script for an apfe process.
# Apfe does not normally run as root, so we change user
# and call the real script in $USERDIR.
STARTUSER=apfe
USERDIR=/app/apfe/apps/apfeutils/bin
PROGNAME=apfe
su - $STARTUSER -c "$USERDIR/$PROGNAME $*"
Обратите внимание, что su -
означает, что команда должна запускаться в оболочке входа пользователя, загружающей пользовательскую среду. В случае, если оболочка входа в систему похожа на /bin/false
по соображениям безопасности должна быть проблема.
Попробуй изменить su
к sudo -u $STARTUSER ...
и потенциально делать тонкие настройки в /etc/sudoers
для этой команды.
Я вижу потенциальную проблему в том, что нет полного пути к su
бинарный, и нет никакой гарантии, что у вас вообще есть $ PATH. Мое предпочтительное решение - использовать runuser
в отличие от su
(см. postgresql
файл запуска и man runuser
для подробностей) после получения /etc/init.d/functions
файла, другим решением было бы использовать полный путь к su
двоичный. Могут быть доступны и другие решения. Конечно, это может быть не та проблема, с которой вы столкнулись, но она отвечает на ваш вопрос: «Что кажется неправильным». :)