我想为rm -rf /
创建一个别名。我知道如何创建别名;问题是我不知道如何使用一系列命令来创建具有所有命令的别名。当使用"/"时,我希望像rm -rf / = echo 'something'
这样。
我该如何实现这个目标?
rm -rf /
的脚本(这似乎不太可能),而且只有在运行脚本的 shell 扩展别名时才会发生(这不是默认行为)。 - Scott - Слава Україніrm () { [[ $1 =~ -(rf|fr) && $2 = / ]] && echo "whatever" || command rm "$@" ;}
rm -rf /
命令,该操作也不会继续进行,因为需要使用rm
命令输入--no-preserve-root
选项来递归删除根目录。(顺便说一下,没有任何阻止用户执行rm -rf /*
或cd /; rm -rf *
的措施)。sl
命令吧,通常可以在同名的软件包中找到。 - Simon Richterecho
失败? - heemaylrm -rf /
这样的命令,因为那需要 root 访问权限 - 实施一个更好的安全模型可以避免不称职的人破坏系统,此外,如果你使用的是最新版本的 rm
命令,它应该实现了 --no-preserve-root
。rm -rf /
。如果他们没有 root 访问权限,他们不应该能够删除整个文件系统,但是如果没有立即退出(因为没有指定 --no-preserve-root
),rm -rf /
将递归地遍历目录树,直到达到 OP 的主目录和其他他有权限删除的文件。 - Scott - Слава Україніrm -rf /
并且获取Root权限需要输入密码。问题解决了。如果可以无需密码就获取Root权限或者不需要Root权限,那么你的安全性是不足的。 - Mast
/
的rm包装脚本怎么样? - WinEunuuchs2Unixls -l
添加了别名ll
,那么ll
和ls -l
都会产生相同的效果。 - Henning Kockerbeckecho "something"
添加别名ll
,那也能正常工作,对吗? - Caranfil Alegzandruls -l
(或者在你的情况下,rm -rf /
)。 - Henning Kockerbeckrm -rf /
转换为echo "something"
。我知道他们可以使用cd / && rm -rf *
,但他们不知道如何做到这一点。当然有很多方法来解决简单别名的问题,但他们不知道那些方法。 - Caranfil Alegzandrurm -rf
的方式,而是想要禁用或取代原来的方式。而这正不是别名所能做到的,别名只是为命令添加另一个名称。heemayl的回答是一个更可行的方法。 - Henning Kockerbeckls
设置一个别名为date
,那么是的,我定义了一种新的学习(可能也是设置)系统日期和时间的方式,但同时也禁用了ls
命令来列出文件。(是的,我知道这很容易被规避,但这不是重点。) - Scott - Слава Україні# rm -rf /
表示rm: 对‘/’进行递归操作很危险 - rm: 使用--no-preserve-root来覆盖这个安全机制。
- marcelm