最安全可靠的方式是通过 /etc/sudoers 文件授权特定关机命令,使用 visudo 编辑并放行 /sbin/shutdown、/sbin/reboot 等带参数的路径,可选添加 nopasswd 实现免密执行,并通过 sudo -l 和实际命令验证权限。

直接给普通用户添加关机权限,最安全可靠的方式是通过 /etc/sudoers 文件授权特定命令,而不是改文件权限或开放全部 root 权限。
使用 visudo 编辑授权规则
visudo 是专用编辑器,自带语法检查,能防止配置错误导致 sudo 失效:
- 以 root 或已有 sudo 权限的用户执行:
sudo visudo - 在文件末尾新增一行(替换 username 为实际用户名):
username ALL=(root) /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/poweroff - 保存退出(vi 中按
Esc→ 输入:wq!)
支持常用关机/重启参数
默认只允许无参数调用命令,但实际中常需带选项(如 shutdown -h now 或 reboot -f)。要让参数生效,需显式放行:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 推荐写法(允许任意参数):
username ALL=(root) /sbin/shutdown *, /sbin/halt *, /sbin/reboot *, /sbin/poweroff * - 更严格写法(仅允许安全参数):
username ALL=(root) /sbin/shutdown -h *, /sbin/shutdown -r *, /sbin/reboot, /sbin/poweroff
可选:配置免密码执行
若希望用户执行关机命令时不输密码(适用于可信环境或自动化场景),加 NOPASSWD: 前缀:
- 例如:
username ALL=(root) NOPASSWD: /sbin/shutdown *, /sbin/reboot *, /sbin/poweroff * - 注意:
NOPASSWD仅对列出的命令生效,不影响其他 sudo 操作
验证与测试
配置生效后,切换到该普通用户测试:
- 执行:
sudo shutdown -h now—— 应立即开始关机流程 - 执行:
sudo -l—— 可查看当前用户被授予的具体 sudo 命令列表 - 若提示
command not found,确认命令路径是否正确(CentOS/RHEL 系统中为/sbin/shutdown,部分发行版可能软链到/usr/bin/shutdown,需按实际路径填写)










