防止运行致命/致命命令

Dav*_*end 7 permissions security command-line bash blacklist

在最近阅读了文章“你不应该在 Linux 上运行的 8 条致命命令”之后,我计划以某种方式阻止/阻止/更改某些命令。我不担心其他人会在我的 PC 上运行破坏性命令。我担心我可能是这次事故的罪魁祸首。

我担心下面列出的命令。

wget http://example.com/something -O – | sh –
Run Code Online (Sandbox Code Playgroud)
  • 当我从指南中复制和粘贴命令时,我运行了这一行。如果我注意到sh -,我只会在检查存档内容后运行它。

rm -rf /
Run Code Online (Sandbox Code Playgroud)
  • 我不小心按了“Enter”键很多...

我想防止将来犯这些错误。是否有命令/配置文件可以确保我不会犯这些错误?即使使用 sudo/root 权限,我也不希望能够运行上面的命令。如果解决方案可以逆转就可以了。

将帮助我了解有关 Ubuntu 的更多信息(不包括常见的 Ubuntu Wiki/帮助/等链接)的资源将不胜感激

数据丢失不是我主要关心的问题。我想让终端对自己更安全一些(如果你愿意的话,'newb-proofed')。这对我很有帮助,因为我有很多东西要学。我又开始上学了,我不能花太多时间解决问题/错误(尽管很有趣)。

编辑

是否可以要求特定的命令来要求确认?如果我想设置特定的命令需要一个特殊的密码,可以做到吗?

Ser*_*nyy 16

正如我在评论中所说的那样,知道您键入的内容是最好的安全性

这是一个示例,已在相关问题中使用

`base64 --decode <<< "cHJpbnRmICclcycgICdIZWxsbyBXb3JsZCcK"`
Run Code Online (Sandbox Code Playgroud)

(为了完整起见,您可以使用-dflag 而不是--decode。尝试编辑我的答案的人说-d无效,但它非常有效,在手册中指定)

你知道这是做什么的吗?是伪装的printf '%s' 'Hello World'。无害吧?如果是这样rm -rf /呢?当某些东西被伪装时,黑名单不会拯救你。你能看到这个命令被恶意用户放在合法论坛上吗?因为这确实发生了。而且它不一定是那个命令——如果你是新用户并且不知道你在做什么,恶意用户可以告诉你删除 python或其他一些关键包,这将解决带来的任何问题你到他们的博客或论坛。

但是可以肯定的是,您可以通过全局函数将某些内容列入黑名单(因为函数优先于命令或别名),/etc/bash.bashrc如下所示:

function rm{

if [ "$1" = "-rf" ] && [ "$2" = "/" ]
then
    echo "This command is bad juju"
else
    rm "$@"
fi


}
Run Code Online (Sandbox Code Playgroud)

这只是一个例子。并且非常多余 -rm -rf /默认情况下在 Ubuntu 上需要确认。

这也不是防弹的。如果我作为攻击者使用不同的外壳怎么办?你的bashrc魔法不会在dashshell 中发挥作用,默认情况下它也随 Ubuntu 一起提供

另外,您是否要编写函数将每个恶意命令列入黑名单?


附加说明:复制看似“无害”的命令也可能是危险的。请参阅如何保护自己免受这种剪贴板滥用?和 Stephane Chazelas 对这个问题的回答。

  • 而`cd / &amp;&amp; rm -rf *` 没有:P (8认同)