防止" rm -rf"

时间:2017-02-01 18:23:25

标签: linux rm

如你所知,"某事"今天发生在Gitlab上,这让我想起了我之前采访中的一个问题。我被问及"有没有办法阻止管理员使用命令' rm -rf' ? "其实我不知道答案,所以你们有什么想法吗? (此处'阻止'表示您已输入&rm -rf'并按Enter键但是&rm -rf'不起作用。我在我的采访结束时忘了问答案>。<

4 个答案:

答案 0 :(得分:2)

您可以在她的环境中添加别名,将rm重新定义为rm -i。她可以使用'rm'覆盖此内容,但这需要考虑。

答案 1 :(得分:1)

首先,我将尝试解释超级用户是一个管理角色,通常会禁用所有权限检查。当然,您可以执行一些对策,以避免root帐户绕过它们并解决灾难。第一个(在许多系统上可用)是将根文件系统挂载为只读。您可以通过符号链接挂载另一个文件系统读写并将所有允许修改的文件移动到那里。这使得系统更加强大,可以防止错误,但更难以管理(准备系统像这样工作需要精细的工具来修改和审核缺陷或不一致)下一步是禁止管理员物理访问系统。重新引导系统允许您控制引导过程并强制从不同的文件系统内核引导或使用其他帐户管理数据库,这样可以绕过系统的正常安全性。另一种方法是管理系统中的所有角色以在非特权用户级别工作,并完全禁止普通用户访问root帐户(这种方法在android系统中遵循,是linux系统)这种方法存在风险增加的问题,因为如果不小心的话,你可以很容易地完全锁定你的系统。

通过使用 jail 概念限制对某些系统部分的访问,有一些unix风格允许root帐户的受限实例。 BSD unix系统使用这种方法作为提供精简虚拟环境的一些意图。在此方法中,您可以在系统中提供虚拟空间,并为其提供超级用户权限,同时保护主机系统免受攻击。它允许超级用户创建和管理甚至不同的新IP地址以及对某些设备的低级访问。您可以在运行时从主机系统进行控制(您可以在客户系统中导航,而不会让用户看到您的进程,主机用户或主机进程)

但是,如果管理员具有对系统的物理访问权限,则不会阻止她shutdown并使用不同的根分区重新启动它以克服所有这些障碍。然后,她可以删除她想要的任何内容(即使是加密卷,其目的是阻止用户绕过权限访问,她可以使用新数据覆盖它们,销毁原始数据)

最后,作为结论,您会发现小心并且从不使用root帐户进行正常的普通任务是最好的方法。正如其他回复所建议的那样,将alias rm='rm -i'作为某种安全网,通常是解决问题的最佳方法,因为其他替代方案需要更好(如果不是最好的)管理技能,而不仅仅是强迫{ {1}}命令要求您确认要求其删除的每个文件。

答案 2 :(得分:0)

您可以使用(在某些文件系统上,例如ext4chattr(1),例如作为chattr -R +i dirname (但系统管理员仍然可以恢复...)。

但我不认为这是个好主意。 rm -rf应按预期工作(但您可能会rm成为某个alias,例如在~/.bashrc中。当然你有备份。

如果您运行rm -rf并快速中断 ,您可能会尝试使用debugfs(8)修复 ext4 文件系统。小心使用。

答案 3 :(得分:0)

有一种机制,尽管非常局部,可以帮助解决“rm -rf”的影响。通过建立一个文件的硬链接,驻留在不同的目录中,该文件不能再被原始目录中执行的单个“rm”删除:它将从原始目录中消失,但它将继续存在于原始目录中。文件系统。

对于重要目录中的文件,这些硬链接可以提供帮助;不幸的是,目录本身不支持硬链接(并且有充分的理由);因此,“rm -rf”在“通过硬链接备份的树”上运行也会破坏目录结构,此外还会使文件从原始位置消失。但是,精心策划的硬链接系统将为恢复丢失的文件提供最后的机会。