如何禁用可怕的终端命令?

如何禁用可怕的终端命令?

如何禁用可怕的终端命令?

我使用 SSH 访问远程 Ubuntu 服务器,但无法访问物理服务器。我以为我shutdown在 Ubuntu 操作系统上运行的 NoSQL 服务器中输入了“ ”,但实际上我告诉 Ubuntu 服务器关闭。然后我不得不告诉服务器管理员我做了什么,以便他可以为我启动物理服务器。这太尴尬了!

我怎样才能防止这种情况再次发生?

答案1

标准答案是“不要以 root 身份登录”。所有以 root 身份运行的命令都很可怕。如果那不是一个选择,您可以将一些别名命令放入您的命令中.bashrc以禁用您认为特别可怕的命令。例如:

for scary in shutdown halt  reboot rm
do
    alias $scary="echo If you really want to do that, type: `which $scary`"
done

然后,如果您输入shutdown,您将收到以下消息:

If you really want to do that, type: /sbin/shutdown

确保你的.bashrc已先加载,在你尝试这个之前在生产服务器上)

退出当前ssh会话并再次登录,或者使用. ~/.bashrc应加载/运行 .bashrc。也许尝试rm不带任何参数运行,以确保您的服务器没有禁用.bashrc登录时自动加载或类似操作。

请注意,如果您主要关心的是停止和关闭,您可以考虑安装molly 守卫,这将要求您在关闭机器之前输入主机名。如果您经常在命令行上关闭整个操作系统,但又想确保关闭的是正确的操作系统,那么这个命令就非常有用。

您还可以使用不太可怕的命令(例如注销或退出)来尝试此操作。

答案2

sudo存在是有原因的 - 使用它。当您的命令(在本例中为交互式 CLI)完成后,您将被转储回用户级 shell,而不是 root shell。很少有值得使用 root shell 的理由。(我很惊讶这还没有答案......)

话虽如此,不要成为一个sudo使用一切. 了解您正在做什么,并了解为什么它需要/不需要 root 权限。


此外,您还可以区分 root/用户 shell 的提示符。这也使得您更明显地回到了 shell 提示符,而不是“一些其他的 CLI“。我的非常丰富多彩,并且包含许多有用的信息(例如主机名),这使得它非常很容易知道命令将在哪个主机上执行,也可以更轻松地回顾历史记录并找到提示 - root shell 使用默认提示。

我的PS1

这更适合用于“你的“帐户,但如果您非常重视安全/系统管理,那么您就不会共享密码/帐户,也不会在没有充分了解的情况下坐在 root shell 中。


正如人们一遍又一遍地说的那样“使用别名命令来创建安全环境不是一个好主意“。你会在安全的环境中感到舒适,在不该输入的地方输入那些‘可怕’的命令。然后有一天你会换工作,或者登录到一台新机器,然后砰的一声”哎呀,我不是故意的,对不起“……”

答案3

软件包“molly-guard”(至少在 Debian 衍生系统上)将安装关机、停止、关机和重启的包装器。如果它检测到终端是远程终端,则它将提示输入主机的名称。如果不匹配,则命令被取消。

答案4

对于shutdownreboothalt和相关):我有一个副本,它会询问我是否真的确定(而且它什么也不做)。我将此类脚本存储在 中/usr/local/sbin。在 Debian 上,它的优先级高于其他/sbin(它是 PATH 的第一个目录)。

系统脚本使用完整路径,因此黑客阻止我停止远程服务器而不是本地机器(来自的一个不好的行为惊人的我使用 /sbin/shutdown 命令关闭了某些功能(例如,关闭 WM 程序),但没有其他间接作用,当真正需要时,我仍然可以将它们用作 /sbin/shutdown。

相关内容