当我尝试从命令行或终端关闭计算机时,我必须具有 root 权限:
amy@amy:~$ shutdown now
shutdown: Need to be root
Run Code Online (Sandbox Code Playgroud)
和
amy@amy:~$ halt
halt: Need to be root
Run Code Online (Sandbox Code Playgroud)
但是当使用图形用户界面(即关机按钮或硬件关机按钮)关机时,我不需要输入密码。图形界面的关闭是什么,为什么它不需要密码或 root 权限?
我正在使用 Ubuntu 11.04 Natty。
我使用了该命令poweroff,意外地系统关闭了。我没有用过sudo所以我没想到电脑会被关闭。为什么我可以在没有 root 权限的情况下使用这个命令?
我正在阅读Linux 内核开发一书,在第 5 章“系统调用实现”第 77 页中说
例如,capable(CAP_SYS_NICE) 检查调用者是否有能力修改其他进程的nice 值。默认情况下,超级用户拥有所有功能,而非root 用户不拥有。例如,这里是 reboot() 系统调用。注意它的第一步是如何确保调用进程具有 CAP_SYS_REBOOT 。如果删除了那个条件语句,则任何进程都可以重新启动系统。
但是,在我的 Debian Sid 中,我可以通过使用 gnome 或通过执行 /sbin/reboot 而不使用 sudo 或 su 来重新启动我的机器。这怎么可能?
也许用systemctl?
ls -l /sbin/reboot
lrwxrwxrwx 1 root root 14 Jun 28 04:23 /sbin/reboot -> /bin/systemctl
Run Code Online (Sandbox Code Playgroud)
编辑:我的用户组
[damian@xvz:~]$ groups
damian sudo wireshark bumblebee
Run Code Online (Sandbox Code Playgroud)
编辑 2:systemctl 权限
[damian@xvz:~]$ ls -l /bin/systemctl
-rwxr-xr-x 1 root root 626640 Jun 28 04:23 /bin/systemctl
Run Code Online (Sandbox Code Playgroud)