服务命令和非root用户

服务命令和非root用户

在我们主要客户的 Linux 服务器上,我们的 bash 脚本在 root 下运行多年。现在出于安全原因我们想改变这一点。

我们的一些脚本是由“service”命令触发的,例如“service filescontrol start”。

我们客户的主要管理员也希望这些服务触发脚本在普通用户下运行。

但“service”命令的概念不是与root用户绑定的吗?

答案1

service是一个像任何其他过程一样的过程。大多数时候,它是/sbin/service。由于我们现在有许多“init”管理器(RC-Scripts、upstart、systemd、svcadm...),每个管理器都有自己的专长,因此使用service来管理启动脚本是一个好点。

您需要进行的修改绑定到底层系统。

例如,在 init-rc 系统(最常见的)上调用脚本/etc/init.d/crond或调用service crond是相同的:

$ service crond status
crond (pid  1837) is running...
$ /etc/init.d/crond status
crond (pid  1837) is running...

但对于 systemd,问题要棘手得多,因为所有内容都是由二进制“systemd”管理的。

所以,如果你不想管理很多系统和异常,你可以考虑使用sudo.否则,您可以以用户 lambda 身份启动脚本,或使用“set-uid”脚本。

相关内容