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

Roh*_*han 67 shutdown security root sudo reboot

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

说到 GUI 中的选项,如果终端需要 root 权限来关闭或重新启动 Linux 计算机,那么 GUI 怎么能够在不需要输入密码的情况下提供执行相同操作的选项?

loo*_*bee 69

警告:在本答案结束时,您可能对 linux 的了解比您想要的要多

为什么rebootpoweroff需要 root 权限

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

过去,这通常发生在连接到小型计算机大型机的计算机终端

等离子11

流行的 PDP-11 小型机。有点大,按照今天的标准:)

在现代,这可能发生在远程网络(通常通过SSH)、瘦客户端或多座配置上,其中有多个本地用户将硬件连接到同一台计算机。

多座

多座位配置。蒂亚戈·维格纳蒂摄

实际上,可能有成百上千的用户同时使用同一台计算机。如果任何用户可以关闭计算机电源并阻止其他人使用它,那将没有多大意义。

不要求它具有 root 权限会带来什么安全风险?

在多用户系统上,这可以防止有效的拒绝服务攻击

GUI 为任何用户提供了一种关闭或重启的方法,那么为什么终端命令需要以 root 身份运行?

许多 Linux 发行版不提供 GUI。这样做的桌面 Linux 发行版通常面向单个用户模式,因此从 GUI 允许这样做是有意义的。

命令仍然需要 root 权限的可能原因:

  • 面向桌面的发行版的大多数用户将使用 GUI,而不是命令行,因此不值得麻烦
  • 与公认的 UNIX 约定一致
  • (可以说是被误导的)安全性,因为它可以防止幼稚的程序或脚本关闭系统电源

GUI 如何在没有 root 权限的情况下显示关闭?

实际机制会因特定的桌面管理器 (GUI) 而异。一般来说,有几种机制可用于此类任务:

总之

Linux 用于非常多样化的环境——从大型机、服务器和台式机到超级计算机、移动电话和微波炉。很难让每个人一直开心!:)

  • +1,但是如果我忘记了 root 密码,我该如何关闭我的微波炉? (35认同)
  • @Peter 幸运的是,您在 sudo'ers 列表中,实际上并不需要以 root 用户身份登录即可关闭。如果所有其他方法都失败了,请拉动电缆。[或者,您可以使用鸡蛋。](https://www.youtube.com/watch?v=BXKIahzdiPo) (11认同)
  • 如果您实际在工作站上操作 GUI,那么您还可以访问电源开关,因此不提供关闭/重新启动选项并不会真正阻止您关闭它。如果您不得不在没有正确关闭的情况下将其关闭,则会造成更大的损害。因此,包括本地 GUI 的关闭/重启是一个胜利。 (5认同)
  • 我认为现在所有的 GUI 都使用最后一个选项,通过 D-Bus(到 polkitd)进行通信。您可能想稍微解释一下——因为这也是您如何改变这种行为的方式。 (2认同)
  • @MontyHarder:大多数电源开关实际上发送 ACPI 命令;这确实关闭了计算机。通常您需要按住它大约 5 秒钟才能切断电源。 (2认同)

小智 47

Linux 起源于 Unix,Unix 最初是作为多用户操作系统开发的。您可以让一个用户通过想要重新启动系统来干扰其他用户。只有具有 root 权限的管理员才能做到这一点。

  • 值得注意的是,您可以将“中断用户”扩展到使用机器上运行的*服务*(尤其是数据库,Web 服务)的用户。 (2认同)
  • 基本假设是安装了本地 GUI 的系统往往不用作多用户主机。服务器很少有正在运行的显示管理器,如果有人需要在其上执行 GUI 工具,他们可以通过远程 X11 执行此操作。对于许多显示管理器(它们本身通常以 root 权限运行),如果您通过 XDMCP 获得远程会话,则关闭/重启按钮将被禁用。此外,许多桌面 linux 系统会在非 root 用户触发此类操作时检查是否有任何其他用户登录,如果是这种情况,将拒绝重新启动/关闭。 (2认同)

Ija*_*han 36

它很自然,而且是一个政策问题和便利,它已被 GUI 允许,因为您已实际登录到机器。(如果 GUI 未以 root 身份运行,某些 Linux 发行版仍会要求您输入密码,我使用的是 Centos 6,我的用户甚至没有 GUI 关闭/重启选项,只有注销和锁定选项)

从伪终端,您需要是 root 用户或具有 sudo 权限,因为您可能不希望任何用户通过 ssh 进入您的服务器或机器并关闭或重新启动它。

  • X11 转发会话没有 xdm 拥有的 root 权限,因此您无法运行能够重新启动机器的任何内容。 (2认同)

Tob*_*ght 10

关闭(任何类型的)会影响所有用户,甚至包括终止他们的进程。这不是您通常希望 J. Random User 能够做的事情,仅仅因为他们已登录。

通常,应该只允许获得授权的操作员重新启动,在某些情况下,允许那些具有物理访问权限的操作员 - 许多 Linux 系统可以通过机箱上的电源按钮关闭。我知道这一点,因为我不小心这样做了!现在,我通常在组装系统时断开按钮...


Pan*_*dya 6

对于1的问题:

不要求它具有 root 权限会带来什么安全风险?GUI 为任何用户提供了一种关闭或重启的方法,那么为什么终端命令需要以 root 身份运行?

是的,正如在这个答案中所说,Linux 本质上被设计为多用户系统。考虑到不止一个用户在一个系统上工作,如果允许任何一个普通用户在其他人工作时关闭系统,那将是糟糕的。想象一下,如果您的网络服务器被远处的用户关闭会发生什么!因此,只有系统管理员又名根允许用户poweroffreboot系统。

您还可以弄清楚:

$ which poweroff reboot
/sbin/poweroff
/sbin/reboot
Run Code Online (Sandbox Code Playgroud)

因此,poweroff并且reboot位于/sbin包含实用程序和仅限 root 的命令、用于引导、恢复、恢复和/或修复系统的基本二进制文件的目录下。

因此,这些命令应该由系统管理员/root 用户运行,请访问手册页:

DESCRIPTION
       These programs allow a system administrator to reboot, halt or poweroff the system.
Run Code Online (Sandbox Code Playgroud)

另请访问相关问题:为什么我们需要在终端中以 root 身份进行关机和重启?


对于第二个问题:

说到 GUI 中的选项,如果终端需要 root 权限来关闭或重新启动 Linux 计算机,那么 GUI 怎么能够在不需要输入密码的情况下提供执行相同操作的选项?

GUI 是一个方便的问题,显然用户登录到 GUI,知道发生了什么以及他/她在做什么。因此,它不期望来自用户的密码提示/要求,即允许通过某种机制(policy-kit )关闭或重新启动。但是在命令行的情况下,事情就不一样了......

当然,您可以使用 Desktop-Environment 提供的等效命令。示例,for gnome,您可以使用:gnome-session-quit具有适当的选项,不需要root权限。

另请访问相关问题:电源按钮如何在没有root权限的情况下关闭计算机?

  • 这将车放在马之前。这些文件位于 /sbin 中,因为它们仅供管理员使用。但问题是,_为什么_它们仅供管理员使用?答案不是“因为它们在 /sbin 中”。 (27认同)