我发现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”执行