使用 Fork Bomb 来阻止 root 上的交互式 shell

使用 Fork Bomb 来阻止 root 上的交互式 shell

这个问题做了两个假设:

  1. 我的 root 用户的交互式 shell 运行 bash

  2. .bashrc仅在交互式 shell 中调用

如果我附加众所周知的 fork 炸弹(:(){ :|: & };:-不要运行这个!) 添加到 root 文件的末尾.bashrc,这是否可以阻止某人在我不想让他们访问交互式 root shell 时访问?显然不是最好的解决方案,出于好奇心做更多的事情。我只是想知道大家对此有何看法。

编辑:我知道这绝不是有用。 我只是好奇的

答案1

它不会做任何事情,因为任何现代 Linux 发行版(包括 Ubuntu)都已修补,所以这个 fork 炸弹将不起作用(除非你更改默认安全设置)。

来吧,运行它;)

看:

Fork 炸弹保护不起作用:进程数量不受限制

https://superuser.com/questions/435690/does-linux-have-any-measures-to-protect-against-fork-bombs

这些限制应该已经默认设置。

无论如何,您也可以采取一些激烈的措施,例如将 root shell 设置为 /bin/false 等等。

不会阻止具有物理访问权限的人获得 root 访问权限,并且可能会或可能不会阻止

sudo /bin/bash
sudo /bin/ksh
sudo /bin/zsh
sudo /bin/sh

=)

答案2

su -当有人做了类似的事情时你会知道:你的服务器死机了。

这个计划听起来……极端?愚蠢?

如果你不想要交互式的 root shell,请将其添加到 root 的 .bashrc 的顶部:

[[ "$-" == *i* ]] && exit

$-保存 shell 选项字符 (-v、-x 等),如果它是一个交互式 shell,它将包含字母“i”。

答案3

那将完全没用(除了延迟获取交互式 root shell);

第一次尝试生成一个交互式根 ( bash) shell 可能会失败,但是由于非交互式 ( bash) shell 不会获取用户的.bashrc,因此在第二次尝试之前需要花几秒钟来运行sudo nano /root/.bashrc并移除 fork 炸弹(或者,如 muru 指出的那样,运行sudo nano /root/.profile并直接抑制 的/root/.bashrc获取);

尽管如此,如果这在一般情况下有效,那么仅添加 fork 炸弹仍然/root/.bashrc不会覆盖交互式根(sh)会话(以及任何非预安装 shell 的交互式根会话):首先,无论是否包含 fork 炸弹,sudo /bin/sh仍然会产生一个正常工作的交互式根shell。sh/root/.bashrc

相关内容