这真是让我抓狂!我感觉我已经很接近了,但我可能错过了一个小细节。
我有一个 Ubuntu 桌面设置为 CUPS 服务器。我需要通过 GUI 界面添加打印机,而不是 CUPS Web 界面。当我本地登录到服务器时,没有问题,运行良好!
但是,当我通过 X2Go 以同一用户身份启动远程会话时,我可以打开并查看已连接到服务器的打印机,但仅此而已。我无法做任何其他事情。无法添加。无法删除。无法编辑。没有什么。(有一个小例外:如果我通过 X2Go 启动远程会话,以 root 身份登录,这就可以了。我可以修改打印机。不确定原因是什么。)
打印机 GUI 右上角的“解锁”图标呈灰色,当我将鼠标悬停在图标上时,会出现“系统策略阻止更改”的提示。我做了足够的研究,知道这与 Ubuntu 中的 polkit 有关;但是,我显然没有正确的 .pkla 文件,因为我在其中输入的任何内容似乎都没有任何作用。
这是我当前的.pkla 文件:
[Modify printers remotely]
Identity=unix-user:{remote_user}
Action=org.opensuse.cupspkhelper.mechanism.printeraddremove
ResultInactive=auth_self
ResultActive=auth_self
它存储在:/etc/polkit-1/localauthority/50-local.d。
我是否遗漏了文件中任何可以阻止远程连接用户通过 GUI 修改打印机的内容?这不是 polkit 应该支持的东西吗?我完全没有主意了。
服务器运行的是 Ubuntu 20.04、CUPS 2.3.1 和 pkaction 版本 0.105
感谢大家的帮助!
答案1
同样的问题也让我感到很困惑!我的配置非常相似,在 Windows 上从 RDP 运行远程会话时无法解锁打印机设置。正如您所说,研究现有资料的指导也没有特别有用。它只让我陷入了和您差不多的境地 — 也就是说,没有完全解决问题。人们会认为远程修改打印机是一项很常见的任务,因此已经有了解决方案……但显然不是。
然而,就在今天,我似乎已经确定了迈过终点线所需的最后一步。这只是对您之前所做的微小调整,但结果是能够远程解锁打印机设置。
更多数据可参见polkit 手册页(此链接指向 Focal Fossa 文档,但其他版本应该非常相似)。
稍作修改的文件内容如下,之后你可以找到有关为什么这样配置的详细信息:
[Modify printers remotely]
Identity=unix-user:{remote_user}
Action=org.opensuse.cupspkhelper.mechanism.*
ResultAny=auth_admin_keep
方括号内是标题,该标题在文件内必须是唯一的。
键Identity
指定此规则适用于哪些用户或组。
在您的示例中,您使用了两个键ResultActive
和ResultInactive
:都指的是当地的会话,而不是偏僻的一;相反,关键ResultAny
是指任何主题。通过在 Ubuntu 20.04 LTS(Focal Fossa)上进行测试,我确定仅添加ResultAny
不会影响本地会话,因此如果您在本地连接,则无需输入管理员密码来编辑打印机(请记住,无论如何这将仅限于在中指定的用户Identity
)。
我将Action
密钥更改为 glob 值org.opensuse.cupspkhelper.mechanism.*
,其中包含的操作不仅仅是添加、编辑或删除打印机。您可以通过运行来查看允许的单个操作pkaction | grep org.opensuse.cupspkhelper.mechanism.
。
pkla 文件的位置应该是/etc/polkit-1/localauthority/50-local.d/
。至于文件的名称,可以是任何你喜欢的名字,请记住,如果有多个文件,则按顺序进行评估(为了更好地理解,请参阅上面链接的手册页)——我碰巧使用了“99-printing.pkla”。
请注意,一旦在上述目录中创建了 pkla 文件,polkit 就会立即识别这些设置。保存 pkla 文件后,它会立即生效(无需注销和登录)。在后续远程会话中,用户将能够通过身份验证来解锁打印机设置。如果认为不需要身份验证,只需将auth_admin_keep
pkla 文件中的替换为yes
,就可以完全绕过解锁步骤。
我希望这有用!