Linux工具来监视愚蠢的/可能不明智的命令

sudo ing在Linux shell中做了一些潜在的愚蠢和危险的事情,增加了一些障碍,但是对于更新的Linux用户来说,这是一个微不足道的阻碍。 尽pipe如此,许多用户以root身份login,或者已经对sudo变得不敏感,有时可能会做一些糟糕的事情,例如:

  • chmod 777 /
  • rm -rf /
  • doh_oops > /dev/sda

似乎很less有用户真正想要这样做的情况 – 它们的使用可能是大约1%的故意和99%的意外。 当然,最好是备份你的系统,而不是做这样的事情 – 但是新手会犯错误,而Linux是无情的。

我不是要求UAC,但有一些实用工具可以监视控制台/ SSH /其他交互式会话的命令input,并通过某种validation程序运行之前执行? 一些正则expression式规则可以防止很多痛苦,特别是对于新的Linuxpipe理员来说,并且由于大多数时候你没有从交互式会话中运行大量的命令,所以不会有太大的障碍。 理想情况下,公用事业会产生一个额外的确认信息 – “你确定你想要通过这个,因为它看起来真的很愚蠢” – 并要求pipe理员input一个承认超出标准“是”的危险的东西,以便他被迫读取它。

这种types的效用是否存在? 如果是这样,我想知道从哪里得到它。

如果没有,这是一个坏主意,请解释为什么。

虽然我明白你想避免什么,为什么你可能想要这样一个实用程序,请考虑以下几点:你对待对话框提示你做什么? 您快速closures/确认它们而不需要额外考虑。 添加一个预期的“按Y认真运行这个命令”将是另一个“是的,我敢肯定,解雇”。

不幸的是,捕捉有潜在危险或破坏数据的命令并不像“less数正则expression式规则”那么简单。 要做到这一点,你必须列举一个相当彻底的命令和组合列表,以防止'oopsies'(考虑到每个pipe道,redirect,文件复制,链接工具都有数据丢失/安全隐患)。

因此,我不知道有一个现成的工具来完成这个工作。 也就是说,也许这是一个很好的主意,在这个主意中人们会find很好的效用。 如果你想实验你的想法,你可以开始在一个“确认包装”之后冒用一些“危险的”命令来运行。

为了让您开始使用脚本,请查看我为自动安装程序而破解的这个简单function: https : //github.com/tristanfisher/culinary/blob/master/culinary.bash#L42-52

编辑:我其实觉得这是一个非常酷的想法,特别是如果它可以作为一个可以轻松安装的软件包。 有一个新的Linux CLI用户? apt-get install cli-seatbelt并在他/她的$ SHELLrc中添加一行。 我不相信这样做会阻止我的妈妈通过BASH意外地发射ICBM,但input一个随机的2位数字可能会起到“有可能会有龙运行这个命令”的作用。

我不认为这样的效用存在。 我不会说这是一个坏主意,但是把这样一个拐杖放在适当的位置会导致“系统会抓住我”的马虎/虐待行为的做法。

没有给出root权限,sudo的正确使用(不要盲目地给每个人所有的所有权)等等,对于保护你将会有很大的帮助,但是在系统pipe理员身上真的不能替代权限。

  • 想出一个全面的“坏事”清单是相当困难的,
  • 同样的问题也适用于UAC:人们“训练”自己没有阅读和思考就说“是”
  • 如果你打算做一个“坏”的事情,并以错误的结果结束,它并不会帮助你

话虽如此,我认为有些事情可以做得更好。 很久以前,我有一个内核补丁,强制杀死任何试图删除名为'UNDELETABLE'的文件的程序,并在关键目录中使用这个名称。

还有SElinux的能力系统。 这不是一件容易的事情,但是我可能会认为有可能需要特殊的额外function来改变某些文件或目录。 那么'root'不是一个完全特权的用户,除非你做了一些事情来获得额外的function。

编辑: Linux:创build文件和direcotire但不删除它们说“chattr +我”将渲染文件不可改变,即使是根。

Pamfilter是为此目的而devise的。 它没有真正看到太多的发展,可能不会做你想要的,而不需要添加代码来完成它所需要的过滤。

pam_filter

我应该指出,即使有这样的事情,也不要低估愚蠢的人做愚蠢的事情的力量。