1. 問題描述
客戶的機器安裝了打印機驅動以后,打印測試頁失敗,打印機是已經適配過的。客戶的CPU一般是龍芯3A4000/3B4000。常見的國產打印機品牌比如奔圖、天津光電、立思辰等都可能會出現這種問題。需要先查看打印機日志信息,如果出現 Can’t create temporary file這種錯誤,說明是權限問題,需要處理。
查看打印機屬性,驅動安裝沒問題:

2. 處理方法
2.1. 查看打印日志
2.1.1. 打開打印日志調試模式
輸入Ctrl+Alt+t或右鍵單擊打開終端,執行sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bak 先備份打印機配置文件
再執行sudo vi /etc/cups/cupsd.conf 文件,光標定位到
Loglevel warn
輸入i進入編輯模式,把這一行改成
Loglevel debug
2.1.2. 重啟打印服務
輸入ESC退出編輯模式,再輸入:wq保存文件內容,然后執行這個命令重啟 cups服務:
sudo /etc/init.d/cups restart
2.1.3. 生成日志信息
再次執行打印測試頁操作或者打印文件, cups就會記錄詳細的打印日志到這個文件 /var/log/cups/error_log 另外還有 access_log 文件(記錄提交給cups調度器的請求)和 page_log 文件(記錄每頁打印的情況)。
2.1.4 查看日志
執行sudo vi /var/log/cups/error_log ,查看是否有以下Can’t create temporary file錯誤,如果有這種錯誤可以通過修改權限解決。如果沒有這種錯誤,則需要把error_log 日志發給相關技術進一步處理。


2.2. 修改權限
2.2.1. 查看權限
在終端分別執行,發現所有組用戶對於/var/spool/cups/tmp、/var/spool/cups/只有可讀、可執行權限,沒有可寫權限。
getfact /var/spool/cups/tmp
getfacl /var/spool/cups/


2.2.2. 設置權限
執行以下指令,分別對文件/var/spool/cups/tmp、目錄/var/spool/cups/設置用戶組lp訪問權限,
即設置組lp里的用戶對文件/var/spool/cups/tmp、目錄/var/spool/cups/具有可讀、可寫、可執行權限。
sudo setfacl -m g:lp:rwx /var/spool/cups/tmp
sudo setfacl -m d:group:lp:rwx /var/spool/cups/
2.2.3. 驗證設置是否生效
把打印管理器之前執行的打印任務取消,然后重新打印測試頁,如果可以打印,說明修改已經生效。可以執行以下指令,如果可以正常打印測試頁,說明已經修復。
sudo rm -rf /var/spool/cups/tmp
sudo systemctl restart cups
2.2.4 關閉打印日志調試模式
執行sudo vi /etc/cups/cupsd.conf 文件,光標定位到
Loglevel debug
輸入i進入編輯模式,把這一行改成
Loglevel warn
輸入ESC退出編輯模式,再輸入:wq保存文件內容,然后執行這個命令重啟 cups服務:
sudo /etc/init.d/cups restart