6

Каков наилучший способ разрешить непривилегированному пользователю управлять заданием выскочки?

Под управлением выскочившего задания я имею в виду запуск / остановку / перезагрузку / перезапуск:

start myservice 

Я могу представить себе один из способов сделать это через sudo; что нужно сделать, чтобы сделать это возможным? Есть ли другие / лучшие способы?

NB. Этот вопрос, хотя и имеет аналогичное название, очень отличается от запуска заданий upstart для непривилегированных пользователей, поскольку этот вопрос касается выполнения фактической службы вместо управления заданием.

2 ответа2

8

В дополнение к тому, что сказал Туминоид, вы можете ограничить sudo командами с конкретными аргументами:

Cmnd_Alias START_MYSQL = /sbin/start mysql
user ALL=(ALL) NOPASSWD: START_MYSQL

С двумя приведенными выше строками в sudoers (вы можете редактировать suoders с помощью команды visudo ), учетная запись с именем user сможет работать без пароля:

$ sudo start mysql

sudo не будет доступно пользователю ни для чего другого, с паролем или без пароля, если только в списке sudoers нет других записей, разрешающих это.

0

Вы, безусловно, можете контролировать работу с sudo . Вам не нужно ничего особенного, просто sudo start myservice и т.д. Это предпочтительный способ, если у вас есть права sudo.

Кроме того, вам нужен какой-то маппер, работающий от имени пользователя root, чтобы преобразовать ваши привилегированные пользовательские команды в команды root. Однажды я сделал это для специальной цели с помощью FIFO, который может быть записан пользователем и прочитан привилегированным сценарием root, который затем отображает команды в start, stop и так далее. Конечно, это не безопасный способ сделать это для многопользовательских / производственных систем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .