我想在系统启动时启动一个服务。我已经创建了一个名为ap@.service的模板定义,因为可能会有多个实例。
在根systemd中定义,这很好地运行,可以随系统启动和停止服务。使用
但是,我希望用户“myuser”能够启动和停止他们自己的服务,而不会影响系统安全性。
我切换到使用了user systemd,并使用
但是,如果我作为另一个用户(user2)登录并在终端中执行
如何使
在根systemd中定义,这很好地运行,可以随系统启动和停止服务。使用
systemctl enable ap@inst1
安装服务实例。Root用户也能够顺利启动和停止服务。该服务在自己的帐户(myuser)中运行,而不是root,由ap@.service模板中的User=myuser控制。但是,我希望用户“myuser”能够启动和停止他们自己的服务,而不会影响系统安全性。
我切换到使用了user systemd,并使用
loginctl enable-linger myuser
使其保持登录状态。我然后启用了~myuser/.config/systemd/user目录中定义的服务。现在,服务按预期与系统干净地启动和停止。如果我作为“myuser”登录终端,那么systemctl --user start ap@inst1
和systemctl --user stop ap@inst1
都能完美地工作。但是,如果我作为另一个用户(user2)登录并在终端中执行
sudo su - myuser
,那么systemctl --user
命令将失败,并显示错误消息“Failed to get D-Bus connection: no such file or directory”。如何使
sudo su - myuser
命令切换用户后,systemctl --user
命令正常工作?