Ubuntu 24.04下KDE桌面AAD认证异常:登录正常但会话解锁失败
看起来你踩了Ubuntu 24.04 KDE桌面下AAD认证的经典权限坑——登录能正常过但会话解锁卡壳,我之前帮朋友排查过几乎一模一样的问题,结合你贴的日志咱们来捋清楚:
从日志里能明确看到,pam_aad已经完成了AAD的完整认证(连MFA都过了),但kscreenlocker还是没给你解锁会话,核心问题肯定是KDE锁屏进程的权限不足,或者它用的PAM配置链和登录场景不一致。
给你几个亲测有效的排查修复步骤:
1. 补全KDE锁屏的PAM认证规则
KDE锁屏用的是独立的PAM配置文件/etc/pam.d/kscreenlocker,而登录用的是sddm/lightdm这类的PAM配置,大概率是锁屏的PAM里没加AAD的认证规则:
- 先备份原文件防翻车:
sudo cp /etc/pam.d/kscreenlocker /etc/pam.d/kscreenlocker.bak - 编辑锁屏PAM配置:
sudo nano /etc/pam.d/kscreenlocker - 在
auth段添加和你登录PAM(比如/etc/pam.d/sddm)里完全一致的AAD规则,比如如果登录配置里是auth sufficient pam_aad.so,就把这行加到kscreenlocker的auth部分最前面或者合适位置。
2. 检查AppArmor的权限拦截
Ubuntu 24.04的AppArmor可能会限制kscreenlocker访问AAD的配置文件或者网络资源,你可以先查日志确认:
sudo dmesg | grep -i apparmor | grep kscreenlocker
如果看到denied相关的记录,就需要给kscreenlocker加权限:
- 编辑AppArmor配置文件:
sudo nano /etc/apparmor.d/usr.bin.kscreenlocker_greet - 在文件里添加以下规则:
/etc/aad.conf r, /usr/lib/x86_64-linux-gnu/pam_aad.so mr, https://login.microsoftonline.com/ r, - 重新加载AppArmor生效:
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.kscreenlocker_greet
3. 验证AAD的凭证持久化配置
有时候锁屏需要读取本地缓存的AAD凭证,检查/etc/aad.conf里是否开启了持久化:
sudo nano /etc/aad.conf
确保有这一行:
persist_token = yes
改完后重启登录服务:
sudo systemctl restart systemd-logind.service
4. 临时排查MFA的凭证兼容性
日志里提到“Authentication successful even if requiring MFA”,虽然认证过了,但KDE锁屏对MFA后返回的凭证处理可能有差异,你可以临时把/etc/aad.conf里的require_mfa = yes改成no,测试解锁是否正常。如果改完能解锁,再调回yes,这时候基本可以确定是MFA凭证的存储权限问题,重复步骤2检查AppArmor是否拦截了凭证文件的访问。
这个问题本质是KDE把锁屏和登录拆成了两个权限上下文不同的进程,而Gnome的锁屏和登录用的是更统一的PAM链,所以没遇到这个坑。按上面的步骤一步步试,应该能解决你的问题。
备注:内容来源于stack exchange,提问作者Ionut

