首页/安全/安全加固速查/系统账号禁止登录 shell(nologin)
本包目录(363 条)
主机加固基线90 条
防火墙与访问控制50 条口令与认证策略55 条服务与端口收敛50 条补丁与漏洞管理50 条日志与审计34 条基线核查命令34 条

系统账号禁止登录 shell(nologin)

bin、daemon、adm、lp、sync、shutdown、halt、mail、operator、games、ftp、nobody 等系统账号不应持有可登录 shell;一旦被利用即可交互式登录系统。

安全加固速查安全更新于 2026-10-12
加固项系统账号 shell 收敛为 nologin
适用平台Linux(RHEL/CentOS/Debian/Ubuntu)
风险等级中
判定标准UID<1000 的账号 shell 应为 nologin 或 false

核查:找出可登录的系统账号

核查:找出可登录的系统账号
awk -F: '($3 < 1000 && $7 !~ /(nologin|false)$/) { print $1 ":" $7 }' /etc/passwd
# 注:系统账号 UID 门槛随发行版不同(现代发行版 <1000)

加固:批量改为 nologin

加固:批量改为 nologin
NOLOGIN=$(command -v nologin || echo /usr/sbin/nologin)
for u in bin daemon adm lp sync shutdown halt mail operator games ftp; do
  usermod -s "$NOLOGIN" "$u" 2>/dev/null || true
done
awk -F: '($3 < 1000 && $7 !~ /(nologin|false)$/) { print $1 }' /etc/passwd   # 复核
批量修改前用 getent passwd <账号> 逐个确认用途;root 与真正的运维账号不在收敛范围内。

易错点

  • 不同发行版 nologin 路径不同(/sbin/nologin 与 /usr/sbin/nologin),脚本里用命令探测路径最稳
  • 只把 shell 改成 nologin 并不锁定口令,两件事要一起做才算完整收敛

数据来源与参考

  • CIS Linux Benchmark:Ensure system accounts are secured(nologin)
  • 等保 2.0:最小权限原则

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌