FreeBSD 上的 CUPS

商标

FreeBSD 是 FreeBSD 基金会的注册商标。

许多制造商和销售商用来区分其产品的名称都被声称为商标。在本文件中出现这些名称的地方,如果 FreeBSD 项目意识到了商标声明,则这些名称后会加上“™”或“®”符号。

摘要

关于在 FreeBSD 上配置 CUPS 的文章。


1. 通用 Unix 打印系统 (CUPS) 简介

CUPS(通用 UNIX 打印系统)为基于 UNIX® 的操作系统提供了一个可移植的打印层。它由 Easy Software Products 开发,旨在为所有 UNIX® 供应商和用户提供标准打印解决方案。

CUPS 使用互联网打印协议 (IPP) 作为管理打印作业和队列的基础。行式打印机守护程序 (LPD)、服务器消息块 (SMB) 和 AppSocket(又名 JetDirect)协议也得到支持,但功能有所减少。CUPS 为 UNIX® 上的实际打印添加了网络打印机浏览和基于 PostScript 打印机描述 (PPD) 的打印选项。因此,CUPS 非常适合在 FreeBSD、Linux®、Mac OS® X 或 Windows® 等混合环境中共享和访问打印机。

CUPS 的主网站是 http://www.cups.org/

2. 安装 CUPS 打印服务器

要使用预编译的二进制文件安装 CUPS,请从 root 终端发出以下命令

# pkg install cups

其他可选但推荐的软件包是 print/gutenprintprint/hplip,它们都添加了适用于各种打印机的驱动程序和实用程序。安装完成后,CUPS 配置文件可以在目录 /usr/local/etc/cups 中找到。

3. 配置 CUPS 打印服务器

安装后,必须编辑一些文件才能配置 CUPS 服务器。首先,创建或修改(视情况而定)文件 /etc/devfs.rules 并添加以下信息以设置所有潜在打印机设备的适当权限,并将打印机与 cups 用户组相关联

[system=10]
add path 'unlpt*' mode 0660 group cups
add path 'ulpt*' mode 0660 group cups
add path 'lpt*' mode 0660 group cups
add path 'usb/X.Y.Z' mode 0660 group cups

请注意,XYZ 应替换为与打印机对应的 /dev/usb 目录中列出的目标 USB 设备。要查找正确的设备,请检查 dmesg(8) 的输出,其中 ugenX.Y 列出了打印机设备,它是一个指向 /dev/usb 中 USB 设备的符号链接。

接下来,在 /etc/rc.conf 中添加两行,如下所示

cupsd_enable="YES"
devfs_system_ruleset="system"

这两个条目将在启动时启动 CUPS 打印服务器,并分别调用上面创建的本地 devfs 规则。

要在某些 Microsoft® Windows® 客户端下启用 CUPS 打印,应取消 /usr/local/etc/cups/mime.types/usr/local/etc/cups/mime.convs 中的以下行的注释

application/octet-stream

完成这些更改后,必须重新启动 devfs(8) 和 CUPS 系统,可以通过重新启动计算机或在 root 终端中发出以下两个命令来实现

# /etc/rc.d/devfs restart
# /usr/local/etc/rc.d/cupsd restart

4. 在 CUPS 打印服务器上配置打印机

安装和配置 CUPS 系统后,管理员可以开始配置连接到 CUPS 打印服务器的本地打印机。此过程与在其他基于 UNIX® 的操作系统(例如 Linux® 发行版)上配置 CUPS 打印机非常相似,甚至完全相同。

管理和管理 CUPS 服务器的主要方法是通过基于 Web 的界面,可以通过启动 Web 浏览器并在浏览器的 URL 栏中输入 http://localhost:631 来找到该界面。如果 CUPS 服务器在网络上的另一台机器上,请将服务器的本地 IP 地址替换为 localhost。CUPS Web 界面非常直观,因为它包含用于管理打印机和打印作业、授权用户等的各个部分。此外,在管理屏幕的右侧,有一些复选框,可轻松访问常见更改的设置,例如是否共享连接到系统的已发布打印机、是否允许远程管理 CUPS 服务器,以及是否允许用户对打印机和打印作业进行更多访问和权限。

添加打印机通常与在 CUPS Web 界面的管理屏幕中单击“添加打印机”,或单击管理屏幕中的“发现的新打印机”按钮之一一样简单。当出现“设备”下拉框时,只需选择所需的本地连接打印机,然后继续执行操作。如果已添加 print/gutenprint-cupsprint/hplip 端口或软件包,如上所述,则在后续屏幕中将提供其他打印驱动程序,这些驱动程序可能提供更高的稳定性或功能。

5. 配置 CUPS 客户端

配置好 CUPS 服务器并添加打印机并发布到网络后,下一步是配置客户端,或者要访问 CUPS 服务器的机器。如果只有一台充当服务器和客户端的桌面机器,则可能不需要其中的许多信息。

5.1. UNIX® 客户端

也需要在 UNIX® 客户端上安装 CUPS。在客户端上安装 CUPS 后,在网络上共享的 CUPS 打印机通常会被各种桌面环境(如 GNOME 或 KDE)的打印机管理器自动发现。或者,可以在客户端机器上通过 http://localhost:631 访问本地 CUPS 界面,并在管理部分单击“添加打印机”。当出现“设备”下拉框时,只需选择网络上的 CUPS 打印机(如果已自动发现),或选择 ipphttp 并输入网络上的 CUPS 打印机的 IPP 或 HTTP URI,通常使用以下两种语法之一

ipp://server-name-or-ip/printers/printername
http://server-name-or-ip:631/printers/printername

如果 CUPS 客户端难以找到在网络上共享的其他 CUPS 打印机,有时添加或创建文件 /usr/local/etc/cups/client.conf 并包含一个条目可能会有所帮助,如下所示

ServerName server-ip

在这种情况下,server-ip 将被替换为网络上 CUPS 服务器的本地 IP 地址。

5.2. Windows® 客户端

XP 之前的 Windows® 版本没有本机与基于 IPP 的打印机联网的功能。但是,Windows® XP 及更高版本具有此功能。因此,在这些版本的 Windows® 中添加 CUPS 打印机非常容易。通常,Windows® 管理员将运行 Windows® 添加打印机向导,选择 网络打印机,然后输入以下语法的 URI

http://server-name-or-ip:631/printers/printername

如果使用的是没有本机 IPP 打印支持的旧版 Windows®,则连接到 CUPS 打印机的通常方法是将 net/samba416 和 CUPS 结合使用,但这超出了本章的范围。

6. CUPS 故障排除

CUPS 的问题通常在于权限。首先,仔细检查如上所述的 devfs(8) 权限。接下来,检查文件系统中创建的设备的实际权限。确保用户是 cups 组的成员也很有用。如果 CUPS Web 界面管理部分中的权限复选框似乎不起作用,另一个解决方法可能是手动备份位于 /usr/local/etc/cups/cupsd.conf 的主 CUPS 配置文件,并编辑各种配置选项,尝试不同的配置选项组合。下面列出了一个示例 /usr/local/etc/cups/cupsd.conf 用于测试。请注意,此示例 cupsd.conf 牺牲了安全性以简化配置;在管理员成功连接到 CUPS 服务器并配置客户端后,建议重新访问此配置文件,并开始锁定访问权限。

# Log general information in error_log - change "info" to "debug" for
# troubleshooting...
LogLevel info

# Administrator user group...
SystemGroup wheel

# Listen for connections on Port 631.
Port 631
#Listen localhost:631
Listen /var/run/cups.sock

# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
#BrowseAllow @LOCAL
BrowseAllow 192.168.1.* # change to local LAN settings
BrowseAddress 192.168.1.* # change to local LAN settings

# Default authentication type, when authentication is required...
DefaultAuthType Basic
DefaultEncryption Never # comment this line to allow encryption

# Allow access to the server from any machine on the LAN
<Location />
  Order allow,deny
  #Allow localhost
  Allow 192.168.1.* # change to local LAN settings
</Location>

# Allow access to the admin pages from any machine on the LAN
<Location /admin>
  #Encryption Required
  Order allow,deny
  #Allow localhost
  Allow 192.168.1.* # change to local LAN settings
</Location>

# Allow access to configuration files from any machine on the LAN
<Location /admin/conf>
  AuthType Basic
  Require user @SYSTEM
  Order allow,deny
  #Allow localhost
  Allow 192.168.1.* # change to local LAN settings
</Location>

# Set the default printer/job policies...
<Policy default>
  # Job-related operations must be done by the owner or an administrator...
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs \
Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription \
Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job \
CUPS-Move-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  # All administration operations require an administrator to authenticate...
  <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer \
Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs \
Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer \
Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class \
CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>
    AuthType Basic
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>

最后修改日期:2024 年 4 月 25 日 由 Mateusz Piotrowski 修改