为什么重启和关机需要root权限?

为什么重启和关机需要root权限?

要从终端重新启动或关闭 Linux,可以分别使用rebootpoweroff。但是,这两个命令都需要 root 权限。为什么会这样呢?不要求具有 root 权限会带来什么安全风险? GUI 为任何用户提供了一种关闭或重新启动的方法,那么为什么终端命令需要以 root 身份运行呢?

说到 GUI 中的选项,如果终端需要 root 权限才能关闭或重新启动 Linux 计算机,那么 GUI 如何能够提供无需输入密码即可执行相同操作的选项?

答案1

警告:读完本答案后,您对 Linux 的了解可能会比您想要的更多

为什么reboot以及poweroff需要 root 权限

GNU/Linux 操作系统是多用户的,正如它的UNIX系统前辈。系统是共享资源,多个用户可以使用同时地

过去这通常发生在电脑终端连接到一个小型机或一个大型机

等离子11

流行的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

所以,poweroffreboot位于/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权限的情况下按电源按钮关闭电脑?

相关内容