我已经设置了一个 Fedora 10 服务器,并且想要从三个 Windows Vista 和两个 XP 工作站打印到连接的打印机。
经过大量阅读相关手册后,我得到了这个结果:
- 所有工作站均可打印
- 一个工作站可以从除一个应用程序之外的所有应用程序进行打印。
问题出在特定 Vista Business 工作站上的 IE7(和 IE8):每次从该特定工作站上的此应用程序启动打印作业时,我都会在 Linux 服务器上的 CUPS 日志中收到“拒绝访问”错误。从其他工作站上的 IE 打印则正常。
我当前的解决方法是先打印到 PDF 文件,然后从同一工作站从 Adobe Reader 打印该 PDF。
第二个问题是我对 Fedora/Linux 没什么经验,所以这可能是一个新手问题。如果是这样的话,我很抱歉。
- 可能是什么问题呢?
- “拒绝访问”什么?CUPS 日志没有提供关于拒绝访问哪个资源的更多信息。常见的嫌疑是什么?
- 调试这种情况的最佳方法是什么?
我没有使用 Samba 进行打印,只是无法让它工作。相反,我使用没有身份验证的 CUPS,即每个人都可以打印。在工作站上,我已将打印机添加为“互联网打印机”,并提供此 URLhttps://myserver:631/printers/myprinter
编辑:我已更新至 Fedora 11,但问题仍然存在......
编辑2:更多信息:
- 我更新到了 Fedora 12,问题仍然存在
- 使用 Adobe Reader 作为 Internet Explorer 插件进行打印会导致同样的问题,因此问题似乎出在过程本身上。
答案1
问题可能在于发送到打印机的数据格式。您在 Windows 工作站上使用本机打印机驱动程序吗?如果是,您可能需要启用“原始”打印,即从工作站向打印机发送原始二进制打印代码。
您可能需要编辑 cups 配置文件并取消注释application/octet-stream
以启用原始打印。我不确定这样做的安全后果是什么。
另一项可能对您有用也可能没用的方法就是使用 Windows 客户端上的通用 postscript 驱动程序将您的打印机设置为 postscript 打印机。不过,我很少能使它正常工作。
答案2
您如何公开打印机?我猜是通过 Samba 公开的。闪亮先生和新先生如上所述,您可能希望将打印机公开为“原始”打印机,从而允许 Windows 设备使用常规驱动程序与打印机通信。这就是我一直将 Linux 服务器中的打印机公开给 Windows 客户端的方式。
要调试此问题,您需要查看 Samba 日志以及 CUPS 日志。首先检查 Samba 日志,看看是否可以看到 Windows 计算机对打印机的访问。还要检查 CUPS 日志。在任一日志集中查找错误。
如果你启用了 selinux,那么仅用于测试目的执行命令:
setenforce permissive
完成此操作后,重新启动 Samba 和 CUPS 并尝试访问。如果这有影响,那么您可能需要查看 selinux 审计日志以更改那里的一些权限。假设您通常将 selinux 置于强制模式,则在完成测试后,使用以下命令重新启用它:
setenforce enforcing