Я нашел сценарий инициализации, который по какой-то причине настаивает на запуске указанного приложения от имени пользователя 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
. Могут быть доступны и другие решения. Конечно, Возможно, это не та проблема, с которой вы столкнулись, но она отвечает на ваш вопрос: «Что вам кажется неправильным?». :)