Ubuntu 20.04配置common-auth文件后pam_tally2导致所有用户被锁定的问题求助
Ubuntu 20.04配置common-auth文件后pam_tally2导致所有用户被锁定的问题求助
嘿,我太懂你这种改完PAM配置直接全锁死、还得拆硬盘去别的机器救场的崩溃感了😅 咱们先理清楚问题出在哪,再给你靠谱的解决方案:
问题根源:你的pam_tally2配置顺序和控制逻辑错了
你当前的规则顺序和控制标志设置有问题,导致不管用户密码输入正确与否,都会触发锁定逻辑,直接把所有用户都锁死了。而且要提醒你:pam_tally2在Ubuntu 20.04里已经是被废弃的模块了,官方现在更推荐用pam_faillock来实现用户锁定功能。
方案1:修复pam_tally2的配置(临时救急)
如果你非要用pam_tally2,先记得备份原文件:sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.bak,再把/etc/pam.d/common-auth改成下面的内容:
# here are the per-package modules (the "Primary" block) auth required pam_tally2.so onerr=fail deny=3 unlock_time=1200 auth [success=1 default=ignore] pam_unix.so nullok_secure
同时还要在/etc/pam.d/common-account里添加一行:
account required pam_tally2.so
这样配置的逻辑是:
- 先检查用户是否已经达到锁定阈值,要是已经锁了直接拒绝认证
- 密码验证成功后,跳过后续模块(success=1),同时pam_tally2会自动重置该用户的失败计数
- 验证失败的话,pam_tally2会累加失败次数,到3次就锁定1200秒
方案2:改用官方推荐的pam_faillock(更稳定)
因为pam_tally2已经被废弃,长期来看更建议用pam_faillock,配置步骤如下:
- 备份common-auth文件:
sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.bak - 修改
/etc/pam.d/common-auth为:
# here are the per-package modules (the "Primary" block) auth required pam_faillock.so preauth silent deny=3 unlock_time=1200 auth [success=1 default=ignore] pam_unix.so nullok_secure auth [default=die] pam_faillock.so authfail deny=3 unlock_time=1200
- 在
/etc/pam.d/common-account里添加一行:
account required pam_faillock.so
这个配置的优势是逻辑更清晰,而且是Ubuntu新版本的标准方案,不容易出问题。
下次锁死不用拆硬盘的救急方法
要是再不小心锁死了,不用拆硬盘这么麻烦:
- 重启系统,在GRUB菜单选择「Advanced options for Ubuntu」
- 选择带「recovery mode」的内核版本
- 在恢复菜单里选择「root - Drop to root shell prompt」
- 执行命令重置失败计数:
- 用pam_tally2的话:
pam_tally2 --reset - 用pam_faillock的话:
faillock --reset
- 用pam_tally2的话:
- 然后修改common-auth文件恢复配置,重启系统就行
备注:内容来源于stack exchange,提问作者A R
相关产品推荐
相关产品推荐

