使ってみようfirejail
(バージョン0.9.58.2)マイコンピュータDebian Stable
のアプリケーションサンドボックス用です。私はアプリケーションごとにカスタムプロファイルを作成することが可能であることを知っていますが、これは成功しませんでした。
現在私はカスタムman.profile
ファイルを作成しようとしています。簡単だと思います。。私の~/.config/firejail/
ディレクトリに、次の内容を含むファイルを入れました。
noblacklist /usr/share/man/
noblacklist /usr/lib/man-db/
include whitelist-var-common.inc
seccomp
shell none
private-bin sed,less,man,groff,nroff,tbl,bash
private-dev
ただし、実行すると、man less
ページャが空のページのみを開き、閉じた後に次のエラーメッセージが表示されます。
Reading profile /home/$USER/.config/firejail/man.profile
Reading profile /etc/firejail/whitelist-var-common.inc
Parent pid 42020, child pid 42045
7 programs installed in 10.65 ms
Child process initialized in 10.69 ms
/usr/bin/man: command exited with status 255: (cd /usr/share/man && /usr/lib/man-db/zsoelim) | (cd /usr/share/man && /usr/lib/man-db/manconv -f UTF-8:ISO-8859-1 -t ISO-8859-1//IGNORE) | (cd /usr/share/man && tbl) | (cd /usr/share/man && nroff -mandoc -rLL=189n -rLT=189n -Tutf8)
私は何が間違っていましたか?どんなアイデアやアドバイスもありがとうございます!
アップデート(@@artem-s-tashkinovに感謝):実行strace -f -e file -o /tmp/man.log man less
(最初の実行後sudo firecfg --clean
)し、出力を調べると、呼び出し時に/tmp/man.log
他のいくつかのファイルが読み込まれたことがわかりましたman less
。だから、次から始めて、次のものを含めるようにprivate-bin
行を更新しました。private-lib
private-bin sed,less,man,groff,nroff,tbl,bash,terminfo,locale
private-lib /usr/lib/man-db,/usr/share/groff,/usr/share/locale,/usr/share/terminfo,/usr/share/man,/usr/lib/x86_64-linux-gnu,/lib/x86_64-linux-gnu,/usr/lib/charset.alias,/etc/ld.so.preload,/etc/ld.so.cache,/etc/manpath.config,/etc/suid-debug,/etc/terminfo,/etc/sysless,/etc/localtime
しかし、結果はまだ否定的です。man less
次のエラーが発生します。
bin/bash: error while loading shared libraries: libtinfo.so.6: cannot open shared object file: No such file or directory
/usr/bin/man: command exited with status 127: (cd /usr/share/man && /usr/lib/man-db/zsoelim) | (cd /usr/share/man && /usr/lib/man-db/manconv -f UTF-8:ISO-8859-1 -t UTF-8//IGNORE) | (cd /usr/share/man && preconv -e UTF-8) | (cd /usr/share/man && tbl) | (cd /usr/share/man && nroff -mandoc -rLL=189n -rLT=189n -Tutf8)
libtinfo.so.6
find /lib -name "*libtinfo*"
結果がどこで使用されているかが見つかると、行/lib/x86_64-linux-gnu/
に含まれます。private-lib
private-bin
andで始まる行を削除するとprivate-lib
機能します(ただし、追加のサンドボックスなしでは明らかに)。
答え1
strace -fF -e file -o /tmp/man.log man less
コマンドがFirejailで機能するために追加のディレクトリを含める必要があるかどうかを確認するには、それを実行して起動します。
少なくとも私のFedora 32では、次の追加のディレクトリが必要です。
- /usr/share/groff
- /usr/share/locale - すでに含まれている可能性があります。
whitelist-var-common.inc
- /usr/share/terminfo