Answers:
K.Chen提出的问题是:为什么从CLI进行操作时为什么需要sudo特权,但是从GUI进行操作时却不需要此类特权。
答案的第一部分是设计桌面环境的人员,例如Gnome,KDE,Xfce,Mate,Cinnamon,...试图简化用户的工作,并且他们配置关闭和重新引导而无需sudo凭据。顺便说一句,这意味着必须有一个不涉及程序关闭的关闭序列,这确实需要sudo特权(无法解决)。
我不详细了解每个DE的工作方式,但是我知道有一种温和的方法可以关闭或重新启动/关闭/休眠系统,而无需root特权。您可以在Arch Linux论坛中找到原始帖子。从本质上讲,这相当于发出hese命令:
停止
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit"/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
重启
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
dbus挂起
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
冬眠的
#!/bin/bash
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
我的猜测是GUI按钮大致使用这些命令。可以肯定的是,应该看一下代码,但是我相信这是一个安全的选择。
该设计决定背后的原因不是技术性的(您可能shutdown
在GUI中具有非特权命令或需要密码)。
使用桌面环境时,应该使用户可以物理访问计算机。与允许用户按下电源按钮或拔下电源线相比,最好允许完全关机。
使用外壳程序时,用户可以是远程用户,为避免远程关闭,需要更多特权。
这些不是规则,而只是基于假设的默认值:您可以在Shell中拥有本地用户,而在桌面环境中拥有远程用户。如果要选择默认行为,则可以相应地配置系统。
Sudo(超级用户)允许系统管理员为某些用户(或用户组)提供以root用户身份运行某些(或全部)命令的能力,同时记录所有命令和参数。shutdown -h命令或init 0命令可用于关闭计算机。但是这两个命令都需要root特权才能执行。
/ sbin中的命令必须具有root特权才能执行它。为了找到关闭命令的位置,
输入在终端中关闭的类型。
希望现在您的疑问很清楚:)