systemctl --user start foo.service
尝试运行包含ExecStart=touch /bar/baz
具有/bar
权限的systemd 服务drwxrwxr-x 1 root storage
。运行该命令的用户属于该组storage
,并且可以从 shell 运行该touch
命令而不会出现问题,从而创建文件。但是,该服务因权限错误而失败。
我认为该服务的权限将与运行它的用户相匹配 - 并且确实让服务${USER}
在其命令中使用环境变量确实会产生我的用户,并且该服务会出现在我的ps
或pstree ${USER}
列表中。
foo.service
不包含ProtectSystem
或除以下之外的任何条目:Description
,EnvironmentFile
,Environment
,ExecStart
,,。环境条目用于加载与权限无关的配置KillSignal
。Restart
RestartSec
该服务是否实际上不使用调用用户来获取权限?如果不是,解决问题的最佳方法是什么?/bar
位于已安装的驱动器上,因此我可以dmask 0000
在 fstab 中执行此操作,但我宁愿避免这种方法。