4. 与 Windows PC 共享打印机

4.1. 共享基础知识

图 3. 打印机共享

Samba 使用 nmbdsmbd 守护进程与 Windows PC 共享文件和打印机。nmbd 充当 Windows 命名服务,向 LAN 上的 Windows PC 广播您的计算机名称。smbd 接受来自 Windows PC 的文件和打印机请求 图 3

您需要为要共享的每个 Linux 打印机下载并安装 Windows 打印机驱动程序。Windows 打印机驱动程序可以在您的打印机制造商的网站上找到。

4.2. Samba 配置

如果您允许匿名访问您的打印机,您将需要为远程打印作业创建一个用户帐户

/usr/sbin/adduser --system --disabled-password smbprint

此命令将名为 "smbprint" 的用户添加到您的系统。请确保在/home/smbprint"smbprint" 用户的主目录中有足够的磁盘空间来假脱机文件。检查 "smbprint" 用户是否没有权限在您的系统上读取或修改敏感文件和目录。如果您已配置 CUPS 以限制系统上特定用户进行打印,则必须允许 "smbprint" 用户访问您要共享的打印机。

Samba 配置文件是/etc/samba/smb.conf。以下是设置为将 CUPS 与 "smbprint" 用户一起使用的示例配置文件

[global]
  printcap name = cups  
  printing = cups   
  security = share   
[printers]   
  browseable = yes   
  printable = yes   
  public = yes   
  create mode = 0700   
  guest only = yes   
  use client driver = yes
  guest account = smbprint   
  path = /home/smbprint   

请注意,此配置将允许任何可以建立网络连接到您的计算机的人进行打印,并且不建议用于不受信任网络上的计算机,例如直接连接到互联网的计算机。如果您需要实施访问控制,请设置 security = usersecurity = domain,并阅读 Samba 手册页以获取更多信息。

将上述设置添加到 Samba 配置文件后,您必须使用以下命令重启 Samba

/etc/init.d/samba restart

4.3. CUPS 配置

Windows 打印机驱动程序在通过网络发送输出之前对其进行格式化。您必须配置 CUPS 以接受预格式化的输出,方法是从/etc/cups/mime.convs:

application/octet-stream   application/vnd.cups-raw   0   -

中取消注释以下行。 还要从/etc/cups/mime.types:

application/octet-stream

中取消注释以下行。现在必须告知 CUPS 允许来自网络上其他计算机的连接。将以下行添加到/etc/cups/cupsd.conf:

<Location /printers>
 AuthType None
 Order Deny,Allow
 Deny From None
 Allow From All
</Location>
与 Samba 配置一样,此配置允许任何计算机连接到您的打印机,并且不建议用于不受信任网络上的计算机。有关加强对打印机访问控制的信息,请参阅cupsd.conf手册页和 CUPS 文档。

最后,使用以下命令重启 CUPS

/etc/init.d/cupsys restart

您的 Linux 打印机现在应该已共享到 LAN 上的 Windows PC。按照将网络打印机添加到 Windows PC 的常用步骤操作,并记住打印测试页。