我的默认浏览器是 Firefox,但是当我单击 synaptic 内部的“访问主页”链接时,它会在 Chrome 中打开该链接。
我如何让它在默认浏览器中打开链接?
答案1
解决方案出现在...中描述这个帖子在线程上,synaptic 无法执行默认 Web 浏览器。输入/输出错误(请注意,我已修改链接以提供更清晰的上下文,并修复了第三个损坏的链接):
在突触中,
onClick
主页链接的处理程序是RGPkgDetailsWindow::cbOpenHomepage()
(参见rgpkgdetails.cc - 第 201 行)调用GetBrowserCommand()
(见rgutils.cc - 第 114 行)并调用/usr/bin/xdg-open
(这是一个容易修补的 shell 脚本)(参见xdg-open.in - 第 432 行)if [ -n "$BROWSER" ]; then open_envvar "$1" fi
此处的修补将防止任何通过的路由
xdg-open
(不仅仅是突触)if [ -n "$BROWSER" ]; then if [[ $EUID -eq 0 ]]; then open_envvar "su -c ${SUDO_USER} $1" else open_envvar "$1" fi fi
这背后的原因很好地描述了这个帖子在同一线程中:
您所面临的观察之谜是由于安全设置和所涉及的不同用户造成的。
背景:启动 synaptic 时,GUI 应用程序以 root 用户身份运行。问题:单击链接打开 Web 浏览器时,synaptic 会转发调用以 root 用户身份打开 Web 浏览器。这具有某些与系统安全性和稳定性相关的隐患。
此外:Synaptic 可以通过不同的方式启动,以 root 用户身份运行,这些不同的调用确实具有不同的系统安全相关约束。(它可以通过 pkexec、gksu 或 gksudo 调用,具体取决于如何启动 synaptic 调用,例如从菜单、从 MX-updater 或其他方式。)在首选应用程序中或通过 debians 替代机制设置默认浏览器,并不能解决这些安全约束带来的问题。
摘要:目前最简单的方法是复制链接并手动打开浏览器。这需要进一步考虑,以提供一种稳定且安全的方式,从 GUI 应用程序(以用户 root 身份运行)在用户环境中调用用户 Web 浏览器。
这可能值得注意的是,该补丁可能进一步修改,根据最后的帖子:
“安全”
xdg-open
一点的好主意,可能还值得检查所有类型的 root-app 调用,如 su-to-root、gksu、gksudo 和 pkexec,因为我们在菜单中有一个 synapic-pkexec 调用。