Что не так с этим сценарием bash? [закрыто]

Я нашел сценарий инициализации, который по какой-то причине настаивает на запуске указанного приложения от имени пользователя 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 $*"
0
задан 30 September 2013 в 10:34
2 ответа

Обратите внимание, что su - означает, что команда имеет для запуска в пользовательской оболочке, загружающей также пользовательскую среду. В случае, если оболочка входа в систему выглядит как / bin / false по соображениям безопасности, должна быть проблема.

Попробуйте изменить su на sudo -u $ STARTUSER ... и, возможно, выполнить точные настройки в / etc / sudoers для этой команды.

1
ответ дан 4 December 2019 в 18:01

Я вижу потенциальную проблему в том, что нет полного пути к двоичному файлу su , и нет никакой гарантии, что у вас вообще есть $ PATH. Я предпочитаю использовать runuser вместо su (см. Стартовый файл postgresql и man runuser для подробностей) после поиска источника. файл /etc/init.d/functions , другое решение - использовать полный путь к двоичному файлу su . Могут быть доступны и другие решения. Конечно, Возможно, это не та проблема, с которой вы столкнулись, но она отвечает на ваш вопрос: «Что вам кажется неправильным?». :)

0
ответ дан 4 December 2019 в 18:01

Теги

Похожие вопросы