无论出于何种原因,我们不再需要成为 root (或使用sudo
)来运行/sbin/shutdown
,/sbin/reboot
等等。
这似乎是因为这些可执行文件现在是符号链接,/bin/systemctl
可以像普通用户一样处理所有内容。
但是,如果我想要shutdown
并reboot
再次要求 root 身份验证怎么办?我怎样才能做到这一点?
我记得在 9.04 左右的 ubuntu 版本中,如果有其他用户登录,可以禁用用户关闭(也可能挂起)系统。类似 policykit 或类似的东西。
可以在 11.04 做吗?
谢谢
编辑:
如果有人需要(自担风险),/usr/lib/pm-utils/bin/pm-action 中的小改动将允许用户挂起机器,如果他只是用户登录或用户将运行 sudo pm-suspend。可能不是最好的代码,但现在有效。
diff -r 805887c5c0f6 pm-action
--- a/pm-action Wed Jun 29 23:32:01 2011 +0200
+++ b/pm-action Wed Jun 29 23:37:23 2011 +0200
@@ -47,6 +47,14 @@
exit 1
fi
+if [ "$(id -u )" == 0 -o `w -h | cut -f 1 -d " " | sort | uniq | wc -l` -eq 1 ]; then
+ echo "either youre root or root isnt here …
Run Code Online (Sandbox Code Playgroud) 我想shutdown
在 Ubuntu Server 安装上禁用所有用户的命令,甚至是 root。
我想这样做的原因是为了确保我不会养成以这种方式关闭机器的习惯,因为我与这台机器同时 SSH 进入很多生产机器,而我没有想通过在错误的窗口中键入命令来意外关闭其他机器之一。
我想要禁用关闭的服务器仅在我的 Windows 桌面上的 VirtualBox 内运行,而且我只将它用于本地测试,因此如果我无法从命令行关闭它也不是问题。
我已经通过确保在 VirtualBox 映像上使用不同的密码稍微缓解了这个问题,但很明显,如果我sudo
在其中一台生产机器上的“窗口”内,我仍然可能不小心将其关闭。
我的问题是:
有关信息,我只是使用这个 VirtualBox 图像来尝试 shell 脚本、运行 Tomcat 和 Java 等等。
有很多关于为什么shutdown
和reboot
需要 root 权限的问题。也有很多很好的答案。
但是有一点我不明白:如果在多用户系统中能够在没有 root 权限的情况下重新启动或关闭是一个非常糟糕的主意……那么为什么这在 Ubuntu 16.04 中是可能的?
当我在终端中输入poweroff
或reboot
并点击 时Enter,它确实会关闭/重新启动!
它是好的,对我来说,当poweroff
且reboot
不需要root权限......但为什么suspend
需要root权限?当我输入suspend
终端并点击 时Enter,它不会挂起,而是卡住了……当我运行时pm-suspend
,它需要sudo
.