Подтвердить что ты не робот

Как запустить команду в качестве конкретного пользователя в init script?

Я пишу init script, который должен выполнять одну команду как пользователь, отличный от root. Вот как я это делаю сейчас:
sudo -u username command

Обычно это работает на Ubuntu/Debian, но на RHEL зависает script, который выполняется как command.
Есть ли другой способ запустить команду в качестве другого пользователя?
(Обратите внимание, что я не могу использовать функции инициализации lsb, поскольку они недоступны в RHEL/Centos 5.x.)

4b9b3361

Ответ 1

В системах RHEL /etc/rc.d/init.d/functions script предназначен для обеспечения того, что вы хотите. Если вы указали, что в верхней части вашего init script все функции становятся доступными.

Конкретная функция, предоставляемая для помощи, - daemon. Если вы собираетесь использовать его для запуска подобной демонам программы, простое использование:

daemon --user=username command

Если это слишком тяжело для того, что вам нужно, есть runuser (см. man runuser для полной информации, для некоторых версий может потребоваться -u до имени пользователя):

/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"

Ответ 2

Вместо sudo попробуйте

su - username command

По моему опыту, sudo не всегда доступен в системах RHEL, но su, потому что su является частью пакета coreutils, тогда как sudo находится в пакете sudo.

Ответ 3

Для сценариев инициализации стиля systemd это очень просто. Вы просто добавляете User = в раздел [Сервис].

Вот init script, который я использую для qbittorrent-nox в CentOS 7:

[Unit]
Description=qbittorrent torrent server

[Service]
User=<username>
ExecStart=/usr/bin/qbittorrent-nox
Restart=on-abort

[Install]
WantedBy=multi-user.target

Ответ 4

Если у вас есть start-stop-daemon

start-stop-daemon --start --quiet -u username -g usergroup --exec command ...

Ответ 5

Я обычно делаю это так, как вы это делаете (т.е. команда sudo -u username). Но есть также способ "djb" запустить демон с привилегиями другого пользователя. См.: http://thedjbway.b0llix.net/daemontools/uidgid.html