配置和使用 CUPS 打印服务器
将您的系统配置为 CUPS 服务器,并管理打印机、打印队列和您的打印环境
摘要
- AirPrint™ 和 IPP Everywhere™ 打印机
- 网络和带有打印机应用程序的本地 USB 打印机
- 带有传统的基于 PostScript 打印机描述(PPD)驱动程序的网络和本地 USB 打印机
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 在顶部导航栏中点 Create
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 安装和配置 CUPS 复制链接链接已复制到粘贴板!
您可以使用 CUPS 从本地主机打印。您还可以使用此主机在网络中共享打印机,并充当打印服务器。
流程
安装
cups软件包:# dnf install cups如果您将 CUPS 配置为打印服务器,请编辑
/etc/cups/cupsd.conf文件,并进行以下更改:如果要远程配置 CUPS 或将这个主机用作打印服务器,请配置服务侦听哪个 IP 地址和端口:
Listen 192.0.2.1:631 Listen [2001:db8:1::1]:631默认情况下,CUPS 仅侦听
localhost接口(127.0.0.1和::1)。在方括号中指定 IPv6 地址。重要不要将 CUPS 配置为侦听允许从不可信网络(如互联网)访问的接口。
通过允许
<Location />指令中的 IP 范围来配置哪些 IP 范围可以访问服务:<Location /> Allow from 192.0.2.0/24 Allow from [2001:db8:1::1]/32 Order allow,deny </Location>在
<Location /admin>指令中,配置哪些 IP 地址和范围可以访问 CUPS 管理服务:<Location /admin> Allow from 192.0.2.15/32 Allow from [2001:db8:1::22]/128 Order allow,deny </Location>使用这些设置时,只有 IP 地址为
192.0.2.15和2001:db8:1::22的主机才能访问管理服务。可选:配置允许访问 web 界面中的配置和日志文件的 IP 地址和范围:
<Location /admin/conf> Allow from 192.0.2.15/32 Allow from [2001:db8:1::22]/128 ... </Location> <Location /admin/log> Allow from 192.0.2.15/32 Allow from [2001:db8:1::22]/128 ... </Location>
如果您运行
firewalld服务,并希望配置对 CUPS 的远程访问,请在firewalld中打开 CUPS 端口:# firewall-cmd --permanent --add-port=631/tcp # firewall-cmd --reload如果您在有多个接口的主机上运行 CUPS,请考虑限制对所需网络的访问。
启用并启动
cups服务:# systemctl enable --now cups
验证
使用浏览器,并访问
http://<hostname>:631。如果您可以连接到 Web 界面,则 CUPS 工作正常。请注意,某些功能(如
Administration选项卡)需要身份验证和 HTTPS 连接。默认情况下,CUPS 使用自签名证书进行 HTTPS 访问,因此当您验证时连接是不安全的。
第 2 章 在 CUPS 服务器上配置 TLS 加密 复制链接链接已复制到粘贴板!
CUPS 支持 TLS 加密的连接,默认情况下,服务为所有需要身份验证的请求强制实施加密连接。如果没有配置证书,CUPS 会创建一个私钥和一个自签名证书。如果只从本地主机访问 CUPS ,这就足够了。对于通过网络的安全连接,请使用由证书颁发机构(CA)签名的服务器证书。
如果没有加密或带有自签名的证书,中间人(MITM)攻击可能会泄露敏感数据,例如:
- 使用 Web 界面配置 CUPS 时管理员的凭证
- 当通过网络发送打印作业时的机密数据
先决条件
- CUPS 已配置。
- 您创建了一个私钥,CA 为其发布了服务器证书。
- 如果需要中间证书才能验证服务器证书,请将中间证书附加到服务器证书中。
- 私钥不受密码保护,因为 CUPS 在服务读取密钥时,对输入密码不提供选项。
证书中的规范名称(
CN)或主题替代名称(SAN)字段与以下之一匹配:- CUPS 服务器的完全限定域名(FQDN)
- DNS 解析服务器 IP 地址的别名
- 私钥和服务器证书文件使用 Privacy Enhanced Mail (PEM)格式。
- 客户端信任 CA 证书。
- 如果启用了 FIPS 模式,客户端必须支持 Extended Master Secret (EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅红帽知识库解决方案 强制实施 TLS 扩展"Extended Master Secret" 。
流程
编辑
/etc/cups/cups-files.conf文件,并添加以下设置来禁用自动创建自签名证书:CreateSelfSignedCerts no删除自签名证书和私钥:
# rm /etc/cups/ssl/<hostname>.crt /etc/cups/ssl/<hostname>.key可选:显示服务器的 FQDN:
# hostname -f server.example.com将私钥和服务器证书存储在
/etc/cups/ssl/目录中,例如:# mv /root/server.key /etc/cups/ssl/server.example.com.key # mv /root/server.crt /etc/cups/ssl/server.example.com.crt重要CUPS 要求您将私钥命名为
<fqdn>.key,将服务器证书文件命名为<fqdn>.crt。如果使用别名,则必须将文件命名为<alias>.key和<alias>.crt。对私钥设置安全权限,以使只有
root用户可以读取此文件:# chown root:root /etc/cups/ssl/server.example.com.key # chmod 600 /etc/cups/ssl/server.example.com.key因为在客户端和服务器建立安全连接之前,证书是它们之间通信的一部分,所以任何客户端都可以检索证书,而无需身份验证。因此,您不需要对服务器证书文件设置严格的权限。
恢复 SELinux 上下文:
# restorecon -Rv /etc/cups/ssl/可选:显示证书的
CN和 SAN 字段:# openssl x509 -text -in /etc/cups/ssl/server.example.com.crt Certificate: Data: ... Subject: CN = server.example.com ... X509v3 extensions: ... X509v3 Subject Alternative Name: DNS:server.example.com ...如果服务器证书中的
CN或 SAN 字段包含与服务器的 FQDN 不同的别名,请将ServerAlias参数添加到/etc/cups/cupsd.conf文件中:ServerAlias alternative_name.example.com在这种情况下,使用替代名称而不是流程剩余部分中的 FQDN。
默认情况下,CUPS 仅在任务需要身份验证时才强制实施加密的连接,例如在 web 界面中的
/admin页面中执行管理任务时。要为整个 CUPS 服务器强制实施加密,请将
Encryption Required添加到/etc/cups/cupsd.conf文件中的所有<Location>指令中,例如:<Location /> ... Encryption Required </Location>重启 CUPS:
# systemctl restart cups
验证
-
使用浏览器并访问
https://<hostname>:631/admin/。这要求您的浏览器信任 CA 证书。如果连接成功,则您正确地在 CUPS 中配置了 TLS 加密。 -
如果您为整个服务器所需的该加密,请访问
http://<hostname>:631/。本例中,CUPS 返回一个Upgrade Required错误。
故障排除
显示
cups服务的systemd日志条目:# journalctl -u cups在使用 HTTPS 协议无法连接到 Web 界面后,如果日志包含
Unable to encrypt connection: Error while reading file错误,请验证私钥和服务器证书文件的名称。
第 3 章 在 web 界面中授予管理权限,以管理 CUPS 服务器 复制链接链接已复制到粘贴板!
默认情况下,sys、root 和 wheel 组的成员可以在 web 界面中执行管理任务。但是,某些其他服务也使用这些组。例如,wheel 组的成员默认可以使用 sudo 运行具有 root 权限的命令。为了避免 CUPS 管理员在其他服务中获得意外权限,请为 CUPS 管理员使用专用组。
先决条件
- CUPS 已配置。
- 您要使用的客户端的 IP 地址具有访问 Web 界面中管理区域的权限。
流程
为 CUPS 管理员创建一个组:
# groupadd cups-admins将应在 web 界面中管理服务的用户添加到
cups-admins组中:# usermod -a -G cups-admins <username>更新
/etc/cups/cups-files.conf文件中SystemGroup参数的值,并附加cups-admin组:SystemGroup sys root wheel cups-admins如果只有
cups-admin组应该具有管理访问权限,请从参数中删除其他组名称。重启 CUPS:
# systemctl restart cups
验证
使用浏览器并访问
https://<hostname_or_ip_address>:631/admin/。注意只有在使用 HTTPS 协议时,才能访问 Web UI 中的管理区域。
-
开始执行一个管理任务。例如,单击
Add printer。 Web 界面会提示输入用户名和密码。要继续操作,请使用其是
cups-admins组成员的用户凭证进行身份验证。如果身份验证成功,此用户可以执行管理任务。
第 4 章 带有打印机驱动程序的软件包的概述 复制链接链接已复制到粘贴板!
Red Hat Enterprise Linux (RHEL)为 CUPS 提供不同的带有打印机驱动程序的软件包。以下是这些软件包的的总体概述,以及它们包含哪些供应商的驱动程序:
| 软件包名称 | 打印机的驱动程序 |
|---|---|
|
| zebra, Dymo |
|
| Kodak |
|
| Brother, Canon, Epson, Gestetner, HP, Infotec, Kyocera, Lanier, Lexmark, NRG, Ricoh, Samsung, Savin, Sharp, Toshiba, Xerox 等 |
|
| Brother, Canon, Epson, Fujitsu, HP, Infotec, Kyocera, Lanier, NRG, Oki, Minolta, Ricoh, Samsung, Savin, Xerox 等 |
|
| HP |
|
| HP |
|
| Samsung、Xerox 等 |
请注意,一些软件包可能包含同一打印机厂商或打印机型号的驱动程序,但具有不同的功能。
安装所需的软件包后,您可以在 CUPS Web 界面中或使用 lpinfo -m 命令显示驱动程序的列表。
第 5 章 确定打印机是否支持无驱动程序打印 复制链接链接已复制到粘贴板!
CUPS 支持无驱动程序打印,这意味着您可以在不为打印机型号提供任何特定于硬件的软件的情况下打印。因此,打印机必须告知客户端其功能,并使用以下标准之一:
- AirPrint™
- IPP Everywhere™
- Mopria®
- Wi-Fi Direct Print Services
您可以使用 ipptool 工具发现打印机是否支持无驱动程序打印。
先决条件
- 打印机或远程打印服务器支持 Internet 打印协议(IPP)。
- 主机可以连接到打印机或远程打印服务器的 IPP 端口。默认 IPP 端口为 631。
流程
查询
ipp-versions-supported和document-format-supported属性,并确保get-printer-attributes测试通过:对于远程打印机,请输入:
# ipptool -tv ipp://<ip_address_or_hostname>:631/ipp/print get-printer-attributes.test | grep -E "ipp-versions-supported|document-format-supported|get-printer-attributes" Get printer attributes using get-printer-attributes [PASS] ipp-versions-supported (1setOf keyword) = ... document-format-supported (1setOf mimeMediaType) = ...对于远程打印服务器上的队列,请输入:
# ipptool -tv ipp://<ip_address_or_hostname>:631/printers/<queue_name> get-printer-attributes.test | grep -E "ipp-versions-supported|document-format-supported|get-printer-attributes" Get printer attributes using get-printer-attributes [PASS] ipp-versions-supported (1setOf keyword) = ... document-format-supported (1setOf mimeMediaType) = ...
要确保无驱动程序打印可以正常工作,请在输出中验证:
-
get-printer-attributes测试返回PASS。 - 打印机支持的 IPP 版本是 2.0 或更高版本。
格式列表包含以下内容之一:
-
application/pdf -
image/urf -
image/pwg-raster
-
-
对于彩色打印机,输出中包含上述格式之一,还包含
image/jpeg。
第 6 章 无驱动程序 USB 打印和扫描 复制链接链接已复制到粘贴板!
无驱动程序打印和扫描对使用 USB 连接的设备有变体。其涵盖在 IPP over USB 标准中。您需要安装 ipp-usb 软件包,以便无驱动程序打印和扫描可以正常工作。它在本地主机上使用 Avahi 注册设备,使 USB 设备看起来像一个网络设备。
6.1. 安装并检查设备功能 复制链接链接已复制到粘贴板!
在无驱动程序打印中,安装设备涉及到在网络上识别该设备,并使用打印服务器设置打印队列。然后,您可以通过访问打印队列中的设置或使用诸如 ipptool 的工具来验证设备的功能。
先决条件
- 您可以更新设备固件。
-
如果没有用于从远程打印服务器安装打印机,您可以停止并禁用
cups-browsed服务。请注意,在这种情况下,BrowsePoll服务器在/etc/cups/cups-browsed.conf文件中使用。
流程
安装
ipp-usb软件包:# dnf install ipp-usb注意ipp-usb软件包默认与 CUPS 和sane-airscane软件包一起安装。检查设备是否有打印功能:
验证该设备是否被
ipp-usb识别:# sudo ipp-usb check检查设备是否在在现有目的地中被 CUPS 识别。
ipp-usb创建的服务名称具有后缀_USB。$ lpstat -e Canon_MF440_Series_USBipp-usb创建的服务名称具有_USB后缀。例如,这里 Canon_MF440_Series_USB 代表名为 Canon I-Sensys MF433 的 IPP-over-USB 设备重要如果
lpstat -e命令的输出中显示 Canon_MF440_Series_USB,但没有在应用程序中显示,请向应用程序报告问题。检查设备功能:
# ipptool -tv ipp://localhost:60000/ipp/print get-printer-attributes.test # lpoptions -p Canon_MF440_Series_USB -lipptool命令返回设备支持的所有 IPP 属性。如果您的打印选项在 IPP 响应中存在,但没有在lpoptions输出中存在,则它是一个 CUPS 问题,因为通用的 PPD 选项是从某些属性生成的。lpoptions工具返回可用的 PPD 选项。
检查设备是否有扫描功能:
检查
sane-airscan后端是否能识别您的设备:# scanimage -L device `airscan:e0:HP LaserJet MFP M130fw' is a eSCL HP LaserJet MFP M130fw ip=127.0.0.1 Here, the HP LaserJet MFP M130fw device here is used for illustration, it does not show its real IPP-over-USB compatibility or its real options shared via AirScan from ipp-usb.检查设备功能:
# scanimage --help -d 'airscan:e0:HP LaserJet MFP M130fw (E700D6)'
6.2. 迁移现有的经典打印队列和扫描仪设备 复制链接链接已复制到粘贴板!
ipp-usb 软件包与经典打印和 IPP-over-USB 设备的扫描驱动程序不兼容,因此升级后需要根据用户的选择手动进行干预。您可以查看可用的打印和扫描功能,并决定对设备使用哪种支持:
- 无驱动程序
- 经典驱动程序
流程
- 使用无驱动程序支持 USB 设备
要将带有经典驱动程序的现有配置迁移到 USB 设备的无驱动程序支持,请遵循以下提到的步骤,具体取决于设备功能:
- 如果设备有打印功能,请删除过去为该设备安装的任何现有打印机。
要搜索打印机名称,请运行:
# lpstat -a删除打印机:
# lpadmin -x <printer_name>如果设备有扫描功能,请禁用提供扫描支持的
SANE后端,例如 hpaio。您可以通过在配置文件/etc/sane.d/dll.conf或目录/etc/sane.d/dll.d中的特定文件中注释掉其名称,或者卸载扫描驱动程序来实现这一点。例如,要禁用hpaio扫描后端:# scanimage -L device `hpaio:/usb/laserjet_mfp_m129-m134?serial=XXXX' is a Hewlett-Packard laserjet_mfp_m129-m134 all-in-one device `airscan:e0:HP LaserJet MFP M130fw (E700D6)' is a eSCL HP LaserJet MFP M130fw (E700D6) ip=127.0.0.1 # sudo sed -i 's,^\s*hpaio$,#hpaio,' /etc/sane.d/dll.d/hpaio因此,后端 HPAIO 支持的扫描设备在扫描仪列表中不可见。
- 使用经典驱动程序来支持设备
选择经典驱动程序需要在
ipp-usb配置中拒绝打印机模型。搜索设备型号名称:
# sudo ipp-usb check Configuration files: OK IPP over USB devices: Num Device Vndr:Prod Model 1. Bus 001 Device 005 04a9:2823 "Canon MF440 Series"为
ipp-usb创建一个 quirk,并在/etc/ipp-usb/quirks目录中的新 quirk 文件中使用名称。请注意,.conf后缀是必需的。# cat /etc/ipp-usb/quirks/canon.conf [Canon MF440 Series] blacklist = true重启
ipp-usb服务:$ systemctl restart ipp-usb此 quirk 拒绝
ipp-usb中的设备支持,而经典驱动程序将正常工作。ipp-usb生成的打印机被从现有打印机列表中删除。
您可以通过删除 ipp-usb 软件包,并从 DNF 操作中排除它,来选择退出无驱动程序 USB 支持。
第 7 章 设置传统打印机 复制链接链接已复制到粘贴板!
您可以使用打印机应用程序来支持不支持无驱动程序标准的传统打印机。在打印机应用程序中安装传统打印机后,应用程序使传统打印机可供 CUPS 使用。
在 CUPS 中安装带有经典驱动程序的打印机已弃用。
您可以通过在打印机应用程序中配置一个传统打印机,将经典 CUPS 驱动程序与现代打印架构一起使用。目前,RHEL 包括基于 PAPPL 的打印机应用程序,如 lprint 和 legacy-printer-app。RHEL 中当前基于 PAPPL 的打印机应用程序及其正在侦听的 TCP 端口如下:
- LPrint: 8000
- 传统打印机应用程序:8001
7.1. 设置基于 PAPPL 的打印机应用程序 复制链接链接已复制到粘贴板!
要轻松有效地支持各种打印需求,并准备好安装传统打印机,您可以设置一个基于 PAPPL 的打印机应用程序。
先决条件
- CUPS 配置了 TLS 证书。
流程
安装基于 PAPPL 的打印机应用程序软件包,例如
lprint:# dnf install <printer_application_name>可选:在 firewalld 中启用端口
8000,来从远程主机访问打印机应用程序 Web 界面:# firewall-cmd --permanent --add-port=8000/tcp # firewall-cmd --reload启用并启动服务:
# systemctl enable --now <printer_application_name>
您可以检查 /etc/lprint.conf 配置文件中的端口。
7.1.1. 使用 Web 界面在基于 PAPPL 的打印机应用程序中安装传统打印机 复制链接链接已复制到粘贴板!
您可以使用基于 PAPPL 的打印机应用程序 Web 界面安装传统打印机。
先决条件
- CUPS 配置了 TLS 证书。
- 打印机应用程序已配置且正在运行。
流程
-
在打印机应用程序主页中,单击
Add Printer。 对于网络打印机,请选择
printer name、device、hostname/IP address,请从提供的列表中选择驱动程序名称,然后单击Add Printer。您还可以使用 auto-detect 选项来搜索驱动程序。对驱动程序使用 auto-detection 选项可能会导致为您的设备找到一个不兼容的驱动程序,如果设备型号与可用驱动程序有太大不同。建议您在打印之前检查分配的驱动程序,请手动更改驱动程序,以防止任何打印问题。
-
使用的驱动程序位于
block Status中的第二行。您可以通过单击Print Test Page来测试功能。
7.1.2. 使用命令行界面在基于 PAPPL 的打印机应用程序中安装传统打印机 复制链接链接已复制到粘贴板!
您可以使用命令行界面在基于 PAPPL 的打印机应用程序中安装传统打印机。
先决条件
- CUPS 配置了 TLS 证书。
- 打印机应用程序已设置并正在运行。
流程
在基于 PAPPL 的打印机应用程序中搜索可用的驱动程序:
# lprint drivers zpl_2inch-203dpi-dt "Zebra ZPL 2-inch/203dpi/Direct-Thermal安装打印机。例如,要安装具有指定驱动程序的网络打印机,请输入:
# lprint add -d <printer name> -v socket://<hostname> -m zpl_2inch-203dpi-dt
验证
检查打印机是否在打印机列表中可见,及其用于发送原始数据的原始套接字:
# lprint printers <printer_name> - printer - ipp://localhost/ipp/print/<printer_name> <printer_name> - raw socket - socket://localhost:9101/
7.2. 将生成的网络打印机设置为 CUPS 永久队列 复制链接链接已复制到粘贴板!
您可以使用命令行界面,将专用打印机应用程序生成的网络打印机设置为 CUPS 永久队列。
在以下流程中,LPrint printer 应用程序被用作一个示例。但是,类似的步骤对任何基于 PAPPL 的打印机应用程序是有效的。
先决条件
- CUPS 配置了 TLS 证书。
- 您在 CUPS 中具有管理打印机的权限。
- 传统打印机已安装在打印机应用程序中。
流程
检查生成的网络打印机是否可用:
# lpstat -e <printer_name_in_printer_application>搜索打印机应用程序正在使用的端口:
# grep 'server-port=' /etc/lprint.conf server-port=8000使用端口号
8000安装永久队列:# lpadmin -p <printer_name_in_CUPS> -v ipps://localhost:8000/ipp/print/<printer_name_in_printer_application> -m everywhere -E检查是否安装了 CUPS 队列:
# lpstat -a <printer_name_in_CUPS> accepting requests since Wed 07 May 2025 02:31:04 AM EDT
第 8 章 使用 Web 界面向 CUPS 添加打印机 复制链接链接已复制到粘贴板!
在用户可以通过 CUPS 打印之前,您必须添加打印机。您可以使用网络打印机和直接附加到 CUPS 主机的打印机,例如通过 USB。
您可以使用 CUPS 无驱动程序功能或使用 PostScript 打印机描述(PPD)文件来添加打印机。
CUPS 更喜欢无驱动程序打印,使用驱动程序已被弃用。
Red Hat Enterprise Linux (RHEL)不提供名称服务切换多播 DNS 插件(nss-mdns),它通过查询 mDNS 响应程序来解析请求。因此,RHEL 不提供使用 mDNS 对本地无驱动程序打印机的自动发现和安装。要临时解决这个限制,请手动安装单个打印机,或使用 cups-browsed 自动安装在远程打印服务器上可用的大量打印队列。
先决条件
- CUPS 已配置。
- 您在 CUPS 中有管理打印机的权限。
- 如果您使用 CUPS 作为打印服务器,则您配置了 TLS 加密 来通过网络安全地传输数据。
- 如果要使用此功能,打印机支持需无驱动程序打印。
流程
使用浏览器并访问
https://<hostname>:631/admin/。您必须使用 HTTPS 协议连接到 Web 界面。否则,CUPS 会因为安全原因在以后的步骤中阻止身份验证。
- 单击 。
- 如果您还没有验证,CUPS 会提示输入管理用户的凭证。输入授权用户的用户名和密码。
- 如果您决定不使用无驱动程序打印,并且您要添加的打印机可被自动检测到,请选择它,然后单击 。
如果没有检测到打印机:
选择打印机支持的协议。
如果您的打印机支持无驱动程序打印,且您想要使用此功能,请选择
ipp或ipps协议。- 点 。
输入到打印机或到远程打印服务器上队列的 URL。
- 点 。
输入名称,可选输入描述和位置。如果您使用 CUPS 作为打印服务器,而其他客户端应该能够通过这个打印机上的 CUPS 打印,请选择" Share this printer "。
- 在 Make 列表中选择打印机制造商。如果打印机制造商不在列表中,请选择 Generic 或上传一个打印机的 PPD 文件。
- 点 。
选择打印机型号:
- 如果打印机支持无驱动程序打印,请选择 IPP Everywhere。请注意,如果您之前在本地安装了特定于打印机的驱动程序,则列表可能还包含诸如 <printer_name> - IPP Everywhere 的条目。
- 如果打印机不支持无驱动程序打印,请选择型号或上传打印机的 PPD 文件。
- 点
Set printer options 页面上的设置和标签页取决于驱动程序以及打印机支持的功能。使用此页面设置默认选项,比如为纸张大小。
- 点 。
验证
- 打开 Web 界面中的 打印机 选项卡。
- 点打印机的名称。
- 在 Maintenance 列表中,选择 Print test page。
故障排除
-
如果您使用无驱动程序打印,且打印不工作,请使用
lpadmin工具在命令行上添加打印机。详情请参阅 使用lpadmin工具将打印机添加 CUPS 。
第 9 章 使用 lpadmin 工具将打印机添加 CUPS 复制链接链接已复制到粘贴板!
在用户可以通过 CUPS 打印之前,您必须添加打印机。您可以使用网络打印机和直接附加到 CUPS 主机的打印机,例如通过 USB。
您可以使用 CUPS 无驱动程序功能或使用 PostScript 打印机描述(PPD)文件来添加打印机。
CUPS 更喜欢无驱动程序打印,使用驱动程序已被弃用。
Red Hat Enterprise Linux (RHEL)不提供名称服务切换多播 DNS 插件(nss-mdns),它通过查询 mDNS 响应程序来解析请求。因此,RHEL 不提供使用 mDNS 对本地无驱动程序打印机的自动发现和安装。要临时解决这个限制,请手动安装单个打印机,或使用 cups-browsed 自动安装在远程打印服务器上可用的大量打印队列。
先决条件
- CUPS 已配置。
- 如果要使用此功能,打印机支持需无驱动程序打印。
- 打印机接受端口 631 (IPP)、9100 (套接字)或 515 (LPD)上的数据。端口取决于您用来连接到打印机的方法。
流程
在 CUPS 中添加打印机:
要添加带有无驱动程序支持的打印机,请输入:
# lpadmin -p Demo-printer -E -v ipp://192.0.2.200/ipp/print -m everywhere如果
-m anywhere选项不适用于您的打印机,请尝试-m driverless:<uri>,例如:-m driverless:ipp://192.0.2.200/ipp/print。要从带有无驱动程序支持的远程打印服务器添加一个队列,请输入:
# lpadmin -p Demo-printer -E -v ipp://192.0.2.201/printers/example-queue -m everywhere如果
-m anywhere选项不适用于您的打印机,请尝试-m driverless:<uri>,例如:-m driverless:ipp://192.0.2.200/printers/example-queue。要在文件中添加带有驱动程序的打印机,请输入:
# lpadmin -p Demo-printer -E -v socket://192.0.2.200/ -P /root/example.ppd要从驱动程序在文件中的远程打印服务器添加一个队列,请输入:
# lpadmin -p Demo-printer -E -v ipp://192.0.2.201/printers/example-queue -P /root/example.ppd要添加驱动程序在本地驱动程序数据库中的打印机:
列出数据库中的驱动程序:
# lpinfo -m ... drv:///sample.drv/generpcl.ppd Generic PCL Laser Printer ...将带有 URI 的打印机添加到数据库中的驱动程序中:
# lpadmin -p Demo-printer -E -v socket://192.0.2.200/ -m drv:///sample.drv/generpcl.ppd
这些命令使用以下选项:
-
-p <printer_name>:设置 CUPS 中打印机的名称。 -
-E:启用打印机,CUPS 接受它的作业。请注意,您必须在-p之后指定这个选项。详情请查看您系统上手册页中的选项描述。 -
-v <uri>:设置到打印机或远程打印服务器队列的 URI。 -
-m <driver_uri>: 根据从本地驱动程序数据库获取的驱动程序 URI 设置 PPD 文件。 -
-P <PPD_file>:设置 PPD 文件的路径。
验证
显示可用的打印机:
# lpstat -p printer Demo-printer is idle. enabled since Fri 23 Jun 2023 09:36:40 AM CEST打印测试页:
# lp -d Demo-printer /usr/share/cups/data/default-testpage.pdf
第 10 章 使用 Web 界面在 CUPS 打印机上执行维护和管理任务 复制链接链接已复制到粘贴板!
打印机管理员有时需要在打印服务器上执行不同的任务。例如:
- 维护任务,如在技术人员修复打印机时临时暂停打印机
- 管理任务,如更改打印机的默认设置
您可以使用 CUPS Web 界面执行这些任务。
先决条件
- CUPS 已配置。
- 您在 CUPS 中有管理打印机的权限。
- 如果您使用 CUPS 作为打印服务器,您配置了 TLS 加密 来不通过网络发送纯文本形式的凭证。
- 打印机已在 CUPS 中存在。
流程
使用浏览器并访问
https://<hostname>:631/printers/。您必须使用 HTTPS 协议连接到 Web 界面。否则,CUPS 会因为安全原因在以后的步骤中阻止身份验证。
- 点您要配置的打印机的名称。
- 根据您是否要执行维护或管理任务,从列表中选择所需的操作。
- 如果您还没有验证,CUPS 会提示输入管理用户的凭证。输入授权用户的用户名和密码。
- 执行任务。
第 11 章 使用 Samba 打印到使用 Kerberos 验证的 Windows 打印服务器 复制链接链接已复制到粘贴板!
使用 samba-krb5-printing 包装器,登录到 Red Hat Enterprise Linux (RHEL)的活动目录(AD)用户可以使用 Kerberos 向活动目录(AD)进行身份验证,然后打印到将打印作业转发到 Windows 打印服务器的本地 CUPS 打印服务器。
此配置的好处在于,RHEL 上的 CUPS 管理员不需要在配置中存储固定的用户名和密码。CUPS 使用发送打印作业的用户的 Kerberos ticket 验证 AD。
红帽支持只支持从本地系统向 CUPS 提交打印作业,不支持在 Samba 打印服务器上重新共享打印机。
先决条件
- 要添加到本地 CUPS 实例中的打印机在 AD 打印服务器上是共享的。
- 您将 RHEL 主机作为成员加入到 AD 。
-
CUPS 安装在 RHEL 上,并且
cups服务正在运行。 -
打印机的 PostScript 打印机描述(PPD)文件存储在
/usr/share/cups/model/目录中。
流程
安装
samba-krb5-printing、samba-client和krb5-workstation软件包:# dnf install samba-krb5-printing samba-client krb5-workstation可选: 作为域管理员授权并显示 Windows 打印服务器上共享的打印机列表:
# smbclient -L <windows_print_server> -U administrator@<AD_KERBEROS_REALM> --use-kerberos=required Sharename Type Comment --------- ---- ------- ... Example Printer Example ...可选:显示 CUPS 模型列表以识别打印机的 PPD 名称:
lpinfo -m ... samsung.ppd Samsung M267x 287x Series PXL ...在下一步中添加打印机时,需要 PPD 文件的名称。
在 CUPS 中添加打印机:
# lpadmin -p "<printer_name>" -v smb://<windows_print_server>/<printer_share_name> -m samsung.ppd -o auth-info-required=negotiate -E该命令使用以下选项:
-
-p <printer_name>在 CUPS 中设置打印机的名称。 -
-v <URI_to_Windows_printer>将 URI 设置为 Windows 打印机。使用以下格式:smb://<host_name>/<printer_share_name>。 -
-m <PPD_file>设置打印机使用的 PPD 文件。 -
-o auth-info-required=negotiate将 CUPS 配置为在将打印作业转发到远程服务器时使用 Kerberos 身份验证。 -
-e启用打印机,CUPS 接受打印机的作业。
-
验证
- 以 AD 域用户身份登录到 RHEL 主机。
以 AD 域用户身份进行身份验证:
# kinit <domain_user_name>@<AD_KERBEROS_REALM>将文件输出到您添加到本地 CUPS 打印服务器的打印机:
# lp -d <printer_name> <file>
第 12 章 使用 cups-browsed 从远程打印服务器在本地集成打印机 复制链接链接已复制到粘贴板!
cups-browsed 服务使用 DNS 服务发现(DNS-SD)和 CUPS 浏览来使本地 CUPS 服务中自动提供的全部共享远程打印机或过滤的共享远程打印机的子集。
例如,管理员可以在工作站上使用此功能,以使只有来自可信打印服务器的打印机能在应用程序的打印对话框中可用。如果打印服务器共享大量打印机,也可以将 cups-browsed 配置为按某些标准过滤浏览的打印机,以减少列出的打印机的数量。
如果应用程序中的打印对话框使用其它机制(如 DNS-SD)来列出远程打印机,则 cups-browsed 没有影响。cups-browsed 服务也不会阻止用户手动访问未列出的打印机。
先决条件
- 已在本地主机上配置了 CUPS 服务。
存在一个远程 CUPS 打印服务器,且以下条件适用于这个服务器:
- 服务器侦听可从客户端访问的接口。
-
/etc/cups/cups.conf文件中服务器<Location />指令中的Allow from参数允许从客户端的 IP 地址访问。 - 服务器共享打印机。
- 防火墙规则允许从客户端访问服务器上的 CUPS 端口。
流程
编辑
/etc/cups/cups-browsed.conf文件,并进行以下更改:为您要轮询的每个远程 CUPS 服务器添加
BrowsePoll参数:BrowsePoll remote_cups_server.example.com BrowsePoll 192.0.2.100:1631如果远程 CUPS 服务器侦听与 631 不同的端口,请将
:_<port>_附加到主机名或 IP 地址。可选:配置过滤器来限制哪些打印机在本地 CUPS 服务中显示。例如,要过滤名称包含
sales_的队列,请添加:BrowseFilter name sales_您可以根据不同的字段名称、对筛选取反,匹配确切的值来过滤。详情请查看您系统上
cups-browsed.conf (5)手册页中的参数描述和示例。可选:更改轮询间隔和超时来限制浏览周期的数量:
BrowseInterval 1200 BrowseTimeout 6000按相同比例增加
BrowseInterval和BrowseTimeout,以避免打印机从浏览列表中消失的情况。这意味着,将BrowseInterval的值乘以 5 或更大的整数,并将这个结果值用于BrowseTimeout。默认情况下,
cups-browsed每 60 秒轮询一次远程服务器,超时为 300 秒。但是,在有许多队列的打印服务器上,这些默认值可能会消耗很多资源。
启用并启动
cups-browsed服务:# systemctl enable --now cups-browsed
验证
列出可用的打印机:
# lpstat -v device for Demo-printer: implicitclass://Demo-printer/ ...如果打印机的输出包含
implicitclass,则cups-browsed服务管理 CUPS 中的打印机。
第 13 章 访问 systemd 日志中的 CUPS 日志 复制链接链接已复制到粘贴板!
默认情况下,CUPS 将日志消息存储在 systemd 日志中。这包括:
- 错误消息
- 访问日志条目
- 页面日志条目
先决条件
流程
显示日志条目:
要显示所有日志条目,请输入:
# journalctl -u cups要显示特定打印作业的日志条目,请输入:
# journalctl -u cups JID=<print_job_id>要显示特定时间段内的日志条目,请输入:
# journalectl -u cups --since=<YYYY-MM-DD> --until=<YYYY-MM-DD>将
YYYY替换为年,将MM替换为月,将DD替换为天。
第 14 章 将 CUPS 配置为把日志存储在文件中而不是 systemd 日志中 复制链接链接已复制到粘贴板!
默认情况下,CUPS 将日志消息存储在 systemd 日志中。或者,您可以将 CUPS 配置为将日志消息存储在文件中。
先决条件
流程
编辑
/etc/cups/cups-files.conf文件,并将AccessLog、ErrorLog和PageLog参数设置为您要存储这些日志文件的路径:AccessLog /var/log/cups/access_log ErrorLog /var/log/cups/error_log PageLog /var/log/cups/page_log如果您将 CUPS 配置为将日志存储在
/var/log/cups/以外的目录中,请在该目录上设置cupsd_log_tSELinux 上下文,例如:# semanage fcontext -a -t cupsd_log_t "/var/log/printing(/.*)?" # restorecon -Rv /var/log/printing/重启
cups服务:# systemctl restart cups
验证
显示日志文件:
# cat /var/log/cups/access_log # cat /var/log/cups/error_log # cat /var/log/cups/page_log如果您将 CUPS 配置为将日志存储在
/var/log/cups/以外的目录中,请验证日志目录上的 SELinux 上下文是否为cupsd_log_t:# ls -ldZ /var/log/printing/ drwxr-xr-x. 2 lp sys unconfined_u:object_r:cupsd_log_t:s0 6 Jun 20 15:55 /var/log/printing/
第 15 章 设置高可用性 CUPS 打印服务器环境 复制链接链接已复制到粘贴板!
如果您的客户端需要在不中断的情况下访问打印机,您可以在多个主机上设置 CUPS,并使用打印队列浏览功能来提供高可用性。然后,打印客户端自动配置由不同打印服务器共享的打印队列。如果客户端将打印作业发送到其本地打印队列,则客户端上的 CUPS 会将作业路由到处理作业并将其发送到打印机的一个打印服务器。
流程
在两个或多个服务器上设置 CUPS:
- 安装和配置 CUPS。
- 启用 TLS 加密。
使用
lpadmin工具 或 Web 界面 将打印队列添加到所有 CUPS 实例中。如果使用 Web 界面,请确保在添加打印机时选择 Share this printer 选项。lpadmin工具默认启用此设置。重要对于高可用性场景,一个打印服务器上的每个队列都需要一个在其他服务器上具有完全相同的队列名称的队列。您可以使用
lpstat -e命令显示每个服务器上的队列名称。可选:您可以在每台服务器上配置队列,来引用不同的打印机。
在打印客户端上:
编辑
/etc/cups/cups-browsed.conf文件,并为每个 CUPS 打印服务器添加BrowsePoll指令:BrowsePoll print_server_1.example.com:631 BrowsePoll print_server_2.example.com:631启用并启动
cups和cups-browsed服务:# systemctl enable --now cups cups-browsed
验证
显示客户端上可用的打印机:
# lpstat -t ... device for Demo-printer: implicitclass://Demo-printer/ Demo-printer accepting requests since Fri 22 Nov 2024 11:54:59 AM CET printer Demo-printer is idle. enabled since Fri 22 Nov 2024 11:54:59 AM CET ...示例输出显示 Demo-printer 队列使用
implicitclass后端。因此,cups-browsed将此队列的打印作业路由到此客户端上BrowsePoll指令中指定的主机。
第 16 章 访问 CUPS 文档 复制链接链接已复制到粘贴板!
CUPS 提供对安装在 CUPS 服务器上的服务文档的基于浏览器的访问。本文档包括:
- 管理文档,如用于命令行打印机管理和记帐
- 手册页
- 编程文档,如管理 API
- 参考
- Specifications
先决条件
- CUPS 已安装并正在运行。
- 您要使用的客户端的 IP 地址有访问 Web 界面的权限。
流程
-
使用浏览器,并访问
http://<hostname_or_ip_address>:631/help/。 -
展开
Online Help Documents中的条目,然后选择您要阅读的文档。