以非特权用户身份控制 Upstart 作业

以非特权用户身份控制 Upstart 作业

允许非特权用户控制新贵工作的最佳方法是什么?

我所说的控制 upstart 作业是指启动/停止/重新加载/重新启动它:

start myservice 

我可以想象一种解决方法是通过 sudo;要做到这一点需要做什么?还有其他/更好的方法吗?

注意:这个问题虽然名字相似,但与以非特权用户身份运行 upstart 作业,因为它处理的是实际服务的执行,而不是作业的控制。

答案1

除了 Tuminoid 所说的之外,您实际上可以限制sudo具有具体参数的命令:

Cmnd_Alias START_MYSQL = /sbin/start mysql
user ALL=(ALL) NOPASSWD: START_MYSQL

使用 sudoers 中的以上两行(你可以使用命令编辑 suoders visudo),named 用户帐户user将能够无需密码运行:

$ sudo start mysql

sudo将要不是但是,无论是否使用密码,用户都无法执行任何其他操作,除非 sudoers 列表中有其他条目允许这样做。

答案2

当然,您可以使用 来控制作业sudo。您不需要任何特殊操作,只需要sudo start myservice等等。如果您有 sudo 权限,这是首选方法。

除此之外,您还需要以 root 身份运行一些映射器,以将用户特权命令转换为 root 命令。我曾经出于特殊目的使用 FIFO 完成此操作,FIFO 可由用户写入,由 root 特权 upstart 脚本读取,然后将命令映射到start, stop等等。对于多用户/生产系统来说,这肯定不是一种安全的方法。

相关内容