如何在没有 sudo 的情况下执行紧急关机?

如何在没有 sudo 的情况下执行紧急关机?

问题

尝试允许组中的特定用户sudo使用以下代码执行紧急关机:

echo 1 > /proc/sys/kernel/sysrq
echo o > /proc/sysrq-trigger

注意,这是没有使用命令sudo

编辑:忘记提及,拥有的两个文件都root:root拒绝允许任何权限或所有者更改,即使是用户也无法更改root

理论情景

黑客入侵通常无人看管的系统,并获取读取机密数据的权限。自动脚本会关闭机器(假设黑客行为已被检测到),而不是让黑客继续运行。

虽然这不是我的确切用例,但它足够相似。

我尝试过的

  • 创建一个 bash 脚本来执行上述两行代码,赋予其root:sudo所有者,并添加一行以visudo允许特定用户运行该任务而无需输入密码。

  • 尝试将这两个文件的所有者更改为root:sudo

  • 尝试更改这两个文件的权限,以便该组root可以对它们进行写入。

这个想法是不要“嵌入” 的密码sudo,这样我就可以定期更改它,而不会忘记修改其他文件(或让关闭计算机的进程以root特权运行)。提前感谢您的帮助。

答案1

我的意见是将脚本中的行改为如下形式:

echo 1 | sudo tee /proc/sys/kernel/sysrq > /dev/null
echo o | sudo tee /proc/sysrq-trigger > /dev/null

并授予特定用户使用tee这些参数来运行命令的权限,而无需输入密码,例如:

username ALL=(root:root) NOPASSWD: /usr/bin/tee /proc/sys/kernel/sysrq

请记住,无法使用将字符串重定向到需要特定权限的文件中>,这意味着:

sudo echo hi > file
echo hi sudo >  file

是行不通的。

同时您不能简单地更改这些文件的所有者,因为它/proc是一个由内核管理的虚拟文件系统。

相关内容