这个问题做了两个假设:
我的 root 用户的交互式 shell 运行 bash
.bashrc
仅在交互式 shell 中调用
如果我附加众所周知的 fork 炸弹(:(){ :|: & };:
-不要运行这个!) 添加到 root 文件的末尾.bashrc
,这是否可以阻止某人在我不想让他们访问交互式 root shell 时访问?显然不是最好的解决方案,出于好奇心做更多的事情。我只是想知道大家对此有何看法。
编辑:我知道这绝不是有用。 我只是好奇的。
答案1
它不会做任何事情,因为任何现代 Linux 发行版(包括 Ubuntu)都已修补,所以这个 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