如何将"rm -rf /"设置为别名?

我想为rm -rf /创建一个别名。我知道如何创建别名;问题是我不知道如何使用一系列命令来创建具有所有命令的别名。当使用"/"时,我希望像rm -rf / = echo 'something'这样。

我该如何实现这个目标?


9听起来你想要创建一个(可能不明智的!)函数... - Zanna
是的,我和一些同事合作时,有人认为在我的台式机上尝试那个命令是个好主意,但我想确保这种情况不再发生。 - Caranfil Alegzandru
@Zanna 是的,逃避是一件可怕的事情... 我认为 OP 的目标是提醒大家不要这样做... - WinEunuuchs2Unix
我宁愿使用带有密码的 rm 命令来阻止对 / 的访问。 - Fl.pf.
现在不知道怎么做,但是对于一个检查目录是否为/的rm包装脚本怎么样? - WinEunuuchs2Unix
@WinEunuuchs2Unix 我只希望他们再次尝试时,输出结果会有所不同。他们就像猴子一样,对Linux的工作原理一无所知。他们只是在谷歌上随便看到了那个命令,并尝试执行它。我当时太愚蠢了,竟然让我的电脑保持登录状态。 - Caranfil Alegzandru
8@CaranfilAlegzandru 在我看来,你误解了别名的概念。别名是一个命令的替代名称,它并不会禁用或替换原始命令。举个例子,如果我为ls -l添加了别名ll,那么llls -l都会产生相同的效果。 - Henning Kockerbeck
@HenningKockerbeck 你是对的,但如果我为 echo "something" 添加别名 ll,那也能正常工作,对吗? - Caranfil Alegzandru
@CaranfilAlegzandru 那样的话,它不会以任何方式影响 ls -l(或者在你的情况下,rm -rf /)。 - Henning Kockerbeck
想要了解一些关于别名搜索的内容,可以在“~./.bashrc”中查找相关命令。我喜欢这个包装器的想法,它只限制在用户主目录的子目录中使用。 - WinEunuuchs2Unix
@HenningKockerbeck 我知道,我的观点是这是可能的。我只想将 rm -rf / 转换为 echo "something"。我知道他们可以使用 cd / && rm -rf *,但他们不知道如何做到这一点。当然有很多方法来解决简单别名的问题,但他们不知道那些方法。 - Caranfil Alegzandru
5@CaranfilAlegzandru 在你的情况下,别名并不是一个合适的工具。你不想添加另一种执行rm -rf的方式,而是想要禁用或取代原来的方式。而这正不是别名所能做到的,别名只是为命令添加另一个名称。heemayl的回答是一个更可行的方法。 - Henning Kockerbeck
2我同意,一个别名并不是OP的目标所需要的工具,但是,@HenningKockerbeck,你过于狭隘地解释了一个技术细节。如果我给ls设置一个别名为date,那么是的,我定义了一种新的学习(可能也是设置)系统日期和时间的方式,但同时也禁用了ls命令来列出文件。(是的,我知道这很容易被规避,但这不是重点。) - Scott - Слава Україні
1@CaranfilAlegzandru 不需要做任何事情;rm已经可以自动完成此操作。# rm -rf / 表示 rm: 对‘/’进行递归操作很危险 - rm: 使用--no-preserve-root来覆盖这个安全机制。 - marcelm
1@CaranfilAlegzandru 如果你的同事在找到的任何无人看管的终端上输入随机命令,那么仅仅锁定这个命令是不够的。你需要做两件事:1)当你离开时始终锁定你的系统(设置屏幕保护程序,在几分钟内自动锁定),2)与他们交谈并解释他们犯了多么严重的错误(假设他们知道会发生什么,他们就不会这样做),这样他们就不太可能再尝试那种愚蠢的行为了。 - Ray
1这绝对是我最近见过的一个最好的XY问题的例子之一。 - isanae
3个回答

这样做会更好,通过应用适当的权限来防止人们删除东西。
这种别名“安全”方法很容易被禁用别名、符号链接到rm并以这种方式运行,复制rm二进制文件,甚至可能直接运行它来覆盖。
当离开桌面不受监管时,您应该按下Ctrl+Alt+L来锁定桌面。

同时,运行 'rm' 的脚本可能会因为别名的额外输出而感到困惑。 - Amias
1但这只会成为一个问题,如果用户运行了一个运行 rm -rf / 的脚本(这似乎不太可能),而且只有在运行脚本的 shell 扩展别名时才会发生(这不是默认行为)。 - Scott - Слава Україні
1+1 通过模糊性来保护安全通常是一个不好的想法。 - jpmc26
补充一下,这就是为什么Linux允许多个登录的原因。为你的“ppl”创建单独的登录账户,但不要让他们成为管理员!或者直接启用访客登录,让他们以访客身份登录。如果你采取了以上任何一种方式,他们可以随意搞砸自己的账户,但无法破坏系统或者你的账户。 - Paddy Landau

一个简单的bash函数就可以了(但是这显然可以被用户覆盖):
rm () { [[ $1 =~ -(rf|fr) && $2 = / ]] && echo "whatever" || command rm "$@" ;}

请注意,即使某些用户执行了rm -rf /命令,该操作也不会继续进行,因为需要使用rm命令输入--no-preserve-root选项来递归删除根目录。(顺便说一下,没有任何阻止用户执行rm -rf /*cd /; rm -rf *的措施)。
但是,您应该考虑实施一个良好的安全策略,而不是对敏感内容进行临时修补。

他们对Linux没有任何经验。他们就像猴子一样,在谷歌上看到一张图片,上面写着“sudo rm -rf / - bla bla”,他们就照做了。我只是想找点东西来迷惑他们,这个主意似乎不错。谢谢! - Caranfil Alegzandru
1猴子看见,猴子也会做 ;) - WinEunuuchs2Unix
@WinEunuuchs2Unix 真的!我在工作中遇到了一些问题,说实话,我没有时间每次有人想再试一次时都重新安装操作系统。而且很多时候我忘记锁定笔记本电脑,当我去抽烟或其他事情时。我担心这些人会再次尝试,下次他们可能会在生产服务器上这样做。 - Caranfil Alegzandru
1听起来像是一个不错的笔记本电脑摄像头应用程序,当1分钟内没有动作时(你离开桌子但不只是在文件柜旁边待了一分钟),可以自动锁定屏幕。 - WinEunuuchs2Unix
3戒烟吧 ;) - Amias
如果你真的想要困惑别人,安装sl命令吧,通常可以在同名的软件包中找到。 - Simon Richter
或者至少别告诉别人你抽烟吧 ;) - WinEunuuchs2Unix
为什么回滚?你有读我在编辑说明中放的链接吗? - wjandrea
@wjandrea 我不需要,我清楚自己在做什么。你有多少次见过echo失败? - heemayl
@heemayl 是的,但这对于阅读你的代码的人来说是个不好的例子,而且 if-then 语句更容易阅读。但无论如何,这并不是什么大问题。 - wjandrea

这里真正的问题是你们系统的安全性。你与之合作的人不应该能够执行 rm -rf / 这样的命令,因为那需要 root 访问权限 - 实施一个更好的安全模型可以避免不称职的人破坏系统,此外,如果你使用的是最新版本的 rm 命令,它应该实现了 --no-preserve-root

2只要机器被解锁,任何人都可以输入 rm -rf /。如果他们没有 root 访问权限,他们不应该能够删除整个文件系统,但是如果没有立即退出(因为没有指定 --no-preserve-root),rm -rf / 将递归地遍历目录树,直到达到 OP 的主目录和其他他有权限删除的文件。 - Scott - Слава Україні
这个。应该要求Root执行rm -rf /并且获取Root权限需要输入密码。问题解决了。如果可以无需密码就获取Root权限或者不需要Root权限,那么你的安全性是不足的。 - Mast