「Firejail」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
201行目: 201行目:
 
== Xorg と合わせて Firejail を使う ==
 
== Xorg と合わせて Firejail を使う ==
   
{{Accuracy|Why does sandboxing X11 require DNS?}}
+
{{Accuracy|X11 をサンドボックス化するのになぜ DNS が必要なのか?}}
   
  +
[[Xorg]] 上では、如何なるプログラムもすべてのキーボード入力をリッスンでき、すべてのスクリーンを録画できます。この挙動は特にブラウザのような、潜在的に悪意のある入力を扱う複雑なプログラムにおいて問題となります。X11 をサンドボックス化する目的はこの挙動を制限することです。
On [[Xorg]] any program can listen to all keyboard input and record all screens. The purpose of sandboxing X11 is to restrict this behavior, which is especially problematic for complex programs working with potentially malicious input like browsers.
 
   
  +
[[Xephyr]] と [[Xpra]] を使えば [[Xorg]] をサンドボックス化できます。Xpra はクリップボードを完全にサポートしますが、ネストされた X11 セッションでは非常に顕著で恒久的なラグが発生するため、Xephyr を使用することが推奨されています。
[[Xephyr]] and [[Xpra]] allow you to sandbox Xorg. Although Xpra provides full clipboard support, it is recommended to use Xephyr due to the very notable and permanent lag with nested X11 sessions.
 
   
For a complete setup with (not ideal) clipboard support (clipboard is still always shared), see [[Gentoo:User:Sakaki/Sakaki's EFI Install Guide/Sandboxing the Firefox Browser with Firejail#Graphical Isolation via Xephyr|Sakaki's Gentoo guide]], especially the [[Gentoo:User:Sakaki/Sakaki's EFI Install Guide/Sandboxing the Firefox Browser with Firejail#Setting Up Clipboard Sharing and Display Rescaling for Xephyr|section about the clipboard and automatic rescaling]].
+
(理想的ではない)クリップボードサポート付き(クリップボードは常に共有されます)の完全なセットアップ方法については [[Gentoo:User:Sakaki/Sakaki's EFI Install Guide/Sandboxing the Firefox Browser with Firejail#Graphical Isolation via Xephyr|Sakaki's Gentoo guide]] を見てください。特に[[Gentoo:User:Sakaki/Sakaki's EFI Install Guide/Sandboxing the Firefox Browser with Firejail#Setting Up Clipboard Sharing and Display Rescaling for Xephyr|クリップボードと自動再スケーリングに関するセクション]]を見てください。
   
  +
または、クリップボードのサポートは必要ないがウインドウの管理が必要な場合、[[Openbox]] などのスタンドアローンな[[ウィンドウマネージャ]]をインストールしてください。
Alternatively, if clipboard support is not needed but windows need to be managed, install a standalone [[window manager]] such as [[Openbox]].
 
   
{{ic|xephyr-screen ''Width''x''Height''}} can be set in {{ic|/etc/firejail/firejail.config}} where {{ic|''Width''}} and {{ic|''Height''}} are in pixels and based on your screen resolution.
+
{{ic|xephyr-screen ''Width''x''Height''}} {{ic|/etc/firejail/firejail.config}} 内で設定できます。{{ic|''Width''}} {{ic|''Height''}} はピクセル単位で、スクリーンの解像度を元に設定します。
   
  +
サンドボックスを開くには:
To open the sandbox:
 
   
 
$ firejail --x11 --net=''device'' openbox
 
$ firejail --x11 --net=''device'' openbox
   
  +
{{ic|''device''}} はアクティブな[[ネットワークインターフェイス]]であり、DNS が機能するために必要です。その後、右クリックして、実行するアプリケーションを選んでください。
{{ic|''device''}} is your active [[network interface]], which is needed to ensure that DNS works. Then right click and select your applications to run.
 
   
{{Note|If you use [[Unbound]], [[dnsmasq]], [[Pdnsd]] or any other local resolver on 127.0.0.1, you would leave {{ic|1=--net=''device''}} out of the command as DNS should work automatically.}}
+
{{Note|[[Unbound]] [[dnsmasq]][[Pdnsd]]、あるいは 127.0.0.1 上で他のローカルのリゾルバを使用する場合、DNS が自動的に動作するはずなので {{ic|1=--net=''device''}} をコマンドから除いてください。}}
   
See the [https://firejail.wordpress.com/documentation-2/x11-guide/#configurexephyr Firejail Wordpress site] for a simpler guide.
+
似たようなガイドは [https://firejail.wordpress.com/documentation-2/x11-guide/#configurexephyr Firejail Wordpress サイト]を見てください。
   
  +
そのガイドによると:
According to the guide:
 
   
  +
:サンドボックスは標準的な X11 サーバを Xpra または Xephyr サーバで置き換えます。これにより、X11 キーボードロガーやスクリーンショットユーティリティがメインの X11 サーバにアクセスできなくなります。
:The sandbox replaces the regular X11 server with Xpra or Xephyr server. This prevents X11 keyboard loggers and screenshot utilities from accessing the main X11 server.
 
   
  +
以下の文章は不正確であることに注意してください:
Note that the statement:
 
   
  +
:抽象化ソケット {{ic|@/tmp/.X11-unix/X0}} を無効化する唯一の方法はネットワーク名前空間を使用することです。何らかの理由によりネットワーク名前空間を使用できない場合、抽象化ソケットはまだサンドボックスの内部から見えます。ハッカーはキーロガーやスクリーンショットプログラムをこのソケットにアタッチできます。
:The only way to disable the abstract socket {{ic|@/tmp/.X11-unix/X0}} is by using a network namespace. If for any reasons you cannot use a network namespace, the abstract socket will still be visible inside the sandbox. Hackers can attach keylogger and screenshot programs to this socket.
 
   
is incorrect, [[Xinit#xserverrc|xserverrc]] can be edited to {{ic|-nolisten local}}, which disables the abstract sockets of X11 and helps isolate it.
+
[[Xinit#xserverrc|xserverrc]] {{ic|-nolisten local}} のように編集できます。これにより、X11 の抽象化ソケットを無効化でき、X11 を隔離できます。
   
  +
=== ブラウザをサンドボックス化する ===
=== Sandboxing a browser ===
 
   
[[Openbox]] can be configured to start a certain browser at startup. {{ic|''program''.profile}} is the respective profile contained in {{ic|/etc/firejail}}, and {{ic|--startup "''command''"}} is the command line used to start the program. For example, to start Chromium in the sandbox:
+
[[Openbox]] は起動時に特定のブラウザを起動するように設定できます。{{ic|''program''.profile}} {{ic|/etc/firejail}} に含まれている個別のプロファイルで、{{ic|--startup "''command''"}} はプログラムを起動する際に用いるコマンドラインです。例えば、Chromium をサンドボックス内で起動する場合:
   
 
$ firejail --x11 --profile=/etc/firejail/chromium.profile openbox --startup "chromium"
 
$ firejail --x11 --profile=/etc/firejail/chromium.profile openbox --startup "chromium"

2022年5月26日 (木) 15:24時点における版

関連記事

Firejail は使いやすい SUID サンドボックスプログラムであり、Linux の名前空間や seccomp-bpf、Linux ケイパビリティを使うことで、信頼のおけないアプリケーションの実行環境を制限することにより、セキュリティ侵害のリスクを軽減します。

インストール

firejail または firejail-gitAUR パッケージをインストールしてください。Firejail で使用するためのGUIアプリケーション、firetools も用意されています。

ノート: Arch Linux の諸カーネルにおける user_namespaces(7) のサポートに関する情報は セキュリティ#アプリケーションのサンドボックス化 を見てください。Firejail は user_namespaces を使用できます(たとえ無効化されていたとしても)
警告: アップストリームでは徐々にホワイトリスト制が採用されつつありますが(/etc/firejail/firefox.profile を参照)、提供されているプロファイルの殆どがまだブラックリスト制に強く依存しています。これは、プロファイルによって明示的に禁止されていなければ、アプリケーションにアクセスを許してしまうことを意味します。例えば、btrfs のスナップショットを /mnt/btrfs に保存しているとします。隔離されたプログラムは $HOME/.ssh へのアクセスは禁じられているでしょうが、/mnt/btrfs/@some-snapshot/$HOME/.ssh へはアクセスできてしまいます。使用するプロファイルを検査するようにしてください。#プロファイルのテストを参照。

設定

ほとんどのユーザはカスタムの設定をする必要はないでしょう。その場合、#使用方法 に進むことができます。

Firejail は、サンドボックス内で実行されるアプリケーションのそれぞれに対してセキュリティ保護を設定するプロファイルを使用します。デフォルトのプロファイルは /etc/firejail/application.profile で見ることができます。含まれていないアプリケーションに対するカスタムのプロファイルが必要な場合や、デフォルトのプロファイルを変更したい場合、新しいルールや、デフォルトのプロファイルのコピーを ~/.config/firejail/ ディレクトリ内に置くことができます。1つのアプリケーションに対して複数のカスタムのプロファイルを設定することもでき、複数のアプリケーションの間で同一のプロファイルを共有させることもできます。

Firejail に特定のアプリケーションのプロファイルが存在しない場合、システム全体の制限付きデフォルトプロファイルを使用します。これにより、カスタムのプロファイルや制限を緩めたプロファイルを先に作成しないと、アプリケーションが期待通りに動作しない可能性があります。

firejail-profile(5) を参照してください。

使用方法

そのアプリケーションに対する firejail のデフォルトの保護(デフォルトのプロファイル)を使用してアプリケーションを実行するには、以下を実行します:

$ firejail <program name>

デフォルトプロファイルへの1回限りの追加は、コマンドラインオプションとして追加できます(マニュアルページを参照)。たとえば、seccomp 保護を使用して okular を実行するには、次のコマンドを実行します:

$ firejail --seccomp okular

1つのプログラムにデフォルト以外の複数のプロファイルを定義できます。プロファイルファイルを作成したら、次のコマンドを実行して使用できます:

$ firejail --profile=/absolute/path/to/profile <program name>

デフォルトで Firejail を使う

Firejail のプロファイルを持つすべてのアプリケーションに対して Firejail を使用するようにするには、firecfg ツールを sudo で実行してください:

$ sudo firecfg

このツールは、Firejail がデフォルトのプロファイルや自己作成したプロファイルを持つすべてのアプリケーションに対して、/usr/bin/firejail を指すシンボリックリンクを /usr/local/bin 内に作成します。firecfg(1)/etc/firejail/firecfg.config にリストされているプログラムに対してしかシンボリックリンクを作成しないことに注意してください。特定の CLI プログラムはそのリストに存在しません:例えば tarcurlgit。これらは手動でシンボリックリンクを作成する必要があります。これらのプログラムがリストに載っていない理由は Profiles not in firecfg #2507 を見てください。firecfg はさらに、現在のユーザを Firejail のユーザアクセスデータベースに追加し、/usr/share/applications/*.desktop ファイルをチェックします。そのファイルに実行ファイルへのフルパスが含まれている場合、フルパスを削除し、そのファイルを ~/.local/share/applications/ にコピーします。これにより、/usr/local/bin 内のシンボリックリンクが使用されることが保証され、Firejail がバイパスされるのを防止します。もし、。sudo がシステムにインストールされていない場合、以下のように root として実行する必要があります:

# firecfg

そして、以下を通常ユーザとして実行してください:

$ firecfg --fix

これにより .desktop ファイルが修正されます。

場合によっては、Firejail を明示的に呼び出すようにするために ~/.local/share/applications/ にある .desktop ファイルの Exec= 行を手動で変更する必要があるでしょう。

ヒント: pacman の操作のたびに、firecfg を自動で実行するには pacman フック を使用することができます:
/etc/pacman.d/hooks/firejail.hook
[Trigger]
Type = Path
Operation = Install
Operation = Upgrade
Operation = Remove
Target = usr/bin/*
Target = usr/local/bin/*
Target = usr/share/applications/*.desktop

[Action]
Description = Configure symlinks in /usr/local/bin based on firecfg.config...
When = PostTransaction
Depends = firejail
Exec = /bin/sh -c 'firecfg >/dev/null 2>&1'

アプリケーションごとに手動で設定するには以下を実行してください:

# ln -s /usr/bin/firejail /usr/local/bin/application
ノート:
  • PATH 環境変数では、/usr/local/bin/usr/bin の前に設定する必要があります。
  • カスタムの Firejail の設定を使用してシンボリックリンクのプログラムを実行するには、#使用方法で書かれてあるように、単純に firejail を前につけて実行してください。
  • デーモンに対しては、systemd のユニットファイルを上書きして、デーモンが Firejail を呼び出すようにする必要があります。systemd#ユニットファイルの編集 を参照してください。
  • gzipxz へのシンボリックリンクは makepkglibfakeroot.so をプリロードする機能と干渉します。BBS#230913 を参照してください。

hardened_malloc を使う

hardened_mallocAUR は glibc の malloc() アロケータを堅牢化した実装です。もともとは Android 用に記述されましたが、デスクトップ用に拡張されました。glibc にはまだ統合されていませんが、LD_PRELOAD で選択して使用することができます。hardened_malloc を使用して Firejail 内でアプリケーションを実行する適切な方法は以下のとおりです。永続的に hardened_malloc を使用するには、お望みのアプリケーションに対するエントリを /usr/local/bin 内に作成する必要があります。

$ firejail --env=LD_PRELOAD='/usr/lib/libhardened_malloc.so' /usr/bin/firefox

または、以下をカスタムプロファイルに追加してください:

env LD_PRELOAD=/usr/lib/libhardened_malloc.so

hardened_malloc を調整するのに使える様々な環境変数や設定は github のページで見られます

AppArmor のサポートを有効化する

0.9.60-1 以降、 Firejail は一般的な AppArmor プロファイルを通じて AppArmor との直接的な統合をサポートしてきました。インストール中に、プロファイル firejail-default は、/etc/apparmor.d ディレクトリに配置され、root として次のコマンドを実行してカーネルにロードする必要があります:

# apparmor_parser -r /etc/apparmor.d/firejail-default

firejail(1) § APPARMOR を参照してください。

apparmor プロファイルのローカルカスタマイズは、/etc/apparmor.d/local/firejail-local ファイルを編集することでサポートされます。

AppArmor はすでに 多くの Firejail プロファイルで有効化されています。AppArmor による制限を Firejail のセキュリティプロファイル上で有効化する方法はいくつかあります:

  • --apparmor フラグをコマンドラインを通じて Firejail に渡す。例: $ firejail --apparmor firefox
  • カスタムプロファイルを使用し、apparmor コマンドを追加する。
  • /etc/firejail/globals.local で AppArmor をグローバルに有効化し、必要に応じて /etc/firejail/<ProgramName>.local 内で ignore apparmor を使用して無効化する。

上記の方法で AppArmor を有効化すると必ず /etc/apparmor.d/firejail-default が使用されることに注意してください。あるアプリケーションに対しては特定の AppArmor プロファイルを使いたい場合は、上記の ignore apparmor コマンドを使用する必要があります。しかし、Firejail と AppArmor を同一のアプリケーションに対して使用するとしばしば問題が引き起こされるので、これは推奨されません

Firejail が使用中かを確認する

$ firejail --list

より総合的な出力を得るには:

$ firejail --tree

カスタムのプロファイルを作成する

ホワイトリストとブラックリスト

blacklist は、ほとんどのプロファイルでインクルードされている様々な /etc/firejail/*.inc ファイルで頻繁に使用されています。blacklist は寛容的です:

  • あるディレクトリやファイルへのアクセスを拒否し、その他は許可する: blacklist <directory/file>
  • すでにブラックリストに載っているディレクトリやファイルのブラックリスト化を無効化/取り消し/無視する。例: *.inc ファイルで noblacklist <directory/file>

blacklist がプロファイルの中に現れる順番は重要です: noblacklist ディレクティブは blacklist ディレクティブよりに追加しなければなりません。

whitelist明示的にホワイトリスト化されているもの以外をすべてブロックします。ランダムな場所へのアクセスを必要とするアプリケーションのプロファイル内では使用すべきではありません(例: テキストエディタ、画像ビューア/エディタ)。

  • あるディレクトリやファイルへのアクセスを許可し、その他を禁止する: whitelist <directory/file>
  • すでにホワイトリストに載っているディレクトリやファイルのホワイトリスト化を無効化/取り消し/無視する。例: *.inc ファイルで nowhitelist <directory/file>

whitelist がプロファイルの中に現れる順番は重要です: nowhitelist ディレクティブは whitelist ディレクティブよりに追加しなければなりません。

ホワイトリスト化は常にブラックリスト化よりも前に行われます。言及したように、whitelist ディレクティブは対象以外すべてをブラックリスト化します。ゆえに、whitelist ディレクティブが存在しない場合や、ある whitelist ディレクティブが緩すぎる場合、blacklist ディレクティブはフォールバックとなります。

(no)blacklist(no)whitelist ディレクティブはしばしば組み合わせて使用されます。例: /etc/firejail/disable-programs.inc (すべてのプロファイルでインクルードされます)は以下のディレクトリを含んでいます:

blacklist ${HOME}/.mozilla

これにより、Firejail でサンドボックス化されているすべてのアプリケーションでそのディレクトリへのアクセスはブロックされます。/etc/firejail/firefox.profile はこのディレクティブを無効化しなければならず、かつ whitelist ディレクティブを追加してそのディレクトリへのアクセスを許可しなければなりません(Firefox プロファイルはホワイトリストプロファイルであるため):

noblacklist ${HOME}/.mozilla
whitelist ${HOME}/.mozilla

プロファイルの記述法

基本的な手順は以下の通りです:

  1. /usr/share/doc/firejail/profile.template/etc/firejail/~/.config/firejail/ へコピーし、ファイル名を ProfileName.profile と変更してください。ProfileName はサンドボックス化する実行ファイルの名前と同じであるべきです。
  2. include PROFILE.local の行を include ProfileName.local に変更してください。
  3. 対象のアプリケーションがサンドボックス内で実行できることを確かめながら、徐々に様々なオプションをコメントアウト/アンコメントしてください。テンプレート内のセクションの順番は変更しないでください。
  4. Firejail のプロファイルで利用可能なオプションの詳細な説明は firejail-profile(5) man ページで見ることができます。
  5. プロファイルにセキュリティホールがないかテストするには #プロファイルのテスト を見てください。

ホワイトリストプロファイルを作成したい場合(例: whitelist ディレクティブを含むプロファイル)、以下のコマンドを実行することで、許可される場所のホワイトリストを作成することができます。

$ firejail --build application

ホワイトリストプロファイルはランダムな場所へのアクセスを必要とするアプリケーション(テキストエディタやファイルマネージャなど)においては問題が発生することを留意しておいてください。

ノート:
  • 考え方としては、利便性を保ちつつ、可能な限り制限することです。この考え方では、潜在的に危険な機能を犠牲にしたり、大雑把なやり方を変える必要があるかもしれません。
  • デフォルトでは、seccomp のフィルタはブラックリストを使用して動作します(/usr/share/doc/firejail/syscalls.txt で見ることができます)。seccomp.keep を使ってアプリケーション用のフィルタのカスタムホワイトリストを作成することができます[1]。これらの手順を自動化する便利な方法は /usr/lib/firejail/syscalls.sh を実行することです。システムコールが存在しないことでアプリケーションがまだ動作しない場合、/usr/share/doc/firejail/syscalls.txt の下にある指示に従う必要があります。

ローカルのカスタムプロファイルを永続化する

プロファイルの標準的なレイアウトには .local ファイルをインクルードすることにより永続的なローカルのカスタマイズを行う機能が含まれています[2]。基本的に、公式にサポートされているプロファイルには include ProgramName.localinclude globals.local という行が含まれています。これらの *.local ファイルは /etc/firejail~/.config/firejail 下に配置されているかもしれません。優先順位はどのファイルが先に読まれるかによって決定されるので、これはローカルのカスタマイズを作成する非常に強力な方法になります。例えば、この firejail の質問では、グローバルに Apparmor を有効化してインターネットの接続を無効化するには、/etc/firejail/globals.local を作成/編集して以下の行を含めるだけです:

# enable Apparmor and disable Internet globally
net none
apparmor

そして、例えば "curl" はインターネットに接続出来るようにしつつ、Apparmor の制限を維持するには、/etc/firejail/curl.local を作成/編集して以下の行を含めます:

# enable internet for curl
ignore net

curl.localglobals.local より前に読み込まれるため、ignore netnet none をオーバーライドします。そして、また、上記の変更は将来のアップデートでも維持されます。

プロファイルのテスト

Firejail のプロファイルをテスト・監査する際には以下が役に立つかもしれません:

  1. firejail --debug $Program > $PathToOutputFile はサンドボックスの詳細な分析を行います。
  2. firejail --debug-blacklists $Programfirejail --debug-whitelists $Program は現在のプロファイルでブラックリスト化/ホワイトリスト化されているディレクトリおよびファイルを表示します。
  3. firejail --debug-caps は現在の Firejail ソフトウェアビルドでサポートされているケーパビリティのリストを出力します。これは caps whitelist を作成する際に便利です。
  4. firejail --help--debug のオプションの完全なリストを出力します。
  5. firemon PID は実行中のプロセスを監視します。詳細は firemon --help を見てください。
  6. sudo jailcheck を実行するとサンドボックスの実行テストが行われます。詳細は jailcheck(1) の man ページを見てください。
  7. どの標準セキュリティ機能が使用されているかを確かめる際には checksec も便利です。

Xorg と合わせて Firejail を使う

この記事またはセクションの正確性には問題があります。
理由: X11 をサンドボックス化するのになぜ DNS が必要なのか? (議論: トーク:Firejail#)

Xorg 上では、如何なるプログラムもすべてのキーボード入力をリッスンでき、すべてのスクリーンを録画できます。この挙動は特にブラウザのような、潜在的に悪意のある入力を扱う複雑なプログラムにおいて問題となります。X11 をサンドボックス化する目的はこの挙動を制限することです。

XephyrXpra を使えば Xorg をサンドボックス化できます。Xpra はクリップボードを完全にサポートしますが、ネストされた X11 セッションでは非常に顕著で恒久的なラグが発生するため、Xephyr を使用することが推奨されています。

(理想的ではない)クリップボードサポート付き(クリップボードは常に共有されます)の完全なセットアップ方法については Sakaki's Gentoo guide を見てください。特にクリップボードと自動再スケーリングに関するセクションを見てください。

または、クリップボードのサポートは必要ないがウインドウの管理が必要な場合、Openbox などのスタンドアローンなウィンドウマネージャをインストールしてください。

xephyr-screen WidthxHeight/etc/firejail/firejail.config 内で設定できます。WidthHeight はピクセル単位で、スクリーンの解像度を元に設定します。

サンドボックスを開くには:

$ firejail --x11 --net=device openbox

device はアクティブなネットワークインターフェイスであり、DNS が機能するために必要です。その後、右クリックして、実行するアプリケーションを選んでください。

ノート: UnbounddnsmasqPdnsd、あるいは 127.0.0.1 上で他のローカルのリゾルバを使用する場合、DNS が自動的に動作するはずなので --net=device をコマンドから除いてください。

似たようなガイドは Firejail Wordpress サイトを見てください。

そのガイドによると:

サンドボックスは標準的な X11 サーバを Xpra または Xephyr サーバで置き換えます。これにより、X11 キーボードロガーやスクリーンショットユーティリティがメインの X11 サーバにアクセスできなくなります。

以下の文章は不正確であることに注意してください:

抽象化ソケット @/tmp/.X11-unix/X0 を無効化する唯一の方法はネットワーク名前空間を使用することです。何らかの理由によりネットワーク名前空間を使用できない場合、抽象化ソケットはまだサンドボックスの内部から見えます。ハッカーはキーロガーやスクリーンショットプログラムをこのソケットにアタッチできます。

xserverrc-nolisten local のように編集できます。これにより、X11 の抽象化ソケットを無効化でき、X11 を隔離できます。

ブラウザをサンドボックス化する

Openbox は起動時に特定のブラウザを起動するように設定できます。program.profile/etc/firejail に含まれている個別のプロファイルで、--startup "command" はプログラムを起動する際に用いるコマンドラインです。例えば、Chromium をサンドボックス内で起動する場合:

$ firejail --x11 --profile=/etc/firejail/chromium.profile openbox --startup "chromium"

ヒントとテクニック

Firejail をより堅牢にする

The security risk of Firejail being a SUID executable can be mitigated by adding the line

force-nonewprivs yes

to /etc/firejail/firejail.config. However, this can break specific applications. On Arch Linux, VirtualBox doesn't start anymore. With the linux-hardened kernel Wireshark and Chromium-based browsers are also affected.

Further hardening measures include creating a special firejail group with adding the user to that group and changing the file mode for the firejail executable. For details see here.

スペースを含むパス

If you need to reference, whitelist, or blacklist a directory within a custom profile, such as with palemoonAUR, you must do so using the absolute path, without encapsulation or escapes:

/home/user/.moonchild productions

プライベートモード

Firejail also includes a one time private mode, in which no mounts are made in the chroots to your home directory. In doing this, you can execute applications without performing any changes to disk. For example, to execute okular in private mode, do the following:

$ firejail --seccomp --private okular

実験的な改良されたツール

Some of the Firejail developers recognized issues with the tools it ships with and made their own, improved versions of them.

警告: As stated in some of the projects descriptions, these tools might be experimental.

トラブルシューティング

Firejail can be hard to debug. The symptoms of a misconfigured or otherwise unfitting setup range from random segmentation faults and hangs in the applications to simple error messages.

Some applications are harder to sandbox than others. For example web browsers and Electron applications tend to need more troubleshooting than others since there is much that can go wrong. It is crucial to check the FAQ and open issues first, since debugging can take quite some time.

ヒント: Also see the upstream wiki, especially its page on debugging Firejail.

Remove Firejail symbolic links

To remove Firejail created symbolic links (e.g. reset to default):

# firecfg --clean

If you do not want to use Firejail for a specific application (e.g., because you prefer to rather confine it with AppArmor), you have to manually remove the related symbolic link:

# rm /usr/local/bin/application

As a subsequent execution of firecfg would re-add the removed symlinks, the respective applications should be commented in /etc/firejail/firecfg.config.

Verify if any leftovers of Desktop entries are still overruled by Firejail.

PulseAudio

ノート: Using PulseAudio version 9.0 or later should fix this issue.

If Firejail causes PulseAudio issues with sandboxed applications [3], the following command may be used:

$ firecfg --fix-sound

This commands creates a custom ~/.config/pulse/client.conf file for the current user with enable-shm = no and possible other workarounds.

hidepid

If the system uses the hidepid kernel parameter, Firemon can only be run as root. This, among other things, will cause problems with the Firetools GUI incorrectly reporting "Capabilities", "Protocols" and the status of "Seccomp"[4].

Proprietary Nvidia drivers

Some users report problems when using Firejail and proprietary graphic drivers from NVIDIA (e.g. [5], [6] or [7]). This can often be solved by disabling the noroot Firejail option in the application's profile file.

--net options and Linux kernel >=4.20.0

There is a bug on firejail 0.5.96 with linux >= 4.20.0, see [8] and [9]

Example error message:

$ firejail --noprofile --net=eth0 ls
Parent pid 8521, child pid 8522
Error send: arp.c:182 arp_check: Invalid argument
Error: proc 8521 cannot sync with peer: unexpected EOF
Peer 8522 unexpectedly exited with status 1

Warning: Cannot confine the application using AppArmor

この記事あるいはセクションは #Enable AppArmor support と合併することが議論されています。
ノート: The requirement to enable AppArmor should be made explicit in the previous text. And note that Manjaro references are irrelevant. (議論: トーク:Firejail#)

For some applications (e.g. Firefox [10]) starting with Firejail may result in warnings like:

Warning: Cannot confine the application using AppArmor.
Maybe firejail-default AppArmor profile is not loaded into the kernel.
As root, run "aa-enforce firejail-default" to load it.

When running the suggested command you might see:

ERROR: Cache read/write disabled: interface file missing. (Kernel needs AppArmor 2.4 compatibility patch.)

This means that AppArmor is not enabled as a kernel parameter, so you have to set it according to AppArmor#Installation.

/usr/bin/patch: **** Can't open patch file

This means the PKGBUILD uses patch with the -i argument so a whitelist for $SRCDEST in /etc/makepkg.conf is needed.

Create the override patch.local with the value of your $SRCDEST:

whitelist /path/to/makepkg/sources

Changing the PKGBUILD to use stdin also works:

patch -p1 < ../file.patch

Graphical applications hang on start with AMDGPU

このセクションは削除するべきか検討が行われています。
Reason: This should be fixed since 2021-06 with the release of 0.9.66 (議論: トーク:Firejail#)

Some graphical applications, e.g. Firefox and mpv, would hang on start when using AMDGPU with Mesa >= 19.3.4. See [11].

This should be fixed as of firejail 0.9.66, as kcmp is not dropped by default anymore (see also [12]). If this still happens, please report it.

As a workaround, for all affected applications, add seccomp !kcmp to their profiles in etc/firejail. If they already have a seccomp statement, you can concatenate them as a comma-separated list, eg seccomp !chroot,!kcmp.

Daemonizing/backgrounded processes hang

There is a known issue that prevents processes from daemonizing. There is currently no solution to this except not using Firejail to sandbox the affected application. Because it is a bug within Firejail, no configuration can solve this issue. Fortunately the applications mentioned in the issue usually do not have a large attack surface, so the risks of running them without a sandbox are comparatively low.

参照