systemd 中的 PermissionsStartOnly 替代方案

systemd 中的 PermissionsStartOnly 替代方案

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

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

答案1

环境权限启动仅=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

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

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

相关内容