我有一个具有以下配置的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
的形式出现。这是否意味着我可以假设EnvironmentFile被读取为root
,因为它是在绑定挂载之前读取的?
我可以做实验,但我有点惊讶,因为医生们对此不太清楚。也许我找错地方了。
发布于 2023-02-01 13:41:17
经过一些实验,我可以确认EnvironmentFile
被读为root
。因此,即使EnvironmentFile
属于root
,并且具有类似于0600
的权限,所定义的环境变量在运行为User=someuser
的进程中也会被设置为D5
。
https://unix.stackexchange.com/questions/733947
复制相似问题