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

관련 정보