如何确定执行systemd manager作业的Linux用户/组?

我试图确定哪个Linux用户/组运行systemd作业,以便我可以相应地设置D-Bus权限。

当我这样做:

sudo systemctl start myservice 

这最终调用了一个可执行文件,它试图在D-Bus上注册自己,但是为了工作,我需要在D-Busconfiguration中提供用户权限。 我怎么知道哪个Linux用户/组与上面有关联?

你可以在你的单元文件中使用User =和Group =指令。

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

系统化的单元文件有很好的文档logging(与许多其他开源软件相比)。 您可以在单元文件中使用的指令遍布在许多手册页上,所以信息可能不是那么容易find和理解,特别是如果系统概念对读者不是那么清楚。

但是所有指令都有一个索引页面:

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

还有更多的文档可用:

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

我已经阅读了一段时间,但是如果我没有记错,Systemd for Administrators博客系列会给出一个合理的概念背景。

对于所有types的问题

我怎么知道

只需添加适用于testing/查询所需项目的命令的ExecStartPre =指令即可。

例如

 ExecStartPre=/usr/bin/whoami 

请注意,systemd默认情况下不使用shell,但您始终可以手动执行

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

您可以使用systemctl status <myunit>或通过使用journalctl命令(以root用户身份)查看日志来查看这些命令的输出。