Назад | Перейти на главную страницу

Как определить пользователя / группу Linux, которая выполняет задания менеджера systemd?

Я пытаюсь определить, какой пользователь / группа Linux выполняет задания systemd, чтобы соответствующим образом установить разрешения D-Bus.

Когда я это сделаю:

sudo systemctl start myservice

В конечном итоге это вызывает исполняемый файл, который пытается зарегистрироваться на D-Bus, однако для этого мне нужно предоставить права пользователя в конфигурации D-Bus. Как я могу узнать, какой пользователь / группа Linux связана с указанным выше?

Вы можете использовать директивы User = и Group = в своем файле модуля.

http://www.freedesktop.org/software/systemd/man/systemd.exec.html

Файлы модулей Systemd довольно хорошо документированы (по сравнению с множеством других программ с открытым исходным кодом). Директивы, которые вы можете использовать в файлах модулей, разбросаны по многим страницам руководства, поэтому информацию может быть не так легко найти и понять, особенно если концепции systemd не так понятны читателю.

Но для всех директив есть индексная страница:

http://www.freedesktop.org/software/systemd/man/systemd.directives.html

Доступна дополнительная документация:

http://www.freedesktop.org/wiki/Software/systemd/

Я читал это некоторое время, но, если я правильно помню, серия блогов Systemd для администраторов дает разумную основу для этих концепций.

По всем вопросам типа

Как я могу сказать ...

Просто добавьте директивы ExecStartPre = с командами, подходящими для тестирования / запроса желаемых элементов.

Например.

ExecStartPre=/usr/bin/whoami

Обратите внимание, что systemd по умолчанию не использует оболочку, но вы всегда можете сделать это вручную.

ExecStartPre=/bin/sh -c "if true;then echo true;fi"

Вы можете увидеть вывод таких команд, используя systemctl status <myunit> или заглянув в журнал с помощью journalctl команда (как root!).