如何从非 root 帐户执行 root 操作?

如何从非 root 帐户执行 root 操作?

我希望能够从在 www-user 帐户下运行的 php 脚本重新启动服务。

执行这些操作的首选方法是什么?

我认为我可以创建一个包含排队命令的文件,由 CRON 读取,但解决方案很棘手。

我正在考虑的是一个微型服务,在 root 权限下运行,允许预定义的“方法”,因此无法执行任意的 root 操作。

有什么工具可以实现这个吗?

答案1

您可以重新发明轮子,但老实说,我使用无密码 sudo 来执行此操作。例如,我的监控系统需要能够运行命令来检查硬件 RAID。这需要 root 权限,但我不想以 root 身份运行整个监控系统,因此我改为使用sudoers一行

nagios  ALL=(root) NOPASSWD: /usr/lib/nagios/plugins/check_md_raid

然后sudo /usr/lib/nagios/plugins/check_md_raid当我需要检查 RAID 时,以监控用户身份运行该命令。

你可以有一个 sudoers 行,说

www-user    ALL=(root) NOPASSWD: /etc/rc.d/init.d/myservice

然后让 php 执行sudo /etc/rc.d/init.d/myservice restart

答案2

看一眼须藤:它允许指定可以作为另一个用户(在您的情况下为 root)执行的操作。

例如,您可以添加到您的/etc/sudoers(不要直接使用编辑文件visudo

www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction

man sudo参阅文件的详细信息和语法

相关内容