firejailとはLiunx名前空間やseccomp-bpfなどを利用したSUIDサンドボックス。信頼できないアプリなどを安全に実行するのに便利。試しに使ってみたときのメモなので内容薄め。
インストール
レポジトリから入れてもいいのだが、大抵古いのでここはGitからソースを持ってきてビルド&インストールしてみる。
$ git clone https://github.com/netblue30/firejail $ cd firejail $ ./configure $ make $ sudo make install-strip
使ってみる
firejailのあとにコマンドを入力。これによりサンドボックス環境下でプログラムが実行される。
$ firejail firefox $ firejail ssh -i .ssh/id_ecdsa hogehoge@example.com
もしそのプログラムに対応したプロファイルがある場合はそのプロファイルに従って動作する(プロファイルは上の手順でインストールした場合/usr/local/etc/firejail内に入っている)。
コマンドが入力されていない場合はサンドボックス環境でシェルが実行される。ちなみに、サンドボックス環境下では通常、一部ディレクトリ(/bootや/sbinなど)やファイル(ログファイルなど)へのアクセスが禁止される。
$ firejail $ cd /sbin bash: cd: /sbin: 許可がありません $ cat /var/log/syslog cat: /var/log/syslog: そのようなファイルやディレクトリはありません
firejailはオプションによりサンドボックス化する範囲などを変えることができる。
自分のホームディレクトリをサンドボックス化≒ほぼ真っ白な状態で起動する場合は--privateオプションをつける。
またホームディレクトリを指定する場合は--privateオプションにディレクトリを渡せばよい。
$ firejail --private firefox $ firejail --private=./private-fx firefox
Xアプリケーションをサンドボックス化されたXサーバーで動かす場合は--x11オプションをつける。
XpraかXephyrのインストールが必要。
$ firejail --x11 xcalc
AppImageをfirejailを通して実行することも可能。この場合は--appimageオプションを使用する。
$ firejail --appimage ./krita-3.2.0-x86_64.appimage
注意
- PulseAudio 7.0/8.0環境の場合、サンドボックス化されたアプリでは正常に音が出ない場合がある。
- firecfg --fix-soundでPulseAudioの設定ファイルにenable-shm = noの設定を書き込む。
- 一部アプリは正常に動作しない場合がある。また文字化けを起こすこともある(eogやevinceなどで確認)。
- /etc/ld.so.preload云々でAppArmorが怒る場合は/etc/ld.so.preloadを消す。
- firejailでの実行の過程(traceオプションがある場合?)で/etc/ld.so.preloadが生成される。