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

Ric*_*ich 13 root sudo shutdown

我想shutdown在 Ubuntu Server 安装上禁用所有用户的命令,甚至是 root。

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

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

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

我的问题是:

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

有关信息,我只是使用这个 VirtualBox 图像来尝试 shell 脚本、运行 Tomcat 和 Java 等等。

poo*_*lie 15

更好的方法解决这个问题是安装莫莉后卫程序上的框,你不要想关机,而不是试图训练自己永远不会运行关机。

molly-guard 试图防止您意外关闭或重新启动机器。它通过在现有命令之前注入几个检查来做到这一点:暂停、重启、关机和关机。

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

可以将新脚本添加到/etc/molly-guard/run.d(如联机帮助页中所述,脚本文件必须遵循run-parts.

如果你真的想禁用shutdown(这是一个很奇怪的想法),就这样做

chmod 0 /sbin/shutdown
Run Code Online (Sandbox Code Playgroud)

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

  • 你是认真的吗?这很奇怪。如果您只有 sudo 访问权限来运行 shutdown,也许您可​​以说服人们更改 sudo 以发出大提示,或者始终需要密码。如果您有意外关闭它们的风险,那么安装 molly-guard 符合管理员的利益。 (4认同)

Dav*_*ngs 4

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

  • 但请注意,设置 shell 别名(alias shutdown=sl)的明显方法不会对 sudo 的参数产生任何影响。在 zsh 中,您可以定义与参数匹配的别名,但我认为在 bash 中不行。您可以将 `sudo` 别名为 shell 脚本,如果第一个参数是 `shutdown`,则该脚本拒绝执行任何操作。 (2认同)
  • 换句话说,**这实际上行不通。** (2认同)