Як запустити програму при запуску як певний користувач?


17

Чи існує спосіб запуску програми під час запуску під певним обліковим записом користувача?

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

Примітка. Я не хочу, щоб програма запускалася після входу користувача, а коли він запускається.


Ви хочете, щоб програма запускалася перед входом у вікно входу?
Мартін Оуенс -доктормо-

@Martin: Ну, це насправді не має значення ... Я тут використовую 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

Я пропоную, що приклад
waltinator

Я отримуюsudo: unknown group: 1004
ThorSummoner

Крім того, ткнути : Час оновити рядок про початковий старт.
муру

@muru Я буду. Але група не потрібна. sudo буде використовувати вказану групу за замовчуванням користувача.
Олі

Тоді краще відредагуйте. Ця команда помилялась три роки, оскільки хтось її вдосконалив ! : D
муру

1

Здається, перша відповідь більше не працює в Ubuntu 14.10.

Ось як я це роблю там (помістіть його в /etc/rc.local)

su <username> - -c "<command>"

Якщо вам потрібна оболонка для входу, еквівалент є sudo -i -u ....
муру
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.