我想shutdown
在 Ubuntu Server 安装上禁用所有用户的命令,甚至是 root 用户。
我想这样做的原因是为了确保我不会养成以这种方式关闭机器的习惯,因为我与这台机器同时通过 SSH 连接到很多生产机器,而我没有想要通过在错误的窗口中键入命令来意外关闭其他机器之一。
我想要禁用关机的服务器仅在我的 Windows 桌面上的 VirtualBox 内运行,并且我仅将它用于本地测试,因此如果我无法从命令行关闭它也不是问题。
通过确保我在 VirtualBox 映像上使用不同的密码,我已经稍微缓解了这个问题,但很明显,如果我sudo
在其中一台生产机器的“窗口”内,我仍然可能不小心将其关闭。
我的问题是:
- 如何禁用关机命令?
- 如果我确实禁用了关机命令,是否应该让我知道任何后果?最具体地说,它是否会禁用对 ACPI 关闭的支持,这相当于按下物理机上的电源按钮?它会影响其他通用应用程序吗?
有关信息,我只是使用这个 VirtualBox 图像来尝试 shell 脚本、运行 Tomcat 和 Java,以及诸如此类的事情。
解决这个问题的一个更好的方法是在你不想关机的盒子上安装molly - guard程序,而不是试图训练自己永远不要关机。
典型的配置是它要求您输入机器的主机名以确认您确实在正确的主机上。
可以将新脚本添加到
/etc/molly-guard/run.d
(如手册页中所述,脚本文件必须遵循run-parts
.如果你真的想禁用
shutdown
(这是一个奇怪的想法),就做然后如果您需要使用它,请将其 chmod 回 0755。
如果您通常将命令运行为
sudo shutdown
,而不是sudo /sbin/shutdown
,那么您可以为“shutdown”设置一个全局 shell 别名,以便将消息回显到终端。真正的可执行文件仍将用于所有其他目的。要禁用关机命令,只需使二进制文件不可执行,即
sudo chmod a-x /sbin/shutdown
我也不认为它会影响任何其他关机方法,因为正如关机的 man 条目所说因此,即使在禁用关机命令之后,任何其他命令/脚本也可以执行此操作,例如,我仍然可以使用 GNOME 菜单中的关机来关闭我的系统。此外,您仍然可以使用 reboot 命令从命令行重新启动计算机
shutdown
命令在/sbin/shutdown
. 您可以通过执行以下操作禁用它:但是:这意味着关闭系统的常用方法几乎都不再有效。在我的测试机器上关闭 gnome 以获得这个答案会导致它只是让你注销并将你扔回 GDM。
如果你想在之后关闭你的系统,你必须这样做
“禁用”关闭将影响使用该命令进行任何操作的每个应用程序。由于
init 0
不是关闭系统的推荐方式,所有必须关闭系统的程序都使用shutdown
它,这将不再起作用。应用程序也可能由于缺少文件或文件不可执行而引发异常,即使不需要关闭也可能导致它们崩溃。这是一个边缘情况,您可以通过将一些二进制的、理想的可执行文件(不是 shell 脚本 - 不起作用)移动到它的位置来解决。例如:
这是在您安全地将原件移开之后。
现在,所有这一切都非常 hacky,我建议不要这样做,原因在 João Pinto 的评论中概述。但我不会阻止你这样做。:-)
不仅要备份 /sbin/shutdown,还要制定恢复计划,以防它引起任何问题。例如,不要在您无法访问的服务器上执行此操作。并预先测试您的恢复计划,假设系统根本无法启动(它当然会启动 - 我已经测试过了 - 但请注意安全)。
我认为应该采取其他解决方案,服务器应该有一个 ssh 策略来禁用关机和通过 ssh 初始化 0,或者必须在控制台上显示一个特殊的对话框,如 Windows 输入“为什么”和特殊的“关机密码” . 为此,电源按钮应在服务器使用时受密码保护。
目前我们使用“物理钥匙开关 = 4Euros”而不是按钮。
我要禁用
shutdown
命令。这是因为如果有人试图强行使用这个命令,那么他也不能
现在没有人可以使用关机命令了。
它将显示一条消息 command not found install it。
在 bash.bashrc 的最后添加一行
如果你想要它回来(启用)。把它复制回来