在本文中我们将展示如何在Linux 中禁用
shutdown和reboot
最简单的禁用方法
shutdown和reboot命令使用/etc/sudoers文件,在这里你可以指定一个用户(rumenz) 或组 (developers) 不允许执行这些命令。
# vi /etc/sudoers
添加到
Command Aliases部分。
Cmnd_Alias SHUTDOWN = /sbin/shutdown,/sbin/reboot,/sbin/halt,/sbin/poweroff
# User privilege specification
rumenz ALL=(ALL:ALL) ALL, !SHUTDOWN
# Allow members of group sudo to execute any command
%developers ALL=(ALL:ALL) ALL, !SHUTDOWN
另一种方法是删除
shutdown和reboot命令的执行权限 (除 root 之外的所有用户的命令)
# chmod o-x /sbin/shutdown
# chmod o-x /sbin/reboot
Note: 在 systemd 下,这些文件(/sbin/shutdown、/sbin/reboot、/sbin/halt、/sbin/poweroff)只是指向 /bin/systemctl的符号链接:
# ls -l /sbin/shutdown
lrwxrwxrwx 1 root root 16 May 25 11:53 /sbin/shutdown -> ../bin/systemctl
# ls -l /sbin/reboot
lrwxrwxrwx 1 root root 16 May 25 11:53 /sbin/reboot -> ../bin/systemctl
# ls -l /sbin/halt
lrwxrwxrwx 1 root root 16 May 25 11:53 /sbin/halt -> ../bin/systemctl
# ls -l /sbin/poweroff
lrwxrwxrwx 1 root root 16 May 25 11:53 /sbin/poweroff -> ../bin/systemctl
为了防止其他用户运行这些命令,你只需删除执行权限。但这在 systemd 下无效。你可以删除
/bin/systemctl命令的执行权限,这意味着除root能运行 systemctl之外,其他用户不能运行 systemctl
# chmod o-x /bin/systemctl