我在尝试通过网络共享连接到 Ubuntu 机器的打印机时遇到了重大问题(网络上的其余机器都是各种版本的 Windows)。我一直在与 SAMBA 纠结,并取得了一些进展:当尝试从 Windows 机器“添加打印机”时,它们在进行网络搜索时实际上可以看到它。但是,Windows 总是要求驱动程序(“打印机的服务器没有安装正确的打印机驱动程序...”),然后当我选择一个时,它会显示错误消息“Windows 无法连接到打印机。请确保您已正确输入名称...”
我做了一些研究,发现这通常是由于打印机没有“正确命名”造成的:使用枚举打印机,它有 \LOCALHOST 而不是适当的名称。建议的修复方法是使用设置打印机名称(rpcclient)。但是,我无法做到这一点:我总是收到 WERR_ACCESS_DENIED 错误。
关于纠正该问题的进一步研究表明,“授予”自己适当的特权(SePrintOperator 权限, 使用net...用户...rpc 权限授予)...但我也无法做到这一点:我收到一条“无法授予 [用户] 权限 (NT_STATUS_ACCESS_DENIED)”消息。我到底错过了什么?任何帮助都将不胜感激,因为这对我来说是一项关键功能。提前致谢!
答案1
好的,这需要从多个站点/页面进行研究。我发现在混合的 Ubuntu-Windows 环境中使用 SAMBA 进行网络打印可能是一件复杂的事情,这可能无法解决每个人的问题……但如果您的症状相同,您可以尝试此解决方案。(对于以下所有编码,请将您的计算机名称替换为“computername”,将您的 Ubuntu 登录名替换为“username”,等等。)
当尝试将连接到 Ubuntu 计算机的网络/共享打印机添加到 Windows 客户端(以便您可以从 Windows 计算机进行打印)时,Windows 给出的上述错误消息(“Windows 无法连接到打印机。请确保您已正确输入名称...”)可能表示打印机名称Ubuntu 计算机报告的错误是错误的。Windows 似乎对网络和网络资源的名称非常挑剔。从终端,使用命令rpcclient 本地主机, 然后枚举打印机,你可能会看到这样的输出:
rpcclient $> enumprinters
标志:[0x800000]
名称:[\LOCALHOST]
描述:[\LOCALHOST\HP-SuperJet-10,HP SuperJet 10,Hewlett-Packard HP >SuperJet 10]
注释:[Hewlett-Packard HP SuperJet 10]
请注意,名称字段仅包含“\LOCALHOST\”...这是不完整的;您的打印机名称也应该在括号中(在本例中为“\LOCALHOST\HP-SuperJet-10”)。
建议的解决方案是使用命令设置打印机名称在 rpcclient 中,但这可能会给你带来错误 WERR_ACCESS_DENIED,而不是 WERR_INVALID_PRINERNAME。这似乎表明你作为用户缺乏对系统打印机进行更改的权限。但在经历了许多繁琐的尝试后,我试图赋予自己这些权利(例如,使用SePrintOperator 权限)并收到其他错误(NT_STATUS_ACCESS_DENIED),我检查了(net rpc 权限列表 -S 计算机名 -U 用户名)并发现我有已经已设置这些权限!这让我知道其他事情出了问题。
我发现的解决方案是在 Samba 配置文件中添加一行[全球的]部分。在终端窗口中,输入gksu gedit /etc/samba/smb.conf
要添加的行是:
强制用户=用户名
保存更改,关闭 gedit 程序,然后在终端窗口中重新启动必要的服务:
sudo 服务 smbd 重新启动
sudo 服务 nmbd 重新启动
这应该会启用/强制您更改打印机名称的权限。输入rpcclient 本地主机返回 rpcclient。现在,我发现了另一个问题:对于设置打印机名称命令似乎你必须输入打印机名称两次...只需输入设置打印机名称 = HP-SuperJet-10没有奏效;在测试并再次失败后,枚举打印机检查 rpcclient 显示打印机名称仍然只显示“\LOCALHOST\”。(我在这里猜测,但可能是因为这是设置打印机名称命令)。输入:
setprintername = 你的打印机名称 你的打印机名称
对我来说,“yourprintername”是“HP-SuperJet-10”。枚举打印机这次命令应该显示如下内容:
rpcclient $> enumprinters 标志:[0x800000]
名称:[\\LOCALHOST\HP-SuperJet-10]
描述:[\LOCALHOST\HP-SuperJet-10,HP SuperJet 10,Hewlett-Packard HP SuperJet 10]
注释:[Hewlett-Packard HP SuperJet 10]
如果您可以在名称字段中看到附加到 LOCALHOST 末尾的正确打印机名称,则说明您已成功。我发现,应用此修复后,每当我尝试从 Windows 计算机“添加打印机”时,它们甚至可以在网络上看到打印机。
进一步说明:到目前为止,此解决方案仅在 Windows Vista 机器上对我有效。Windows 7 似乎向我提供了不同的错误消息,这几乎肯定需要不同的解决方案。祝我好运!