Firejailを使用してmanを実行するためのカスタム設定ファイルを作成する

Firejailを使用してmanを実行するためのカスタム設定ファイルを作成する

使ってみよう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.6find /lib -name "*libtinfo*"結果がどこで使用されているかが見つかると、行/lib/x86_64-linux-gnu/に含まれます。private-lib

private-binandで始まる行を削除すると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

関連情報