如何防止'sudo rm -rf /'


10

我几次不小心执行了命令sudo rm -rf /

有没有办法防止我运行此命令?例如,我可以使用sudoers文件以某种方式禁用它吗?


2
您如何不小心键入此命令然后执行呢?
fnord_ix 2015年

如果我输入这样的命令。sudo rm -rf / Applications/chess.app请注意/和A之间的空格。这就是
iProgram 2015年

Answers:


14

您可以添加一行

%admin ALL = !/bin/rm -rf /

到您的sudoers文件,以防止使用特定选项执行命令。

或者,如果要排除多个命令,则可以使用命令别名

Cmnd_Alias DANGEROUS_CMNDS=/bin/rm -rf /, /bin/rm -fr /
%admin ALL=!DANGEROUS_CMNDS

您也可以尝试使用来安全播放

Cmnd_Alias DANGEROUS_CMNDS=/bin/rm -rf /, /bin/rm -fr /, /bin/rm / *, /bin/rm * /, /bin/rm -rf / *, /bin/rm -rf * /, /bin/rm -fr / *, /bin/rm -fr* /
%admin ALL=!DANGEROUS_CMNDS

但是您仍然可能有其他方法可以用脚射击自己,rm因此请务必小心

但是请记住,所有匹配都在命令的完整字符串上完成,因此sudo rm -rf /Volumes仍然可以正常工作(与一样cd /; sudo rm -rf .)。

PS:务必使用sudo visudo来编辑sudoers文件,切勿直接对其进行编辑

PPS:我显然没有对此进行测试rm(仅针对/bin/echo


评论不作进一步讨论;此对话已转移至聊天
bmike

6

我知道您对问题的措辞使我怀疑您不想听这个答案,但是如果您容易一遍又一遍地犯同样的错误,则确实应该将自己从sudoers文件中删除。

潜在的问题是您没有被别名rm转移到垃圾箱(这显然是您当前和过去的使用方式),或者被迫rm -r被迫进入垃圾箱。rm -ri

alias rm='/bin/rm -i'

command rm -rf whatever一旦训练好了自己的思维,就可以随时解决别名,两次度量,一次rm -rf使用需要削减。


感谢您的提示。我正在考虑创建一个隐藏的管理员帐户(仅用于访问终端)和一个仅用于正常使用的标准帐户。我也可以将包装纸移到垃圾箱。感谢您的提示。我认为防止sudo可能是更安全的步骤。我仍将确保可以通过登录到隐藏的管理员来访问它。
iProgram 2015年

由于尚未回答上述问题,因此尚未标记为已回答。不过,这仍然是个好建议
iProgram 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.