如何确保只有 root 用户有权停止/重新启动系统?

如何确保只有 root 用户有权停止/重新启动系统?

CentOS Linux 默认情况下允许所有用户有权使用命令halt和来“停止”和“重新启动”系统reboot

如何配置我的系统,以便只有 root 用户才有权halt/reboot系统?

答案1

CentOS/RHEL/Fedora

您可以通过删除以下命令中的条目来禁用对这些命令的访问/etc/security/console.apps/*

$ $ ls /etc/security/console.apps/
authconfig      gparted          poweroff                      system-config-date      system-config-network-cmd  zenmap-root
authconfig-gtk  halt             reboot                        system-config-keyboard  system-config-selinux
authconfig-tui  kismet_capture   setup                         system-config-language  system-config-users
chkrootkit      liveusb-creator  system-config-authentication  system-config-lvm       wifi-radar
config-util     lshw-gui         system-config-boot            system-config-network   wireshark

$ rm -f /etc/security/console.apps/reboot

上面是在这里找到的:27.2。禁用控制台程序访问 - CentOS 部署指南

破解方法

我认为您可以通过执行以下操作来实现这一目标。在目录中/lib/upstart,有以下命令:

$ pwd
/lib/upstart

$ ls -la
total 176
drwxr-xr-x.  2 root root  4096 Sep  9  2011 .
dr-xr-xr-x. 16 root root 12288 May  4 21:27 ..
lrwxrwxrwx   1 root root     6 May 26  2011 halt -> reboot
lrwxrwxrwx   1 root root     6 May 26  2011 poweroff -> reboot
-rwxr-xr-x   1 root root 17112 May 11  2011 reboot
-rwxr-xr-x   1 root root 14472 May 11  2011 runlevel
-rwxr-xr-x   1 root root 65976 May 11  2011 shutdown
-rwxr-xr-x   1 root root 56304 May 11  2011 telinit

chmod 700 重新启动可执行文件:

$ chmod 700 /lib/upstart/reboot

答案2

这些命令已经强制您成为 root 或登录到控制台。如果普通用户从 ssh 会话运行“halt”或“rebo​​ot”,它将拒绝停止或重新启动系统:

$ halt
halt: must be superuser.

相关内容