1.15. 将 Samba 设置为打印服务器
如果您将 Samba 设置为打印服务器,那么网络中的客户端可以使用 Samba 进行打印。此外,如果进行了配置, Windows 客户端可以从 Samba 服务器下载驱动程序。
本节的部分内容摘自在 Samba Wiki 中发布的将Samba设置为打印服务器文档。许可证: CC BY 4.0。作者和贡献者:请参阅 Wiki 页面上的历史选项卡。
先决条件
Samba 采用以下模式之一设置:
1.15.1. 在 Samba 中启用打印服务器支持
默认情况下,在 Samba 中不启用打印服务器支持。要将 Samba 用作打印服务器,您必须相应地配置 Samba。
						打印作业和打印机操作需要远程过程调用(RPC)。默认情况下,Samba 根据需要启动 rpcd_spools 服务来管理 RPC。在第一个 RPC 调用过程中,或者当您更新了 CUPS 中的打印机列表时,Samba 会从 CUPS 检索打印机信息。每台打印机可能需要大约 1 秒。因此,如果您有超过 50 台打印机,请调优 rpcd_spools 设置。
					
先决条件
- 打印机在 CUPS 服务器中配置。 - 有关在 CUPS 中配置打印机的详情,请查看打印服务器上 CUPS Web 控制台(https://printserver:631/help)中提供的文档。 
流程
- 编辑 - /etc/samba/smb.conf文件:- 添加 - [printers]部分,以启用 Samba 中的打印后端:- [printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600- [printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 重要- [printers]共享名称是写死的,不能更改。
- 如果 CUPS 服务器运行在不同的主机或端口上,请在 - [printers]部分中指定设置:- cups server = printserver.example.com:631 - cups server = printserver.example.com:631- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果您有许多打印机,请将空闲秒数设置为比连接到 CUPS 的打印机数高的值。例如,如果您有 100 台打印机,请在 - [global]部分中设置:- rpcd_spoolss:idle_seconds = 200 - rpcd_spoolss:idle_seconds = 200- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果这个设置在您的环境中没有缩放,请在 - [global]部分中增加- rpcd_spoolsworker 的数量:- rpcd_spoolss:num_workers = 10 - rpcd_spoolss:num_workers = 10- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 默认情况下, - rpcd_spools启动 5 个 worker。
 
- 验证 - /etc/samba/smb.conf文件:- testparm - # testparm- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 打开所需的端口,并使用 - firewall-cmd工具重新加载防火墙配置:- firewall-cmd --permanent --add-service=samba firewall-cmd --reload - # firewall-cmd --permanent --add-service=samba # firewall-cmd --reload- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 重启 - smb服务:- systemctl restart smb - # systemctl restart smb- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 重启服务后,Samba 会自动共享在 CUPS 后端中配置的所有打印机。如果您只想手动共享特定的打印机,请查看 
验证
- 提交打印作业。例如,要打印 PDF 文件,请输入: - smbclient -Uuser //sambaserver.example.com/printer_name -c "print example.pdf" - # smbclient -Uuser //sambaserver.example.com/printer_name -c "print example.pdf"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
1.15.2. 手动共享特定的打印机
如果您将 Samba 配置为打印服务器,默认情况下,Samba 会共享在 CUPS 后端中配置的所有打印机。以下流程解释了如何只共享特定的打印机。
先决条件
- Samba 被设置为打印服务器
流程
- 编辑 - /etc/samba/smb.conf文件:- 在 - [global]部分中,通过以下设置禁用自动打印机共享:- load printers = no - load printers = no- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为您要共享的每个打印机添加一段。例如,要在 Samba 中将 CUPS 后端中名为 - example的打印机共享为- Example-Printer,请添加以下部分:- [Example-Printer] path = /var/tmp/ printable = yes printer name = example- [Example-Printer] path = /var/tmp/ printable = yes printer name = example- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 您不需要为每个打印机单独设置 spool 目录。您可以在打印机的 - path参数中设置与您在- [printers]部分中设置的完全相同的 spool 目录。
 
- 验证 - /etc/samba/smb.conf文件:- testparm - # testparm- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 重新载入 Samba 配置: - smbcontrol all reload-config - # smbcontrol all reload-config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow