Linux 打印系统 CUPS 全面指南
1. CUPS 访问控制配置
在配置 CUPS 时,涉及到一些重要的指令来控制访问权限。以下是相关指令的详细解释:
-
Location 指令
:定义了所有 GET 操作的路径起点
/
,这是 Web 服务器的最高级别路径。
-
Order 指令
:定义了指定位置的默认访问控制,有两种可能的值:
-
deny, allow
:默认允许所有主机的请求,然后检查
Deny
指令,接着检查
Allow
指令。
-
allow, deny
:默认拒绝所有主机的请求,然后检查
Allow
指令,接着检查
Deny
指令。
-
Deny 指令
:指定要拒绝访问的主机。例如,使用
all
关键字表示所有主机。
-
Allow 指令
:指定允许访问的主机。在示例中,仅允许本地主机(
127.0.0.1
)访问。由于
Order
指令的设置,
Deny
指令中指定的值将优先于
Allow
指令。
-
Location 指令结束标签
:标志着
Location
指令块的结束。
如果要更改 CUPS 的默认行为,允许从任何主机访问
cupsd.conf
中的
/admin
位置,可以将
Allow
指令从
Allow 127.0.0.1
改为
Allow All
,然后注释掉
Deny All
指令或改为
Deny None
。
2. 添加打印机
在安装并启动 CUPS 服务后,需要登录到 Web 界面(通过端口 631)来添加打印机。在 Web 浏览器中输入
http://localhost:631
即可访问。默认情况下,必须登录到要管理的同一服务器。需要注意的是,631 端口也是 CUPS 接受打印作业的端口。
如果要从本地服务器以外的位置管理指定的打印机,需要修改
cupsd.conf
文件以允许其他主机连接,特别是要为文件中的
/admin
位置设置适当的访问控制。
3. 本地打印机和远程打印机
在 CUPS 中添加打印机很容易,关键是要知道打印机如何连接到系统。打印机可以通过两种方式连接到主机:本地连接和网络连接。CUPS 使用设备统一资源信息(URI)来指定打印机资源的访问模式,以下是一些可能的设备 URI 示例:
| 连接方式 | URI 示例 | 说明 |
| ---- | ---- | ---- |
| 直接连接(本地) |
parallel:/dev/lp*
| 连接到并行端口的打印机 |
| 直接连接(本地) |
serial:/dev/ttyS*
| 连接到串行端口的打印机 |
| 直接连接(本地) |
usb:/dev/usb/lp*
| 连接到 USB 端口的打印机 |
| IPP(网络) |
ipp://hostname/ipp/
| 通过 Internet 打印协议访问的网络打印机 |
| LPD(网络) |
lpd://hostname/queue
| 连接到运行 Line Printer Daemon(LPD)的系统的打印机 |
| SMB(网络) |
smb://servername/sharename
| 访问 Windows 网络或 Samba 服务器上共享打印机 |
| 网络打印机 |
socket://ip_address:port
| 具有内置网络功能的打印机,如 HP JetDirect 系列 |
4. 使用 Web 界面添加打印机
可以通过 Web 界面、命令行或特定发行版的 GUI 工具来添加和配置 CUPS 打印机。Web 界面方法可能是最简单的,因为它使用向导引导整个过程。以下是使用 Web 界面添加打印机的步骤:
1. 登录到运行 CUPS 的系统,启动 Web 浏览器,连接到
http://localhost:631
。
2. 在网页的顶部导航区域,点击
Administration
菜单,然后在随后的屏幕上点击
Add Printer
按钮。可能会提示进行身份验证,输入
root
作为用户名并输入 root 密码,点击
OK
继续。
3. 会看到一个列出各种可用连接方法的屏幕,自动发现的网络打印机也会列出。选择最能描述打印机与系统连接方式的选项,这里为示例打印机选择 IPP,完整 URI 为
ipp://locahost/631
,完成后点击
Continue
。
4. 下一个屏幕会根据上一步选择的连接方法而有所不同,通常可以接受默认设置,点击
Continue
。
5. 在
Add Printer
页面,输入打印机的信息,如名称、位置等,点击
Continue
。
6. 下一个屏幕会列出各种打印机品牌和型号,选择最接近要安装的打印机的型号,示例中选择
HP Color Laserjet Series PCL
,点击
Add Printer
按钮继续。
-
提示
:列表中显示的打印机品牌和制造商显然不能涵盖所有存在的打印机品牌。如果需要更多选择,可以在 Fedora 或 RHEL 类型的系统上安装
gutenprint-cups
RPM 包,该包为各种打印机制造商提供了额外的驱动程序。在 Debian 类系统(如 Ubuntu)上,
printer-driver-gutenprint.deb
包将提供额外的驱动程序。
7. 最后一个屏幕允许为新打印机设置默认选项,如媒体尺寸、输出模式、媒体来源和横幅等。目前接受默认选项,点击
Set Default Options
按钮。
8. 会看到一个页面确认打印机已成功添加。
9. 然后会看到一个显示刚添加打印机属性的页面。
对于自动检测到的打印机(如 USB 或网络打印机),软件会自动生成一个设备 URI 来访问检测到的打印机。
5. 使用命令行工具添加打印机
也可以使用命令行向 CUPS 添加打印机。熟悉 CUPS 工作原理后,通过命令行界面管理 CUPS 系统可能会更快。以下是使用 CUPS 命令行工具设置打印机的简单示例:
1. 以超级用户身份登录系统,启动任意虚拟终端,使用
lpstat
实用工具列出当前配置的打印机队列:
[root@server ~]# lpstat -a
Imagine-printer accepting requests since Sat 24....PST
-
使用
lpinfo命令获取 CUPS 服务器支持的打印机型号和驱动程序列表。对于示例场景,对富士施乐 DocuPrint 系列打印机感兴趣,将命令的长输出通过管道传递给grep命令以缩小列表范围:
[root@server ~]# lpinfo -m | grep -i fuji
lsb/usr/cupsfilters/Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd Fuji Xerox
….<OUTPUT TRUNCATED>....
选择输出的第一行作为示例打印机的型号和驱动程序,因为它是最接近的通用匹配。CUPS 的
lpadmin
命令允许只指定打印机型号/驱动程序的缩写形式。
3. 现在发出
lpadmin
命令添加打印机:
[root@server ~]# lpadmin -p "Imagine-printer-number-2" -E \
-v socket://192.168.1.200 \
-m "lsb/usr/cupsfilters/Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd" \
-D "You only need to imagine to print here" \
-L "Building 3"
-
再次使用
lpstat命令列出所有存在的打印机:
[root@fedora-server ~]# lpstat -a
Imagine-printer accepting requests since Sun 31 ... 8 PM EDT
Imagine-printer-number-2 accepting requests since Sun 31 … 6 PM EDT
-
也可以在 CUPS Web 界面上查看刚添加的打印机,将 Web 浏览器指向
http://localhost:631/printers。
6. 日常 CUPS 管理
设置打印机只是管理打印环境的一半工作,还需要进行一些日常的打印机管理任务,如删除打印机、管理打印机队列和查看打印作业状态等。可以使用命令行工具和 Web 界面来管理这些任务。
6.1 设置默认打印机
在设置了多个打印队列的系统上,可能希望将某个特定的打印机(队列)设置为客户端使用的默认打印机。默认打印机是客户端在打印时未明确指定打印机名称时使用的打印机。例如,要将名为
Imagine-printer-number-2
的打印机设置为系统的默认打印机,可以输入以下命令:
[root@server ~]# lpadmin -d imagine-printer-number-2
6.2 启用、禁用和删除打印机
-
禁用打印机
:类似于将打印机临时离线。在此状态下,打印机队列仍可接受打印作业,但不会实际打印它们,打印作业会排队等待,直到打印机启用或重启。例如,要禁用名为
imagine-printer-number-2的打印机,可以输入以下命令:
[root@server ~]# cupsdisable imagine-printer-number-2
-
启用打印机
:要启用名为
imagine-printer-number-2的打印机,可以输入以下命令:
[root@server ~]# cupsenable imagine-printer-number-2
-
删除打印机
:要从命令行删除名为
bad-printer的打印机,可以输入以下命令:
[root@server ~]# lpadmin -x bad-printer
6.3 接受和拒绝打印作业
任何由 CUPS 管理的打印机都可以设置为接受或拒绝打印作业。这与打印机的禁用状态不同,拒绝打印作业的打印机将简单地不接受任何打印请求。例如,要使名为
imagine-printer-number-2
的打印机拒绝打印作业,可以输入以下命令:
[root@server ~]# /usr/sbin/reject imagine-printer-number-2
使用
lpstat
命令查看此打印机的状态:
[root@server ~]# lpstat -a imagine-printer-number-2
Imagine-printer-number-2 not accepting requests since Tue 26 Jul 2020
02:16:04 PM EDT -
Rejecting Jobs
要使该打印机恢复接受打印作业,可以输入以下命令:
[root@server ~]# /usr/sbin/accept imagine-printer-number-2
再次查看打印机的状态:
[root@server ~]# lpstat -a imagine-printer-number-2
Imagine-printer-number-2 accepting requests since Tue 26 Jul 2020
02:16:04 PM EDT
6.4 管理打印权限
在默认情况下,任何由 CUPS 管理的打印机都可以接受用户的打印作业。在大型多用户环境中,可能需要控制哪些用户或组可以访问哪些打印机,以确保安全或出于办公管理原因。CUPS 提供了一种简单的方法来实现这一点,通过使用
lpadmin
实用工具。例如:
- 只允许名为
yyang
和
mmellow
的用户向名为
imagine-printer
的打印机打印,可以输入以下命令:
[root@server ~]# lpadmin -p imagine-printer -u allow:yyang,mmellow
-
拒绝
yyang和mmellow访问该打印机,可以输入以下命令:
[root@server ~]# lpadmin -p imagine-printer -u deny:yyang,mmellow
- 移除所有限制,允许所有用户向该打印机打印,可以输入以下命令:
[root@server ~]# lpadmin -p imagine-printer -u allow:all
6.5 通过 Web 界面管理打印机
大多数上述任务也可以通过 CUPS Web 界面执行。使用按钮和链接,可以轻松删除打印机、控制打印作业、修改打印机属性、停止打印机、拒绝打印作业等。例如,作为管理员,可能需要定期检查打印队列以确保一切正常。点击 Web 界面上的
Jobs
选项卡(或直接访问
http://localhost:631/jobs
)将显示一个类似于图 28 - 2 的页面,可以对队列中的作业进行各种操作。如果队列中没有作业,网页将明确显示没有作业。
Jobs
页面还提供了显示已完成作业和显示所有作业的选项按钮。还可以通过将浏览器指向 CUPS 的管理页面(
http://localhost:631/admin/
)执行许多其他管理任务。
7. 使用客户端打印工具
当客户端机器打印时,作业会发送到打印服务器并进行假脱机处理。假脱机处理就是将打印作业放入打印队列的过程,打印作业可以处于不同的状态,如进行中、暂停(例如管理员为了补充纸盘而暂停打印)或取消(作业因某种原因被手动取消)。当打印机出现问题时,打印作业可能会排队,在打印机恢复正常时可能会产生问题。以下是一些可以用于打印和管理打印队列的命令:
7.1 lpr 命令
lpr
命令用于打印文档。大多数 PostScript 和文本文件可以直接使用
lpr
命令打印。如果使用独立应用程序(如 AbiWord、KOffice、LibreOffice、GIMP、OpenOffice 等),可能需要将这些应用程序设置为打印到正确的设备。以下是一个示例:
1. 以普通用户身份(如
yyang
)登录系统,创建一个包含简单文本 “Hello Printer” 的纯文本文件
test-page.txt
:
[yyang@client ~]$ echo "Hello Printer" >> test-page.txt
- 找出系统上配置的默认打印机名称:
[yyang@client ~]$ lpstat -d
system default destination: Imagine-printer
-
将
test-page.txt文件发送到默认打印机:
[yyang@client ~]$ lpr test-page.txt
-
将同一文档发送到之前安装的另一个虚拟打印机
Imagine-printer-number-2:
[yyang@client ~]$ lpr -P Imagine-printer-number-2 test-page.txt
输入此命令后,除非打印的是大文件,否则打印机应该很快开始打印。要查看打印作业的状态,可以使用
lpq
命令。
7.2 lpq 命令
提交作业后,可以使用
lpq
命令查看打印假脱机程序上的内容。如果刚打印的作业没有从打印机输出,可以使用
lpq
命令显示打印机上当前排队的作业列表。例如,要查看发送到默认打印机的打印请求的状态,可以输入以下命令:
[yyang@client ~]$ lpq -av
要查看发送到第二个打印机的打印作业的状态,可以输入以下命令:
[yyang@client ~]$ lpq -av -P Imagine-printer-number-2
7.3 lprm 命令
如果突然意识到不想打印刚刚提交的文档,可能有机会在打印之前删除它。可以使用
lprm
命令将打印作业从打印机假脱机程序中移除。例如:
- 从默认打印机删除 ID 为 2 的打印作业,可以输入以下命令:
[yyang@client ~]$ lprm 2
-
从特定打印机(如
Imagine-printer-number-2)移除 ID 为 2 的作业,可以输入以下命令:
[yyang@client ~]$ lprm 2 -P imagine-printer-number-2
-
如果是 root 用户,可以通过发出以下命令清除名为
imagine-printer的打印机的所有打印作业:
[root@server ~]# lprm -P imagine-printer -
这里的
-
表示 “所有作业”。
综上所述,通过 Web 界面、命令行工具和客户端打印工具,用户可以全面管理 CUPS 打印系统,包括添加、配置、管理打印机以及处理打印作业等操作。无论是初学者还是有经验的管理员,都可以根据自己的需求选择合适的方法来完成打印任务。
Linux 打印系统 CUPS 全面指南
8. 打印作业状态管理流程
为了更清晰地展示打印作业在不同状态下的管理流程,下面通过 mermaid 流程图进行说明:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始打印作业]):::startend --> B{作业状态}:::decision
B -->|进行中| C(正常打印):::process
B -->|暂停| D(管理员暂停,补充纸盘等):::process
D --> E(恢复打印):::process
B -->|取消| F(手动取消作业):::process
C --> G{打印机是否故障}:::decision
G -->|是| H(作业排队):::process
H --> I(打印机恢复,继续打印):::process
G -->|否| J(作业完成):::process
这个流程图展示了打印作业从开始到结束的整个生命周期,以及在不同状态下的处理方式。当打印机出现故障时,打印作业会排队等待,直到打印机恢复正常。
9. 不同连接方式打印机的优缺点分析
在前面介绍了多种打印机的连接方式,下面对它们的优缺点进行详细分析,以帮助用户根据实际需求选择合适的连接方式:
| 连接方式 | 优点 | 缺点 |
| ---- | ---- | ---- |
| 直接连接(本地) | 连接稳定,数据传输速度快,适用于小型办公环境或家庭使用;不需要网络支持,独立性强。 | 打印机与主机之间的距离受限;不利于多用户共享使用。 |
| IPP(网络) | 支持远程打印,方便多用户共享;大多数现代操作系统都支持该协议,兼容性好。 | 依赖网络环境,网络不稳定时可能影响打印质量和速度;需要对网络进行一定的配置和管理。 |
| LPD(网络) | 许多 UNIX/Linux 系统甚至部分 Windows 服务器都支持,通用性较强;可以使不支持 LDP 的主机也能使用连接到 LPD 系统的打印机。 | 安全性相对较低;配置相对复杂,需要对 LPD 服务有一定的了解。 |
| SMB(网络) | 是 Windows 网络文件和打印机共享的基础,在 Windows 环境中使用方便;Linux/UNIX 系统可以通过 Samba 软件支持,实现跨平台共享。 | 依赖 Windows 系统或 Samba 服务器,对服务器的稳定性要求较高;可能存在兼容性问题,特别是在不同版本的 Windows 系统之间。 |
| 网络打印机 | 具有内置网络功能,不需要连接到单独的主机,可以直接连接到网络,方便多用户共享;可以放置在网络覆盖的任何位置,灵活性高。 | 价格相对较高;需要对打印机的网络设置进行配置,对用户的技术要求较高。 |
10. 常见问题及解决方法
在使用 CUPS 打印系统的过程中,可能会遇到一些常见问题,下面对这些问题及解决方法进行总结:
-
打印机无法连接
-
可能原因
:网络连接问题、打印机未开启、CUPS 服务未启动、设备 URI 配置错误等。
-
解决方法
:检查网络连接是否正常,确保打印机已开启并处于就绪状态;使用
systemctl status cups
命令检查 CUPS 服务是否正在运行,如果未运行,使用
systemctl start cups
命令启动服务;检查设备 URI 是否正确配置。
-
打印作业排队但不打印
-
可能原因
:打印机故障、打印队列堵塞、打印机驱动程序问题等。
-
解决方法
:检查打印机是否有卡纸、缺纸等故障,排除硬件问题;使用
lpstat -a
命令查看打印队列状态,使用
lprm
命令清除不必要的打印作业;更新或重新安装打印机驱动程序。
-
打印质量不佳
-
可能原因
:打印机设置问题、打印驱动程序不兼容、打印机耗材不足等。
-
解决方法
:在 CUPS 管理界面或打印机驱动程序设置中调整打印质量选项;尝试更新打印机驱动程序到最新版本;检查打印机的墨盒、硒鼓等耗材是否充足。
11. 总结与建议
通过对 CUPS 打印系统的全面介绍,我们了解了其访问控制配置、打印机添加方法、日常管理任务以及客户端打印工具的使用。在实际应用中,用户可以根据自己的需求和技术水平选择合适的管理方式。
- 对于初学者来说,使用 Web 界面添加和管理打印机是最简单的方法,它提供了直观的操作向导,降低了学习成本。
- 对于有一定技术基础的用户,命令行工具可以更高效地完成复杂的配置和管理任务,如批量添加打印机、设置打印权限等。
- 在选择打印机连接方式时,要综合考虑打印机的使用场景、网络环境和成本等因素。如果是小型办公环境或家庭使用,直接连接(本地)方式可能更合适;如果需要多用户共享和远程打印,网络连接方式则是更好的选择。
- 定期对打印系统进行维护和检查,及时处理打印作业排队、打印机故障等问题,确保打印系统的稳定运行。
希望本文能够帮助用户更好地理解和使用 CUPS 打印系统,提高打印工作的效率和质量。
超级会员免费看
59

被折叠的 条评论
为什么被折叠?



