在centos系统中,systemd没有user mode,只有system mode,因此只有root才能执行systemctl enable
。如果一个普通用户想把某个服务加入systemd的开机启动,往往需要需要给他sudo的权限。后来我发现可以通过添加target的方法,使得普通用户也能添加开机启动项。
比如需要让用户bar自行添加开机启动项,首先要为他添加一个target。
添加文件/etc/systemd/system/bar.target
[Unit]
Description=user bar target
[Install]
WantedBy=multi-user.target
并且enable这个target。
然后创建文件夹/etc/systemd/system/bar.target.wants
,并且将文件夹的owner给bar。
这样bar用户在/etc/systemd/system/bar.target.wants
文件夹中添加的service,将在开机后自动启动。
bar用户创建的service文件
bar用户创建的service被bar target加载启动