如何使用看门狗保护进程

如何使用看门狗保护进程

我在 ubuntu 上,正在foo.sh后台运行一个脚本。如何保护它不被使用 sudo 的用户杀死?如何保护这个进程不被我自己杀死?

我希望在看门狗发现脚本进程被终止后关闭 PC。我不能直接终止看门狗来欺骗这个保护吗?

我安装了watchdog,但我不知道如何使用它。请帮忙,给我一个示例命令。

.. 如果您想知道,foo.sh 是一个脚本,它会在运行 X 分钟后关闭我的电脑,就像计划关机一样。我想安排关机,但最后我后来取消了它。我必须阻止自己取消它。

答案1

如何保护它不被用户用 杀死sudo?如何保护此进程不被我自己杀死?

如果您是唯一的用户(因此系统范围的更改只会影响您),我认为有一种方法,一个繁琐的技巧。

  1. 确保脚本以 root 身份运行,并且只有 root 可以使用它(即您需要sudo终止它)。
  2. 准备一份/etc/group

    sudo cp -a /etc/group /etc/group.limited
    
  3. 编辑副本,以便您的用户不在该sudo组中。

  4. 将副本绑定安装/etc/group

    sudo mount --bind /etc/group.limited /etc/group
    

    从现在开始,诸如pkexec或之类的工具systemctl将拒绝提升的访问权限,因为它们将读取该文件并知道您不应该在该sudo组中。

    更改不会sudo轻易产生影响。该工具可能依赖也可能不依赖该sudo群体。如果确实如此,它仍会感知到您在群组中,因为您登录时就在群组中。我猜您不想注销并再次登录。要欺骗sudo您,需要一个单独的步骤。

  5. /dev/null绑定挂载/etc/sudoers

    sudo mount --bind /dev/null /etc/sudoers
    

    (或者您可以准备一个备用sudoers文件并安装它)。

  6. 退出任何可以以 root 身份运行任意命令的提升的 shell 或提升的程序。

这些坐骑不是永久的。重启后它们就会消失,然后你就可以sudo再次使用了。

请注意,该解决方案不仅会阻止您终止脚本;它还会(或试图)阻止您以 root 身份执行任何操作。这可能不是您想要的。不过,如果您保留以 root 身份执行某些操作的能力,那么可能还有办法做更多事情并最终终止脚本。


将此答案视为草图。我无法保证它会禁用所有提升为根的方法。特别是:

  • su -如果您提供 root 密码,它仍然可以工作(不过我猜您可以绑定挂载)/dev/null/bin/su
  • 我认为在其他发行版中相关组可能是adminwheel
  • 您能做什么pkexec取决于/usr/share/polkit-1//etc/polkit-1/(也许还有其他地方?)中的规则。规则可能很复杂,因此仅仅将自己从正确的组中移除可能还不够。

相关内容