禁用所有用户的关机命令,甚至 root 用户 - 后果是什么?

禁用所有用户的关机命令,甚至 root 用户 - 后果是什么?

我想shutdown在 Ubuntu Server 安装中为所有用户(甚至是 root 用户)禁用该命令。

我之所以要这样做,是为了确保我不会养成以这种方式关闭机器的习惯,因为我同时通过 SSH 进入很多生产机器,并且我不想通过在错误的窗口中输入命令而意外关闭其他机器之一。

我想要禁用关机的服务器仅在我的 Windows 桌面上的 VirtualBox 内运行,并且我仅将其用于本地测试,因此如果我无法从命令行将其关闭,这不是问题。

我已经通过确保在 VirtualBox 映像上使用不同的密码稍微缓解了这个问题,但显然如果我在sudo其中一台生产机器的“窗口”内,我仍然可能会意外将其关闭。

我的问题是:

  1. 如何禁用关机命令?
  2. 如果我禁用关机命令,是否应该注意哪些后果?具体来说,它会禁用对 ACPI 关机的支持吗这相当于按下物理机器上的电源按钮吗?它会影响其他通用应用程序吗?

仅供参考,我只是使用这个 VirtualBox 映像来尝试 shell 脚本、运行 Tomcat 和 Java 以及诸如此类的东西。

答案1

解决这个问题的一个更好的方法是安装molly 守卫程序在你想要关机,而不是试图训练自己永远不要运行关机。

molly-guard 会尝试防止您意外关闭或重启机器。它通过在现有命令(halt、reboot、shutdown 和 poweroff)之前注入几个检查来实现这一点。

典型的配置是它要求您输入机器的主机名以确认您确实在正确的主机上。

可以添加新脚本/etc/molly-guard/run.d(如手册页,脚本文件必须遵循以下命名规范:run-parts

如果你真的想禁用shutdown(这是一个非常奇怪的想法),只需这样做

chmod 0 /sbin/shutdown

然后如果您需要使用它,请将其 chmod 回 0755。

答案2

sudo shutdown如果您通常以而不是来运行命令sudo /sbin/shutdown,那么您可以为“shutdown”设置一个全局 shell 别名,以便将消息回显到终端。真正的可执行文件仍将用于所有其他目的。

答案3

要禁用关机命令,只需使二进制文件不可执行,即sudo chmod a-x /sbin/shutdown 我也不认为它会影响任何其他关机方法,因为正如关机的手册条目所述

shutdown 向 init 守护进程发送请求,使系统进入适当的运行级别

因此,即使在禁用关机命令后,任何其他命令/脚本都可以执行此操作,例如,我仍然可以使用 GNOME 菜单中的关机来关闭系统。此外,您仍然可以使用重启命令从命令行重启计算机

答案4

我认为应该采取其他解决方案,服务器应该有一个 ssh 策略来禁用关机并通过 ssh 进行 init 0,或者必须在控制台上显示一个特殊对话框,就像在 Windows 上一样,用于输入“为什么”和特殊的“关机密码”。为此,服务器使用时电源按钮应该受密码保护。

目前,我们使用“物理按键开关 = 4 欧元”而不是按钮。

相关内容