Я пытаюсь определить, какой пользователь / группа 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!).