Arch系统锁屏解锁故障求助:普通用户运行i3lock无法解锁
嘿,我之前在Arch上也碰到过类似的锁屏异常问题,结合你描述的现象——sudo运行i3lock能用root密码解锁,但普通用户运行就完全不行,核心问题大概率出在PAM配置错误或者系统关键文件权限异常上。咱们一步步来排查修复:
1. 先检查i3lock的PAM配置
i3lock的验证逻辑完全依赖PAM配置,先看看你当前的/etc/pam.d/i3lock是不是有问题:
cat /etc/pam.d/i3lock
Arch上标准的i3lock PAM配置应该是这样的,它会复用系统登录的验证规则,支持普通用户密码:
#%PAM-1.0 auth include system-login
如果你的配置里没有这行,或者写了只允许root验证的规则,那普通用户肯定没法解锁。用sudo修改这个文件:
sudo nano /etc/pam.d/i3lock
把内容改成上面的标准配置,保存退出后先别急着测试,先往下检查权限问题。
2. 确认系统关键文件的权限
你提到了/etc/passwd、/etc/shadow、/etc/group,这几个文件的权限必须严格正确,否则PAM没法读取用户密码信息。正确的权限应该是:
/etc/passwd:-rw-r--r--(所有用户可读)/etc/shadow:-rw-r-----(只有root和shadow组能读,这个很关键)/etc/group:-rw-r--r--(所有用户可读)
用你提到的命令确认:
ls -l /etc/passwd /etc/shadow /etc/group
如果/etc/shadow权限不对(比如普通用户能读,或者shadow组没权限),直接用下面的命令修复:
sudo chmod 644 /etc/passwd /etc/group sudo chmod 600 /etc/shadow sudo chown root:shadow /etc/shadow
3. 顺带检查KDE锁屏的PAM配置
既然KDE锁屏也有问题,咱们一起处理了。KDE锁屏用的是kde-screenlocker,对应的PAM配置文件一般是/etc/pam.d/kde-screenlocker,同样需要包含系统登录验证规则:
cat /etc/pam.d/kde-screenlocker
如果配置不对,修改成:
#%PAM-1.0 auth include system-login
4. 最后测试验证
修改完所有配置和权限后,退出当前的sudo会话(避免残留权限影响测试),用普通用户身份运行i3lock:
i3lock
输入你的普通用户密码试试能不能解锁。如果还是不行,去系统日志里找具体错误:
journalctl -xe | grep -i pam
日志里会明确显示PAM验证失败的原因,比如哪个模块出错,或者还有什么权限问题没解决。
内容的提问来源于stack exchange,提问作者Paul Knopf

