我不知道从哪里开始...我正在尝试解决一个问题,在大量部署的 Ubuntu 20.04.6 LTS 系统上,用户在启动(例如)软件更新程序时从未收到要求输入密码的弹出窗口。
当用户点击“软件更新程序”时会发生什么:
- 应用程序发布
- 应用程序显示“检查更新”
- 应用程序提示“您无权执行此操作”
我能够将其缩小到 gnome 和 polkit 之间“可能”存在的问题。另外,为了以防万一,我还确保用户是“sudo”组的成员。我还想说的是,大多数针对此问题(或类似问题)的 Google 搜索结果都显示为操作系统早期版本的错误。
无论如何,在某个时候,我最终关注了他们安装的线程polkit-1-gnome
。尽管我的研究表明,Ubuntu 20.04 LTS 不再需要这个,但出于绝望,我还是继续安装了它。
起初,它似乎没有“修复”任何问题,直到按照以下调试说明进行操作https://wiki.ubuntu.com/DebuggingPolicykit,当运行以下调试代码时,我确实得到了遗留的侏儒弹出窗口要求用户输入密码:
POLKIT_DEBUG=1 G_MESSAGES_DEBUG=all \
/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 2>&1 \
> /tmp/polkit-gnome-authentication-agent-1.log &
那一刻我意识到了为什么工作是因为我手动运行了 Gnome 身份验证代理。然后我开始深入研究比较工作系统和非工作系统之间所有相关的权限 polkit 文件。作为参考,可以在以下位置找到有趣的文件:
- /etc/polkit-1/localauthority
- /var/lib/polkit1/本地权限
- /usr/share/polkit1/actions
笔记:对于默认值(来自位于 /usr/share/polkit1/actions 的文件),您只需运行该pkactions --verbose | less
命令即可。
无论如何,这个问题让我抓狂。我一直在比较工作系统和非工作系统之间的所有 *.pkla 文件。我会发布错误日志,但老实说,我很惊讶地说,生成的日志很少,而且我能找到的日志没有显示任何错误。我确实注意到该服务正在使用 --no-debug 标志运行,但我还没有弄清楚在哪里更改它以获取额外的 polkitd 调试信息。
因此,考虑到所有这些,我想如果我必须总结一下我在故障排除方面需要什么帮助或指导......
问题: 如何正确调试polkitd
以找出 Ubuntu 20.04.6 LTS 中哪些地方无法正常工作?
非常感谢任何帮助/建议!