答案1
背景
如果您只想要解决方案,可以跳过这部分。但为了好奇,我将解释我们面临的问题:
- KeePassXC 也创建了一个 UNIX 套接字供应
$XDG_RUNTIME_DIR/kpxc_server
用程序监听。keepassxc-proxy
已开始 – 通过本地消息传递–通过浏览器(由插件触发[email protected]
,即 KeePassXC-Browser)并尝试侦听该套接字以查找消息。 - 如果 Firefox 未沙箱化,则该代理可以照常启动。它可能需要做的唯一一件事就是进入 KeePassXC flatpak。
- Flathub KeePassXC有补丁允许 keepassxc-proxy 通过 启动
flatpak run
,即 Firefox 现在可以运行 - 这就是到目前为止,安装在主机上的 Firefox 确实可以工作的原因……
- 现在为什么如果 Firefox 作为 flatpak 安装就不起作用:非常好的官方Mozilla 的 Firefox Flatpak作为浏览器确实没有什么权限。例如,它没有对文件系统的任何通用访问权限(它使用门户网站)。无论如何,无论它做什么,它都不能做一件事:在主机或另一个 flatpak 中生成进程。
所以我们可以通过制作包装脚本来解决这个问题使用 flatpak-spawn让 Firefox 逃脱它的沙箱。然而,看到 Firefox 沙箱已经构建得多么可爱和安全,我不敢破坏这样一个功能的安全性。毕竟,从安全角度来看,您也可以再次在主机上安装 Firefox。好消息即将到来:该解决方案保留了所有沙箱和安全方面!
然而,即使我们已经解决了 Firefox 必须运行代理的问题,但还有更多问题。剧透一下,这是我们需要解决的要点:
- 通过 Firefox 启动 keepassxc-proxy (解决方案:我们在 Firefox 沙箱中运行它)
- 允许 Firefox 访问 KeePassXC 的套接字 注意:在这一步,您已经可以运行变体:Firefox(沙盒)、KeePassXC(主机安装)
- 将 KeePassXC flatpak 中的 UNUX 套接字暴露给 Flatpak 之外的其他应用程序。 (解决方案:符号链接)
目前的解决方法
v1.2
测试环境:Fedora 32、org.mozilla.firefox
来自 flathub 的 v75、org.keepassxc.KeePassXC
来自 flathub 的 v2.5.4
通过 Firefox 启动 keepassxc-proxy
- 首先是最糟糕的事情:我们需要
keepassxc-proxy
二进制文件,因为我们希望它在 Firefox flatpak 内运行。对我们有好处:它没有太多依赖项,并且可以作为独立应用程序使用。- 所以我选择了Rust 代理应用程序(因为我为什么不应该呢?
答案2
鲁克的回答是在正确的轨道上,但我不得不改变一些事情要使其在 Ubuntu 22.04 上与 keepassxc 2.7.1 配合使用:
- 该存储库已过时,请使用https://github.com/varjolintu/keepassxc-proxy-rust反而
- 由于主机和 flatpak 中可用的 libc 不匹配,我必须创建一个静态链接的二进制文件
- 从 Flatpak 的角度来看,.json 文件中的路径需要是绝对路径
- 由于更改了套接字名称,需要调整 flatpak override 命令
看我的博客文章获取详细说明。
答案3
受到 @decocijo 和 @rugk 答案的启发,这是基于 Chrome 的浏览器 (Vivaldi) 的工作示例,并且还为 Firefox 提供了更直接的方法。
git clone https://github.com/varjolintu/keepassxc-proxy-rust
cd keepassxc-proxy-rust
# compile
# add deps if needed
sudo dnf install gcc rustup
rustup-init
rustup target add x86_64-unknown-linux-musl
RUSTFLAGS='-C link-arg=-s' cargo build --release --target x86_64-unknown-linux-musl
cp target/x86_64-unknown-linux-musl/release/keepassxc-proxy ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts/
# modify flatpaks
sudo flatpak override --filesystem=xdg-run/app/org.keepassxc.KeePassXC:ro com.vivaldi.Vivaldi
sudo flatpak override --filesystem=xdg-run/org.keepassxc.KeePassXC:ro com.vivaldi.Vivaldi
sudo flatpak override --filesystem=/var/home/m8/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts org.keepassxc.KeePassXC
# modify keepassxc browser path
In the KeePassXC UI.
- Tools
- Settings
- Browser Integration
- General
- Enable Browser Integration
- Tick Vivaldi
- Advanced
- Use a custom location
- Chromium
- ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts