在软件开发过程中,良好的工作模式是对别人委之以重任而又不能给之以信任。既要给别人灵活方便的自由度让其自由发挥,又要将误操作带来的损失降低到最小而防患于未然。
在centos系统中,systemd没有user mode,只有system mode,因此只有root才能执行systemctl enable
。如果一个普通用户想做某个服务的开机自启动,有两种选择:
- 找root用户添加。如果root日理万机,对这些请求就会不胜其烦。
- 让root用户给他sudo。这样有可能造成普通用户用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,将在开机后自动启动。
![6908832-f1a26ef2f01a3304.png](https://i-blog.csdnimg.cn/blog_migrate/dc972c074d1fdee6e070d0513f7c7ce1.webp?x-image-process=image/format,png)
bar用户创建的service文件
![6908832-536d796739fc2c34.png](https://i-blog.csdnimg.cn/blog_migrate/d30677f19b78f42378d52cee2975e18f.webp?x-image-process=image/format,png)
bar用户创建的service被bar target加载启动