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

17

Есть ли способ запустить приложение при запуске под определенной учетной записью пользователя?

Например, я хотел бы a_small_appзапустить под учетной записью пользователя bob(который находится в группе bobsgroup). Должен ли я что-то добавить к /etc/init.d?

Примечание. Я не хочу, чтобы приложение запускалось после входа пользователя в систему, а при запуске компьютера.

Натан Осман
источник
Вы хотите, чтобы приложение запускалось перед входом в окно входа?
Мартин Оуэнс -доктормо-
@ Мартин: Ну, это не имеет значения ... Я использую Apache в качестве примера здесь. Когда это начинается?
Натан Осман

Ответы:

13

Метод агностического запуска системы. Вы можете использовать это в /etc/rc.local, а /etc/init.d/...сценарий, файл конфигурации Upstart и , вероятно, Systemd конфигурацию тоже.

sudo -u oli /full/path/to/application

Эта команда будет выполняться от имени пользователя root и sudoперейдет к пользователю «oli». Очевидно, смените пользователя и команду для ваших целей.

Я должен добавить, что есть по крайней мере дюжина способов сделать это ... Но по моему опыту все они в значительной степени идентичны в действительности. Вот пример выскочки с использованием его setuidстрофы:

start on (filesystem and stopped udevtrigger)
stop on runlevel [06]

setuid oli
respawn

exec /full/path/to/application
Оли
источник
Предлагаю пример
вальтинатор
Я получаюsudo: unknown group: 1004
ThorSummoner
Кроме того, ткните : Время обновить строку о выскочке.
Муру
@ Муру, я буду. Но группа не требуется. sudo будет использовать группу по умолчанию для указанного пользователя.
Оли
Лучше отредактируйте это тогда. Эта команда ошибалась в течение трех лет, так как кто-то улучшил ее! : D
Муру
1

Похоже, что первый ответ больше не работает в Ubuntu 14.10.

Вот как я это делаю там (поместите в /etc/rc.local)

su <username> - -c "<command>"
vrodic
источник
Если вам нужен логин оболочки, то эквивалент sudo -i -u ....
Муру