Debian Stretch+LightDM免密登录异常求助:登录/sudo均无需密码
这问题我之前帮朋友排查过类似的,核心是系统的PAM(可插拔认证模块)配置或者用户权限出了问题,咱们一步步来排查修复:
1. 先检查sudo权限配置
sudo免密且sudo -K无效,大概率是你的用户被设置了无需密码即可执行所有sudo命令。咱们来确认:
- 用
visudo命令打开sudoers配置文件(这个命令会自动检查语法,比直接编辑更安全),看看有没有类似下面的行:你的用户名 ALL=(ALL) NOPASSWD:ALL - 还要检查
/etc/sudoers.d/目录下的自定义配置文件,执行cat /etc/sudoers.d/*查看有没有同样的NOPASSWD规则。
如果找到的话,把这行注释掉(前面加#)或者直接删除,保存退出后sudo就会要求验证密码了。
2. 排查PAM登录认证配置
不管是LightDM图形登录还是命令行登录,都受PAM模块控制,咱们重点检查几个关键文件:
- 先看通用认证配置
/etc/pam.d/common-auth,执行cat /etc/pam.d/common-auth,正常的配置应该是类似:
如果里面出现了auth [success=1 default=ignore] pam_unix.so nullok_secure auth requisite pam_deny.so auth required pam_permit.sonullok(注意不是nullok_secure),就意味着允许空密码登录,这时候把nullok改成nullok_secure或者直接去掉。 - 再检查LightDM的专属PAM配置
/etc/pam.d/lightdm,确保里面包含@include common-auth这一行,要是被改成了跳过验证的规则(比如auth required pam_permit.so),改回默认的包含通用配置即可。 - 命令行登录的话,检查
/etc/pam.d/login,同样确保包含@include common-auth,没有异常的跳过验证配置。
3. 确认用户密码状态
有时候用户密码被意外清空了,系统也会允许免密登录。执行passwd -S 你的用户名,看输出的第二个字段:
- 如果是
NP,说明你的用户是空密码状态,这时候执行passwd 你的用户名重新设置一个密码即可。 - 如果是
P,说明密码正常,那问题还是出在PAM或sudo配置上。
4. 重置PAM配置(极端情况)
如果上面的排查都没解决,可能是PAM配置被改得乱七八糟了,可以尝试重新安装PAM相关包来恢复默认配置:
sudo apt-get install --reinstall libpam-modules libpam-modules-bin
执行完后重启系统,看看登录和sudo验证是否恢复正常。
内容的提问来源于stack exchange,提问作者mpjdem
相关产品推荐
相关产品推荐

