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