11.6. SUSE Linux 的特殊功能

CUPS 的許多功能已經可適用於 SUSE Linux。此處涵蓋部份最重要的變更。

11.6.1. CUPS 伺服器與防火牆

有數種方式可將 CUPS 設為網路伺服器的用戶端。

  1. 對於網路伺服器上的每一個佇列,您可以設定一個本地佇列,透過它將所有工作轉送給對應網路伺服器 (轉送佇列)。通常不建議使用此方法,因為只要網路伺服器的組態變更,就必須重新設定所有用戶端機器。

  2. 列印工作也可直接轉送給一台網路伺服器。對於此類型的組態,請勿執行本地的 CUPS 精靈。lp 或其他程式的對應程式庫呼叫可將工作直接傳送給網路伺服器。但是,如果您也想在本地印表機列印,則此組態無法運作。

  3. CUPS 精靈可聆聽其他網路伺服器傳送來宣告可用佇列的 IPP 廣播封包。

    這是透過遠端 CUPS 伺服器列印的最佳 CUPS 組態。但是,這有一個風險,攻擊者使用佇列傳送 IPP 廣播,而本地精靈存取到偽造的佇列。如果這樣,則佇列會與本地伺服器上另一個佇列以相同名稱顯示,工作的擁有者會相信工作已傳送到本地伺服器,而事實上卻是傳送到攻擊者的伺服器。

YaST 可以利用掃描區域網路主機以查看它們是否提供 IPP 服務,或利用傾聽 IPP 廣播,來尋找 CUPS 伺服器。這時必須讓連接埠 631/UDP (服務 IPP 用戶端) 上的內送封包能夠通過防火牆。當您將機器設定成位在防火牆內部區域後,就會自動啟用這一項。在外部區域開啟連接埠以設定遠端佇列的存取可能會造成安全上的風險,因為攻擊者可能會廣播使用者可能接受的伺服器。根據預設,外部區域中拒絕 IPP 廣播。如需有關防火牆組態的詳細資料,請參閱 節 4.1.4.1, "使用 YaST 設定"

或者,使用者可主動掃描本地網路主機或手動設定所有佇列,以偵測 CUPS 伺服器。但是,因為本節一開始提到的,不建議使用這個方法。

11.6.2. CUPS 列印服務中的變更

這些變更一開始是針對 SUSE Linux 9.1 所套用。

11.6.2.1. cupsd 以使用者 lp 執行

啟動時,cupsd 從使用者 root 變更為使用者 lp。如此可提供較高層級的安全性,因為 CUPS 列印服務不會以未受限制的權限執行,而只會以列印服務所需的權限執行。

不過,無法透過 /etc/shadow 執行驗證 (密碼檢查),因為 lp 沒有 /etc/shadow 的存取權。而必須使用透過 /etc/cups/passwd.md5 的 CUPS 特定驗證。因此,具有 CUPS 管理群組 sys 和 CUPS 密碼的 CUPS 管理員必須在 /etc/cups/passwd.md5 中輸入。要這樣做,請以 root 身分輸入:

lppasswd -g sys -a CUPS-admin-name

如果要使用 CUPS 管理網頁前端工具或 KDE 印表機管理工具,這個設定是必要的。

cupsdlp 身分執行時,無法產生 /etc/printcap,因為 lp 不被允許在 /etc/ 中建立檔案。因此,cupsd 會產生 /etc/cups/printcap。為了要確保僅可從 /etc/printcap 讀取佇列名稱的應用程式繼續正常運作,/etc/printcap 是指向 /etc/cups/printcap 的符號連結。

cupsdlp 身分執行,無法開啟連接埠 631。因此,cupsd 無法以 rccups reload 重新載入。請使用 rccups restart

11.6.2.2. BrowseAllowBrowseDeny 的通用功能

BrowseAllowBrowseDeny 設定的存取權限可套用於傳送給 cupsd 的所有類型套件。/etc/cups/cupsd.conf 中的預設設定值如下:

BrowseAllow @LOCAL
BrowseDeny All

以及

<Location />
  Order Deny,Allow
  Deny From All
  Allow From 127.0.0.1
  Allow From 127.0.0.2
  Allow From @LOCAL
</Location>

利用此方法,僅 LOCAL 主機可存取 CUPS 伺服器上的 cupsdLOCAL 主機是指屬於非 PPP 介面的 IP 位址之主機 (是沒有設定 IFF_POINTOPOINT 旗標的介面),而其 IP 位址和 CUPS 伺服器屬於相同的網路。來自其他伺服器的封包會立刻被拒絕。

11.6.2.3. 預設會啟用 cupsd

在標準安裝中,會自動啟用 cupsd,以便不需其他手動作業即可存取 CUPS 網路伺服器的佇列。在 節 11.6.2.1, "cupsd 以使用者 lp 執行"節 11.6.2.2, "BrowseAllowBrowseDeny 的通用功能" 的項目是本功能的重要先決條件。如果沒有,則自動啟用 cupsd 的安全性將不足。

11.6.3. 各種套件中的 PPD 檔案

YaST 印表機組態僅使用安裝於系統上 /usr/share/cups/model/ 中的 PPD 檔案來設定 CUPS 的佇列。為了尋找適合印表機型號的 PPD 檔案,YaST 將硬體偵測期間決定的廠商和型號與系統上 /usr/share/cups/model/ 中提供的所有 PPD 檔案內的廠商和型號相比較。基於此原因,YaST 印表機組態將從 PPD 檔案中取出的廠商和型號資訊產生資料庫。當您從廠商和型號清單中選取印表機時,會接收到相符廠商和型號的 PPD 檔案。

僅使用 PPD 檔案且不使用其他資訊來源的組態,好處在於 /usr/share/cups/model/ 中的 PPD 檔案可自由修改。YaST 印表機組態可辨識變更並重新產生廠商和型號資料庫。例如,如果您只有 PostScript 印表機,通常不需要 cups-drivers 套件中的 Foomatic PPD 檔案,或 cups-drivers-stp 套件中的 Gimp-Print PPD 檔案。您可以直接將 PostScript 印表機的 PPD 檔案複製到 /usr/share/cups/model/ (如果在 manufacturer-PPDs 套件中尚未存在),以達到印表機的最佳組態。

11.6.3.1. cups 套件中的 CUPS PPD 檔案

cups 套件中的一般 PPD 檔案已經以 PostScript Level 1 和 Level 2 印表機適當的 Foomatic PPD 檔案補充。

  • /usr/share/cups/model/Postscript-level1.ppd.gz

  • /usr/share/cups/model/Postscript-level2.ppd.gz

11.6.3.2. cups-drivers 套件中的 PPD 檔案

一般情況下,Foomatic 印表機過濾器 foomatic-rip 會與非 PostScript 印表機的 Ghostscript 搭配使用。適合的 Foomatic PPD 檔案含有項目 *NickName:... Foomatic/Ghostscript driver*cupsFilter:... foomatic-rip。這些 PPD 檔案位於 cups-drivers 套件中。

YaST 比較偏好 Foomatic PPD 檔案,如果 Foomatic PPD 檔案含有項目 *NickName:... Foomatic ...(建議) 符合印表機型號,而 manufacturer-PPDs 套件未包含更適合的 PPD 檔案。

11.6.3.3. cups-drivers-stp 套件中 Gimp-Print PPD 的檔案

除了 foomatic-rip 之外,來自 Gimp-Print 的 CUPS 過濾器 rastertoprinter 也可以用在許多非 PostScript 印表機上。此過濾器和適合的 Gimp-Print PPD 檔案可在 cups-drivers-stp 套件中找到。Gimp-Print PPD 檔案位於 /usr/share/cups/model/stp/ 中,並含有項目 *NickName:... CUPS+Gimp-Print*cupsFilter:... rastertoprinter

11.6.3.4. 位於 manufacturer-PPDs 套件中印表機製造廠商的 PPD 檔案

manufacturer-PPDs 套件包含具有充分自由授權的印表機製造廠商所發行的 PPD 檔案。PostScript 印表機應該使用印表機製造商適當的 PPD 檔案設定,因為這個檔案可啟動 PostScript 印表機所有的功能。YaST 偏好 manufacturer-PPDs 套件的 PPD 檔案,如果符合下列條件:

  • 在硬體偵測期間決定的廠商和型號符合 manufacturer-PPDs 套件中 PPD 檔案內的廠商和型號。

  • manufacturer-PPDs 套件中的 PPD 檔案是唯一適合印表機型號的 PPD 檔案,或是含有也符合印表機型號的 *NickName:... Foomatic/Postscript (建議) 項目的 Foomatic PPD 檔案。

同時,在下列情況中,YaST 不使用任何來自 manufacturer-PPDs 套件的 PPD 檔案:

  • 來自 manufacturer-PPDs 套件的 PPD 檔案不符合廠商和型號。如果 manufacturer-PPDs 套件對相似型號僅包含一個 PPD 檔案會發生此狀況,例如,型號系列中個別型號沒有各自的 PPD 檔案,但是在 PPD 檔案中以類似 Funprinter 1000 series 的格式指定型號名稱。

  • 不建議使用該 Foomatic PostScript PPD 檔案。這可能是因為印表機型號無法在 PostScript 模式下有效率的操作,例如,此模式可能不信任該印表機,因為記憶體太少或印表機處理器太弱而使得速度太慢。此外,印表機可能預設不支援 PostScript,例如因為只有選用模組提供 PostScript。

如果來自 manufacturer-PPDs 套件的 PPD 檔案不適合 PostScript 印表機,但是 YaST 基於上述因素無法加以設定,請在 YaST 中手動選取對應印表機型號。