web-dev-qa-db-ja.com

どうすればfirejailを介してローカルアプリケーションを実行できますか?

Debianパッケージをローカルにインストールしました。私はランダムにOperaを選択し、dkpg -x opera-x.y.z.deb ~/bin/opera_packageを介して抽出し、ユーザーの~/binフォルダー(ユーザーのパスにあります)にシンボリックリンクを作成しました。

サイドファイアジェイルで走ろうとしています

$ firejail opera

Reading profile /etc/firejail/opera.profile
Reading profile /etc/firejail/disable-mgmt.inc
Reading profile /etc/firejail/disable-secret.inc
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/whitelist-common.inc
Parent pid 14762, child pid 14763

Child process initialized
/bin/bash: opera: command not found

parent is shutting down, bye...

(ホームフォルダからの)絶対パスを使用して実行しようとすると:

$ firejail /bin/local_packages/opera/usr/lib/x86_64-linux-gnu/opera/opera
Reading profile /etc/firejail/opera.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-programs.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/whitelist-common.inc
Parent pid 15796, child pid 15797
Child process initialized
/bin/bash: /bin/local_packages/opera/usr/lib/x86_64-linux-gnu/opera/opera: No such file or directory

Parent is shutting down, bye...

ブラウザのGUIは起動せず、CLIはプロセスDOAを報告します。 disable-common.incを調整する必要があると思います

# grep -Rin 'bin' .
./disable-common.inc:125:# The user ~/bin directory can override commands such as ls
./disable-common.inc:126:read-only ${HOME}/bin

私の質問:

  • どうすればfirejailを介してローカルアプリケーションを実行できますか?
  • ローカルアプリのプロファイルはありますか?
  • Disable-common.profileを編集する必要がありますか?
  • フォルダを許可するCLオプションはありますか?
  • ~/bin/とは別のフォルダを選択するだけですか?

私の目標:

そうしたいです...

  1. コンパイル後にgithub.comから複製されたサンドボックスアプリケーション
  2. ソースとバイナリの両方をユーザーフォルダに保存します
  3. いつでもSudoする必要はありません(firejailのインストール以外)
5
Rick

Firejailは確かにこれを箱から出して行うことができるはずであり、私はそれを自分でこのように使用しています。 firejail bashを実行して、問題の実行可能ファイルが表示されるかどうかを確認してください。また、operaは、環境をセットアップし、firejailによって隠されていることが判明した別のバイナリを実行するシェルスクリプトである可能性があります。

1
L29Ah

Firejail用に提供されているドキュメントが利用可能です ここ 。残念ながら、それはあまり包括的ではなく、ユーザーガイドのようなものです。

L29Ahからの回答 は、これを行う方法を理解するのに十分な情報を提供してくれましたが、回答が有用な例や詳細情報を提供していないのは残念です。だから私はすべての質問に答えて、これを行うためのいくつかの実際の方法を示します。

  • ローカルアプリのプロファイルはありますか?ソースコードで を見ると、firejailはの最初の引数からコマンド名を抽出します次の方法で実行するように指示したコマンドライン:最初に、見つかった最初の空白文字でその引数の文字列値を切り捨て、次にパス内の先頭のディレクトリコンポーネントをすべて削除します。したがって、コマンド 'firejail/home/me/Various/"commandName commandNameSecondWord"'は、 "commandName.profile"というプロファイルを検索します。/usr/binのようなシステムディレクトリに対して、$ HOMEの下から実行されるプログラムには特別な処理はありません。コマンドラインで1つ以上の「--profile = ...」オプションを使用して、これらすべてをバイパスすることもできます。
  • disable-common.profileを編集する必要がありますか?いいえ。まず、このファイルは他のfirejailプロファイルに含まれているため、編集することはお勧めしません。次に、このファイルが含まれていても、特定のローカルプログラムの実行に問題はありませんでした。第三に、そのファイルの何かに問題がある場合は、それを含まないカスタムプロファイルを作成する必要があります。とにかくその一部が必要な場合は、それらをカスタムプロファイルにコピーするだけです。
  • 〜/ bin /とは別のフォルダを選択するだけですか?いいえ、もっと複雑です。
  • フォルダを許可するCLオプションはありますか?はい、これを行うには多くの方法があります。ただし、通常は、実行している特定のプログラムのプロファイルを作成し、それを$ HOME/.config/firejailに配置します。十分かもしれない「迅速で汚い」コマンドライン引数は「--private-home = ...」であり、これはトップレベルのファイルとディレクトリをサンドボックスファイルシステムにコピーできます。コピーされるファイルのサイズには500MBの制限があり、ファイルをコピーするとサンドボックス化されたアプリケーションの起動が遅くなることに注意してください。
  • firejailを介してローカルアプリケーションを実行するにはどうすればよいですか?アプリケーションごとに異なる構成が必要になる可能性があるため、この質問は少し一般的です(firejailが提供される理由全体)プロファイルのライブラリ全体をすぐに使用できます)。構成は、アプリケーションをどのように制限するか(または制限しないか)によって異なります。ただし、$ HOME/.local_fjというホームディレクトリの最上位ディレクトリにアプリケーションをインストールし、カスタムコマンドプロファイルに「private-home.local_fj」を追加することで、アプリケーションを実行できました(上記の500MBの制限は引き続き適用されます) 。もう1つの可能性は、「ホワイトリスト$ {HOME} /。local_fj/programInstallDir」を使用することです。いずれの場合も、「noexec」コマンドが、プログラムが存在するディレクトリからのプログラムの実行をブロックしないようにしてください。 (注:私はfirejailのエキスパートユーザーではありません---これを行う方法が他にもあることはほぼ確実ですが、私は慣れていません。)
0
Ron Kaminsky