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