在本文中我们将展示如何在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