禁用 root 直接登录、移除其交互能力,并辅以权限隔离与行为审计,才是真正的“隐藏与保护”;通过修改 shell 为 /sbin/nologin、锁定密码、禁用 SSH 登录、配置受限管理用户及审计日志,使 root 无法登录、不可交互、无可用入口。

禁用 root 直接登录、移除其交互能力,并辅以权限隔离与行为审计,才是真正的“隐藏与保护”。root 账号本身无法被彻底删除或真正“隐身”,但可通过系统级配置使其不可登录、不可交互、不可被常规手段调用,从而在逻辑上实现等效隐藏。
修改 root 的登录 Shell 为 /sbin/nologin
这是最基础也最有效的隐藏手段。它不删除 root,但让系统拒绝为其分配交互式 shell:
- 编辑
/etc/passwd:sudo vipw(推荐)或sudo nano /etc/passwd - 找到 root 行:
root:x:0:0:root:/root:/bin/bash - 将末尾
/bin/bash改为/sbin/nologin(部分系统也支持/usr/sbin/nologin) - 保存后,任何尝试以 root 登录(本地 tty、SSH、su -)都会收到
This account is currently not available提示 - 注意:
sudo su -或sudo -i仍可进入 root shell(因 sudo 绕过 shell 检查),但前提是用户已获 sudo 权限且知道 root 密码;若 root 密码已清空或锁定,该路径也被阻断
锁定 root 密码并禁用 SSH 远程登录
双重保险,切断密码和网络入口:
- 锁定密码:
sudo passwd -l root(在/etc/shadow中添加!前缀,使密码失效) - 禁用 SSH 登录:编辑
/etc/ssh/sshd_config,确认以下两项设置PermitRootLogin no # PasswordAuthentication no ← 可选,但强烈建议同时关闭密码认证,只用密钥
- 重启服务:
sudo systemctl restart sshd - 此后,root 无法通过 SSH 密码或密钥登录,也无法通过
su切换(除非已知 root 密码且未被锁定)
确保有可用的管理用户并限制其权限范围
隐藏 root 的前提,是已有安全、可控的替代操作路径:
- 创建普通管理用户(如
admin),设置强密码 - 加入对应权限组:
sudo usermod -aG sudo admin(Ubuntu/Debian)或sudo usermod -aG wheel admin(RHEL/CentOS) - 使用
sudo visudo配置最小必要权限,例如:admin ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/journalctl -u nginx
- 避免
admin ALL=(ALL) ALL这类宽泛授权,防止权限滥用
可选增强:限制 root 的 TTY 登录与设置登录提示屏蔽
进一步缩小攻击面:
- 清空
/etc/securetty文件(sudo truncate -s 0 /etc/securetty),使 root 无法从任何本地终端(tty1–tty6)登录 - 若需自定义拒绝提示,创建
/etc/nologin.txt并写入一行文字,该内容会在 root 尝试登录时显示(仅对 shell 登录生效)
不复杂但容易忽略。核心不是让 root “看不见”,而是让它“动不了”——没有登录入口、没有有效 shell、没有远程通道、没有可用密码,再配合审计日志(如 sudo 日志、auth.log)追踪高权操作,才是真正落地的保护。

















