systemd 中的 PermissionsStartOnly 替代方案

N.F*_*.F. 3 linux systemd

我发现根据 systemd 的 NEWS 文件,PermissionsStartOnly设置 insystemd已被弃用。

PermissionsStartOnly= 设置已弃用(但仍支持向后兼容)。更灵活的“+”、“!”和“!!”提供了相同的功能 ExecStart= 和其他命令的前缀。

我应该使用+!!!,但我不知道如何使用此选项连我都阅读使用说明书。

myservice.service的如下。我怎么能在没有的情况下重写这个PermissionsStartOnly

[Service]
PermissionsStartOnly=true
ExecStartPre=/bin/bash -c '/bin/journalctl -b -u ntpdate | /bin/grep -q -e "adjust time server" -e "step time server"'
ExecStartPre=/bin/mkdir -p /path/to/somedir
ExecStart=/path/to/myservice
ExecStop=/bin/kill -INT ${MAINPID}
ExecReload=/bin/kill -INT ${MAINPID} && /path/to/myservice
Restart=always
RestartSec=5
User=myuser
Group=mygroup
Run Code Online (Sandbox Code Playgroud)

小智 8

设置PermissionsStartOnly=true意味着用户和组仅应用于ExecStart。所以切换到新语法将是:

ExecStartPre=+/bin/bash -c '/bin/journalctl -b -u ntpdate | /bin/grep -q -e "adjust time server" -e "step time server"'
ExecStartPre=+/bin/mkdir -p /path/to/somedir
ExecStart=/path/to/myservice
ExecStop=+/bin/kill -INT ${MAINPID}
ExecReload=+/bin/kill -INT ${MAINPID} && /path/to/myservice
Run Code Online (Sandbox Code Playgroud)

1 - ExecStart将以较少的权限执行,这也意味着以“用户”和“组”的身份执行

2 - 以“+”为前缀的语句将以root 的更高权限执行。因此,在这种情况下,您将只有ExecStart将使用“myuser”和“mygroup”执行