要从终端重新启动或关闭 Linux,可以分别使用reboot
和poweroff
。但是,这两个命令都需要 root 权限。为什么会这样呢?不要求具有 root 权限会带来什么安全风险? GUI 为任何用户提供了一种关闭或重新启动的方法,那么为什么终端命令需要以 root 身份运行呢?
说到 GUI 中的选项,如果终端需要 root 权限才能关闭或重新启动 Linux 计算机,那么 GUI 如何能够提供无需输入密码即可执行相同操作的选项?
答案1
警告:读完本答案后,您对 Linux 的了解可能会比您想要的更多
为什么reboot
以及poweroff
需要 root 权限
GNU/Linux 操作系统是多用户的,正如它的UNIX系统前辈。系统是共享资源,多个用户可以使用同时地。
流行的PDP-11小型机。以今天的标准来看有点大:)
如今,这可以通过网络远程发生(通常通过SSH), 在瘦客户端或在一个多座位配置,其中有多个本地用户的硬件连接到同一台计算机。
多座位配置。蒂亚戈·维格纳蒂摄
实际上,可能有数百或数千个用户同时使用同一台计算机。如果任何用户可以关闭计算机并阻止其他人使用它,那就没有多大意义了。
不要求具有 root 权限会带来什么安全风险?
在多用户系统上,这可以有效防止拒绝服务攻击
GUI 为任何用户提供了一种关闭或重新启动的方法,那么为什么终端命令需要以 root 身份运行呢?
许多 Linux 发行版不提供 GUI。桌面 Linux 发行版通常面向单用户模式,因此从 GUI 中允许这样做是有意义的。
命令仍然需要 root 权限的可能原因:
- 大多数面向桌面的发行版的用户都会使用 GUI,而不是命令行,因此不值得这么麻烦
- 与公认的 UNIX 约定保持一致
- (可以说是误导)安全性,因为它可以防止天真的程序或脚本关闭系统电源
GUI 如何能够在没有 root 权限的情况下呈现关闭状态?
实际机制将根据特定的桌面管理器 (GUI) 的不同而有所不同。一般来说,有几种机制可用于此类任务:
- 以 root 身份运行 GUI 本身(希望在任何正确的实现上都不会发生这种情况......)
- 设定值
- sudo 与 NOPASSWD
- 将命令传递给具有这些权限的另一个进程,通常使用D-总线。在流行的 GUI 上,这通常由波尔基特。
总之
Linux 用于非常多样化的环境 - 从大型机、服务器和台式机到超级计算机、移动电话和微波炉。想要让大家一直都开心,真的很难! :)
答案2
Linux 起源于 Unix,Unix 最初是作为多用户操作系统开发的。您可能会让一名用户想要重新启动系统来干扰其他用户。只有具有 root 权限的管理员才能执行此操作。
答案3
这是很自然的,也是一个政策问题和方便,它已从 GUI 允许,因为您物理登录到计算机。 (如果 GUI 不是以 root 身份运行,一些 Linux 发行版仍然会要求您输入密码,我使用的是 Centos 6,我的用户甚至没有 GUI 关闭/重新启动选项,只有注销和锁定选项)
从伪终端,您需要成为 root 或具有 sudo 权限,因为您可能不希望任何用户通过 ssh 进入您的服务器或计算机并将其关闭或重新启动。
答案4
对于第一个问题:
不要求具有 root 权限会带来什么安全风险? GUI 为任何用户提供了一种关闭或重新启动的方法,那么为什么终端命令需要以 root 身份运行呢?
是的,正如中所述这答案是,Linux 本质上是设计为多用户系统的。考虑到一个系统上有多个用户正在工作,那么如果允许任何一个普通用户在其他用户正在工作时关闭系统,那将是很糟糕的。想象一下,如果您的网络服务器被远方的用户关闭,会发生什么!因此,只有系统管理员(即 root 用户)才可以poweroff
访问reboot
系统。
你还可以算出:
$ which poweroff reboot
/sbin/poweroff
/sbin/reboot
所以,poweroff
和reboot
位于/sbin
目录包含实用程序和仅限根用户的命令,以及用于引导、恢复、恢复和/或修复系统的基本二进制文件。
因此,这些命令预计由系统管理员/root 用户运行,请访问联机帮助页:
DESCRIPTION
These programs allow a system administrator to reboot, halt or poweroff the system.
另请访问相关问题:为什么我们需要在终端中以 root 身份才能关闭和重新启动?
对于第二个问题:
说到 GUI 中的选项,如果终端需要 root 权限才能关闭或重新启动 Linux 计算机,那么 GUI 如何能够提供无需输入密码即可执行相同操作的选项?
GUI 是一个方便的问题,显然用户登录到 GUI,知道发生了什么以及他/她在做什么。因此,它不期望用户输入密码提示/要求,即允许通过某些方式关闭或重新启动机制喜欢政策工具包。但如果是命令行事情已经完全不同了……
当然,您可以使用桌面环境提供的等效命令。例如,对于gnome
,您可以使用:gnome-session-quit
使用不需要 root 权限的适当选项。
另请访问相关问题:如何在没有root权限的情况下按电源按钮关闭电脑?