KeePassXCがサンドボックス化されている場合 フラットパック内 、サンドボックス化されている場合、つまりdebとしてインストールされている場合のみ、ブラウザーはそれにアクセスできます。/rpmパッケージまたはホスト上の同様のもの。ブラウザー、つまり Firefox とKeePassXCの両方のサンドボックス化、または少なくともブラウザーと、セキュリティ上の理由で実際に必要なKeePassXCのネイティブインストールは不可能です。
TL; DR:
それでは、そのコミュニケーションを機能させる方法は?
ソリューションだけが必要な場合は、この部分をスキップできます。しかし、好奇心旺盛な方のために、私たちが直面する問題について説明します。
$XDG_RUNTIME_DIR/kpxc_server
にアプリケーションがリッスンするためのUNIXソケットも作成します。 keepassxc-proxy
が開始されます– ネイティブメッセージング を介してブラウザーによって(アドオンによってトリガーされます[email protected]
、つまりKeePassXC-ブラウザ)、そのソケットをリッスンしてメッセージを検索しようとします。flatpak run
経由で開始できます。つまり、Firefoxでそのため、ラッパースクリプトを作成して flatpak-spawn を作成し、Firefoxがサンドボックスをエスケープするようにすることで、問題を解決できます。しかし、Firefoxのサンドボックスが既にどれほど美しく安全なものであるかを見て、そのような機能のセキュリティをあえて破壊することはしません。結局のところ、セキュリティPOVから、Firefoxをホストにインストールすることもできますが、それでもなおです。嬉しいお知らせ:このソリューションは、すべてのサンドボックスとセキュリティの側面を保持します!
ただし、Firefoxでプロキシを実行する必要があるという事実を解決したとしても、さらに問題があります。ネタバレするために、これは私たちが解決する必要がある主要なポイントです:
v1.1
テスト済み:Fedora 32、フラットハブのorg.mozilla.firefox
v75、フラットハブのorg.keepassxc.KeePassXC
v2.5.4
keepassxc-proxy
をFirefoxのフラットパック内で実行したいので、バイナリとしてcargo build --release
が必要です。私たちにとっては良いことです。依存性はそれほど多くなく、スタンドアロンアプリケーションとして利用できます。./target/release
を実行)。keepassxc-proxy
にあります。 211ae91
バイナリ、バージョン .rustc_info.json
、x86_64用のrustc 1.43.0(Fedora 32の現在の安定版)でコンパイル(そして、それが役立ち、詳細を知りたい場合- そのc5c4c6c011a4d64f7e4dd6c444dcc70bee74d23ffb28c9b65f7ff6d89a8f86ea
)。そしてaltghough Rustは(まだ)完全に再現可能なコンパイルではありません Fedora 32を搭載した2台のマシンで同じビットごとの結果を得ました。SHA-256ハッシュは~/.var/app/org.mozilla.firefox/.mozilla/native-messaging-hosts
です。したがって、危険な気分になっている場合は、ここに私のkeepassxc-proxyバイナリをダウンロードしてくださいができます。 ( GitHubによってホストされている; P )native-messaging-hosts
にアクセスします。実際、org.keepassxc.keepassxc_browser.json
はまだ存在していない可能性があるため、作成してください。{
"allowed_extensions": [
"[email protected]"
],
"description": "KeePassXC integration with native messaging support, workaround for flatpaked Firefox, see https://is.Gd/flatpakFirefoxKPXC",
"name": "org.keepassxc.keepassxc_browser",
"path": "/home/REPLACE_WITH_USERNAME/.var/app/org.mozilla.firefox/.mozilla/native-messaging-hosts/keepassxc-proxy",
"type": "stdio"
}
を作成し、次の内容を貼り付けます:REPLACE_WITH_USERNAME
絶対パスのみが機能することに注意してください(そうでしょう)、$USER
をkeepassxc-proxy
の名前に置き換えて、パスが独自の機能ディレクトリにつながるようにします。chmod +x
を同じdirに配置します。もちろん、他のパスを使用することもできますが、これは明らかにFirefoxからアクセスできる最初のパスであり、すべてが1か所にあります。 (より良い提案がある場合は、遠慮なくお知らせください。)注:実行可能でない場合は、実行可能にすることを忘れないでください($XDG_RUNTIME_DIR/kpxc_server
)。KeePassXCは、デフォルトで$ Sudo flatpak override --filesystem=xdg-run/kpxc_server:ro org.mozilla.firefox
にソケットを作成します。これが、Firefox flatpakにアクセス権を与えるために必要なものです(読み取り専用で十分です)。
幸い、これは簡単です。とにかく走れ:
$XDG_RUNTIME_DIR/app/org.keepassxc.KeePassXC/kpxc_server
Hooray!:ホストにKeePassXCをインストールする人(なしサンドボックス/フラットパック)、これで十分です。 KeePassXCを起動し、Firefoxを、次に起動すると、接続できるはずです。 :tada:ただし、下部にある「既存の問題」セクションに注意してください。
フラットパックでKeePassXCも実行する場合は、続行します。
注:技術的な背景がわからない場合は、以下の箇条書き(ポイント1)にスキップしてください。
FlathubからフラットパックされたKeePassXCは、Unixソケットを$XDG_RUNTIME_DIR
に、flatpaksが行うべき場所に作成します。 (「ネイティブ」のKeePassXCのように$XDG_RUNTIME_DIR/kpxc_server
を直接使用する場合、サンドボックスにのみ存在します。)
ご存知のように、通常のkeepassxc-proxyは$XDG_RUNTIME_DIR
のファイルを想定しています。これを解決するには、シンボリックリンクを作成するだけです。確認できるように、これで実際に問題が解決されます。非常に奇妙な理由により、Flatpakサンドボックスにより、Firefox(および他のすべてのフラットパック!に注意してください)がUNIXソケットファイルを参照できるようになりました。後で判明するはずですが、このシンボリックリンクを他の場所に移動しても、これは機能しません(別のファイル名を指定しても、機能しなくなります。さまざまなことを試しました)。
ただし、~/.local/share/user-tmpfiles.d
は通常、シャットダウン時に削除されます。したがって、起動時またはユーザーログイン時に再作成する必要があります。私たちにとっては良いことですが、すでにそのためのツールです。 (もちろん、自動起動でシェルスクリプトでマングルすることもできますが、これは醜い方法です。)そのため、 systemd-tmpfiles を使用しています。 (実際には tmpfiles.d のmanページのほうが便利です。)
user-tmpfiles.d
にアクセスします。繰り返しますが、systemd-tmpfiles
ディレクトリがまだ存在していない可能性が高くなります。もしそうなら...まあ...あなたは何をすべきか知っています...systemd-tmpfiles
が変更を適用して構成ファイルを作成できるようになります。Hooray!:その後、KeePassXC flatpakを起動し、その後Firefoxに接続すると、接続できるはずです。 :tada:
以下の「既存の問題」セクションに注意してください。
$XDG_RUNTIME_DIR/kpxc_server
ファイルを表示できません。ifファイル(それぞれのシンボリックリンクターゲット)がまだ存在しません。実際には、これは1つの大きな欠点になります:あなたは常にする必要があります開始KeePassXCbeforeFirefox。flatpak run org.keepassxc.KeePassXC
など)は機能しない可能性があります。これを機能させるには、シンボリックリンクを再度削除してください。about:debugging
を使用してアドオンの内部にアクセスします。 [email protected]
はアドオンIDです。失敗した試行も実際に記録します。プロキシを開始できない場合とプロキシを開始できる場合では結果が異なります(ログと目に見える)が、接続が成功しなかった場合(UNIXソケットがそこにないためなど)に注意してください。flatpak run --command=/bin/sh org.mozilla.firefox
のようなものを使用します。cat
それだけで、cat
がリソースを見つけられないという奇妙なエラーが表示されます機能するもの機能しない機能:将来のソリューションおよびより良い™回避策のために保持されます。
$XDG_RUNTIME_DIR/app
内のすべてのものは高度にサンドボックス化されています。フラットパックのオーバーライドを使用しても、Firefoxフラットパックに../org.keepassxc.KeePassXC
ディレクトリのコンテンツを読み取れませんでした。クレイジーなシンボリックリンクがあっても、それはそれ自身のディレクトリです。 (試してみてください、おそらくあなたはそれを作るでしょう!少なくともあなたは何かを学びます。:wink :.)それを理解するにはかなりの時間がかかりました。
私はこの回避策の改善を続け、 このGitHubの問題 で解決策を見つけようとします。興味があれば、フォローするのが一番です。
私はこの質問と回答に Fedoraコミュニティ および Flathubフォーラム をクロスポストしました。