systemd 服务:EnvironmentFile 指令以哪个用户身份读取?

systemd 服务:EnvironmentFile 指令以哪个用户身份读取?

我有一个 systemd 服务,其配置如下:

[Unit]
Description=example systemd service unit file.

[Service]
ExecStart=/path/to/program
EnvironmentFile=/etc/program.conf
User=someuser

[Install]
WantedBy=multi-user.target

现在的问题是,EnvironmentFile读取的是哪个用户?作为root还是作为someuser?文档不是很清楚,但我发现文字说:

使用此指令列出的文件将在执行进程之前不久读取(更具体地说,在前一个单元状态的所有进程终止之后)。这意味着您可以在一个单元状态中生成这些文件,并在下一个单元状态中使用此选项读取它在发生任何文件系统更改(例如绑定安装)之前,从服务管理器的文件系统中读取文件。

因此,绑定安装可能需要以root.这是否意味着我可以假设环境文件被读取为root,因为它是在绑定安装之前读取的?

我可以进行实验,但令我有点惊讶的是文档对此并没有更清楚。也许我找错地方了。

答案1

经过一些实验,我可以确认 被EnvironmentFile读为root.因此,即使EnvironmentFile属于root并具有类似 的权限0600,定义的环境变量也会在运行为 的进程中设置User=someuser

相关内容