如何让 Samba 需要密码才能访问打印机?

如何让 Samba 需要密码才能访问打印机?

我在 Ubuntu 14.04 LTS 上托管了一台打印机,我负责锁定它。该打印机需要可供合法的 Windows (7/10) 和 Ubuntu 14.04 用户访问,但一般情况下不能访问。

此时,我可以让打印机通过 CUPS 和 Samba 进行广播,并且我可以从打印机进行打印任何Windows 计算机,但我无法让服务器通过身份验证请求来质询打印尝试。当尝试从 Windows 计算机访问 Ubuntu 服务器上的共享文件夹时,Samba 配置会质询用户名/密码,但在添加打印机时不会。

如果我可以提供任何其他信息,或者我尝试做的事情不可能实现,请告诉我。

谢谢

答案1

我最近遇到了类似的问题,上面单个评论中链接的帖子实际上并没有回答这里提出的问题(使用 Samba 验证的打印机共享设置 Windows,而不是相反)。我只想允许对从 Linux 共享的打印机进行验证访问。此外,我正在运行 Ubuntu Server LTS,这意味着只能通过命令行访问(在我的情况下是通过 SSH),所以我找到的大多数教程/指南都显示 Ubuntu GUI,因此对我来说毫无用处。

[printers]带有该选项的部分定义printable = yes了到 CUPS 的映射。设置browseable = no可防止此选项显示在打印机列表中。它是打印作业的实际打印机假脱机,因此这是有道理的。但是,默认情况下,任何正确配置打印机设置并指向 Samba 服务器并可以访问该服务器的人都可以隐式访问打印而无需特权(即匿名访问)。为了强制对打印假脱机程序进行身份验证访问,我使用了该valid users = bob, joe, mary选项。

Windows 会查找print$打印机的共享名称。相关部分[print$]声明了browseable = yes,它授予连接到 Samba 服务器的任何人查看可用打印机的能力。尽管guest ok = no是默认设置,但 Samba 仍然允许我认为匿名访问任何打印机。为了强制身份验证,我使用了 选项valid users = bob, joe, mary。如果您想隐藏打印机,使其不被未经身份验证的用户看到,您可以尝试使用browseable = no,然后使用该include = /etc/samba/print.%U.conf选项为特定用户进行更改,browseable = yes如 Unix StackExchange 帖子所述:

https://unix.stackexchange.com/questions/245785/show-specific-samba-shares-only-to-some-users

综合起来,/etc/samba/smb.conf现在看起来像这样:

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
   valid users = bob, joe, mary

[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
   valid users = bob, joe, mary

我在 Windows 上遇到的一个需要身份验证的副作用是,尝试以无法识别的用户身份双击打印机Open(Windows 上的默认动词)会导致出现“访问被拒绝”消息框,但从未提示输入凭据。Windows 可能正在传递该用户登录的 Windows 凭据。幸运的是,右键单击并选择“连接...”选项会提示输入凭据。成功连接后,我能够使用Open打印机,它要求我手动设置打印机驱动程序,因为我不会尝试通过 Samba 提供这些驱动程序,这超出了这个问题的答案范围。然后我成功打印了一张测试页,一切正常。

相关内容