linux root用户应通过禁用远程root登录、拆分sudo权限、建立操作防护习惯及使用专用低权限账户来安全管控。具体包括:设permitrootlogin为no、root shell为/sbin/nologin;按角色在/etc/sudoers.d/中配置命令白名单;预览命令、设置-i别名、显式提示符;一人一账号、禁用密码、精确授权。

Linux 中 root 用户不是“能不能用”的问题,而是“怎么用才不翻车”的问题。它是一把没有保险的高能激光刀——切得准,效率极高;稍一偏移,系统就可能直接报废。真正的风险控制,不靠禁用,而靠拆解、隔离和留痕。
root 权限必须被禁用远程登录
允许 SSH 直接以 root 登录,等于在服务器大门上焊一把万能钥匙。攻击者一旦拿到凭证,就能绕过所有行为审计,实现静默持久控制。
- 编辑 /etc/ssh/sshd_config,将 PermitRootLogin 设为 no,然后运行 sudo systemctl restart ssh
- 检查 /etc/passwd 中 root 行,确保其 shell 字段为 /sbin/nologin(不是 /bin/bash)
- 如需本地应急访问,可保留物理控制台登录,但严禁启用远程 tty 或 serial 控制台的 root 访问
用 sudo 实现按角色拆分的权限交付
sudo 不是 root 密码的平替,而是把“超级权限”切成小块,只给对应的人刚好够用的那一块。宽泛授权(如 %sudo ALL=(ALL:ALL) ALL)等于放弃管控。
- 在 /etc/sudoers.d/ 下为不同职能创建独立配置文件,例如 db-admin、backup-operator
- 用 Cmnd_Alias 定义命令白名单:比如 DB_RESTART = /bin/systemctl restart mysql, /usr/bin/mysqladmin flush-logs
- 授权时明确上下文:%dbadmin ALL=(root) DB_RESTART,禁止通配符、禁止多命令合并、禁止 NOPASSWD 全放开
- 对 useradd、mount、iptables 等高危操作,要求关联变更工单并人工审批
日常操作必须建立防护反射习惯
再严密的配置也挡不住手抖。真正起作用的是运维人员肌肉记忆里的安全动作。
- 执行任何带 rm、mv、chmod 的命令前,先加 echo 预览路径,确认目标无误再回车
- 在交互式 shell 中设置防护别名:alias rm='rm -i'、alias cp='cp -i'、alias mv='mv -i'
- 修改提示符 PS1,强制显示当前主机名与用户身份,避免多终端操作时切错环境
- 敏感目录(如 /etc、/boot、/var/log)操作前,先用 ls -ld 确认归属与权限,不盲目 chown -R
用专用低权限账户替代通用运维账号
共用账号=责任模糊=事故后无法追溯。最小权限落地的第一步,就是一人一账号、一事一账户。
- 为每个服务或任务创建独立系统用户:adduser --shell /bin/bash --home /opt/appuser appuser
- 禁用密码登录:passwd -l appuser,仅允许密钥认证
- 若仅需运行守护进程,设其 shell 为 /usr/sbin/nologin,彻底关闭交互入口
- 该账户默认无 sudo 权限,需什么能力,就通过 sudoers 精确授予,不额外开放任何接口











