用户无法登录主因是pam锁定或shadow禁用:用pam_faillock --show或pam_tally2查失败计数,/etc/shadow第二字段含!/*需passwd -u解锁;chage -l查过期,/etc/passwd第七字段须为/bin/bash等有效shell,家目录须存在且权限700,/etc/security/access.conf中无拒绝规则。

用户账号存在却无法登录,不是密码错就是底层配置出了问题。排查要从认证链最前端开始,逐层验证。
检查账户是否被PAM或shadow锁定
系统不会明说“账户已锁”,只报“Authentication failure”。先确认是不是被PAM模块(如 pam_faillock)锁住:
- 运行 pam_faillock --user 用户名 --show,看 Failures count 是否非零、fail_lock 是否为 yes
- 旧系统用 pam_tally2 --user 用户名 查失败次数
- 同时检查 /etc/shadow 第二字段:以 ! 或 * 开头表示被
passwd -l禁用,需passwd -u 用户名解锁 - 执行
chage -l 用户名查看账户是否过期(Account expires)或密码被锁(Password locked)
确认登录shell是否有效
如果 /etc/passwd 中该用户第七字段是 /bin/false、/usr/sbin/nologin 或空值,系统会直接拒绝交互式登录:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 用 getent passwd 用户名 查看完整记录
- 若shell不合法,运行 usermod -s /bin/bash 用户名 改为标准登录shell
- 普通用户也可用
chsh -s /bin/bash自行修改(需有权限)
验证主目录状态与权限
SSH 和 login 服务在启动 shell 前会检查主目录。缺失、归属错误或权限过宽(如 777)都会导致拒绝登录:
- 用 getent passwd 用户名 | cut -d: -f6 获取主目录路径
- 执行 ls -ld /home/用户名,确认目录存在、所有者是该用户、组匹配
- 若目录不存在,运行
mkdir -p /home/用户名 && chown 用户名:用户名 /home/用户名 - 设权限为 700:
chmod 700 /home/用户名(755 在某些严格策略下也不被接受)
查看PAM访问控制规则
即使账号和shell都正常,/etc/security/access.conf 或 PAM 模块仍可能拦截登录:
- 检查 /etc/pam.d/sshd(远程)或 /etc/pam.d/login(本地)是否加载了
pam_access.so - 打开 /etc/security/access.conf,搜索用户名或所属组,找形如
- : 用户名 : ALL的拒绝规则 - 临时注释掉可疑行,或加一行
+ : 用户名 : ALL显式放行,测试后恢复










