Failed to Open PDD File

【相关环境】:linux 4.18.8-1-ARCH,cups 2.2.6-1

【问题描述】:今日使用打印机,发现打印机并没有任何相应。打开打印机管理界面,显示“rendering finished“,但是在打印状态中显示”Failed to open PPD file:….“。

【相关操作】:在前几天为了给/腾地方,尝试把32G的swap缩小到8G,swap和/在同一个磁盘上,磁盘是120G渣士顿SSD。当时做法:1)从U盘启动(U盘中是Archlinux),挂载/,再挂载另一个分区(在其他的磁盘上)作为备份之用;2)将/中的内容全部复制到备份分区;3)卸载/;4)使用gdisk删除原来的swap和/,再创建合适大小的swap和/;5)创建swap和/文件系统;6)挂载/,并恢复;7)重启,正常使用。

【问题分析】:ppd文件是由lp使用的,至少需要lp有r权限。而默认情况下,ppd文件的权限是rw-r—–(为了安全起见,这个权限是必须的)。为了能让lp读ppd文件,则需要将ppd文件的组修改为lp(而非将ppd文件的权限修改为rw-r–r–)。在最初检查ppd文件的时候,发现ppd文件的组是root而非lp,这就造成了lp没有权限读ppd文件。而造成这种问题的原因可能就是在备份恢复根目录文件的时候cp修改了部分权限(但是问什么会这样仍然不清楚)。

【解决方案】:修改ppd权限为rw-r—–,修改owner为root,grp为lp。

KDE(Plasma)登录失败的解决

近几日全面更新了系统,一共下载了六个多G,而更新系统之后也在忙着做其他的事情。不过今天上午发现,当我锁屏之后,就再也不能按照正常流程(输入正确的密码->登录->进入会话)登入会话了。即便是输入正确的密码,也会出现“Authenticcation Failure”。要想重新登入,只能切换到其他的终端使用loginctl来解决

$ > loginctl unlock-session <username>

如果使用root来进行上述操作的话,就不会有什么问题,再切回图形终端,就可以正常登入。

登入之后,检查journal,发现

Dec 26 18:39:23 pret-arch kcheckpass[16147]: pam_tally(kde:auth): Error opening /var/log/faillog for update
Dec 26 18:39:23 pret-arch kcheckpass[16147]: pam_tally(kde:auth): Error opening /var/log/faillog for read
Dec 26 18:39:23 pret-arch unix_chkpwd[16167]: check pass; user unknown
Dec 26 18:39:23 pret-arch unix_chkpwd[16168]: check pass; user unknown
Dec 26 18:39:23 pret-arch unix_chkpwd[16168]: password check failed for user (pretdb)
Dec 26 18:39:23 pret-arch kcheckpass[16147]: pam_unix(kde:auth): authentication failure; logname= uid=1000 euid=1000 tty=:0 ruser= rhost=  user=pretdb
Dec 26 18:39:23 pret-arch kcheckpass[16147]: Authentication failure for pretdb (invoked by uid 1000)
Dec 26 18:39:24 pret-arch org_kde_powerdevil[2732]: powerdevil: ACTIVE SESSION PATH CHANGED: "/org/freedesktop/login1/session/c3"
Dec 26 18:39:24 pret-arch org_kde_powerdevil[2732]: powerdevil: Current session is now inactive
Dec 26 18:39:25 pret-arch python3[2923]: QXcbConnection: XCB error: 11 (BadAlloc), sequence: 4278, resource id: 664, major code: 53 (CreatePixmap), minor code: 0
Dec 26 18:39:25 pret-arch python3[2923]: QXcbConnection: XCB error: 9 (BadDrawable), sequence: 4279, resource id: 83886279, major code: 55 (CreateGC), minor code: 0

而在一开始的部分将矛头指向了kcheckpass,journal表明没有设置uid。按照下列方法进行设置:

$ chmod +s /usr/lib/kcheckpass

(上述操作可能需要root权限)

执行完上述操作后,就可以正常解锁屏幕了。