允许非特权用户控制新贵工作的最佳方法是什么?
我所说的控制 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
等等。对于多用户/生产系统来说,这肯定不是一种安全的方法。