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

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

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

当我这样做时:

sudo systemctl start myservice

这最终会调用一个可执行文件,该文件会尝试在 D-Bus 上注册自身,但要使其正常工作,我需要在 D-Bus 配置中提供用户权限。如何判断哪个 Linux 用户/组与上述内容相关联?

答案1

您可以在单元文件中使用 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 for Administrators 博客系列对这些概念提供了合理的背景介绍。

对于所有类型的问题

我怎么知道……

只需添加 ExecStartPre= 指令以及适合测试/查询所需项目的命令。

例如

ExecStartPre=/usr/bin/whoami

请注意,systemd 默认不使用 shell,但您始终可以手动使用。

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

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

相关内容