데비안 패키지를 로컬에 설치했습니다. 나는 무작위로 Opera를 선택하고 추출한 다음 dkpg -x opera-x.y.z.deb ~/bin/opera_package
내 사용자 폴더(사용자 경로에 있음) ~/bin
에 심볼릭 링크를 만들었습니다 .
측면 화재 감옥에서 실행해보십시오
$ firejail opera
Reading profile /etc/firejail/opera.profile
Reading profile /etc/firejail/disable-mgmt.inc
Reading profile /etc/firejail/disable-secret.inc
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/whitelist-common.inc
Parent pid 14762, child pid 14763
Child process initialized
/bin/bash: opera: command not found
parent is shutting down, bye...
내 홈 폴더의 절대 경로를 사용하여 실행하려고 하면 다음과 같습니다.
$ firejail /bin/local_packages/opera/usr/lib/x86_64-linux-gnu/opera/opera
Reading profile /etc/firejail/opera.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-programs.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/whitelist-common.inc
Parent pid 15796, child pid 15797
Child process initialized
/bin/bash: /bin/local_packages/opera/usr/lib/x86_64-linux-gnu/opera/opera: No such file or directory
Parent is shutting down, bye...
브라우저 GUI가 시작되지 않으며 CLI가 프로세스 DOA를 보고합니다. 조정이 필요할 것 같아요disable-common.inc
# grep -Rin 'bin' .
./disable-common.inc:125:# The user ~/bin directory can override commands such as ls
./disable-common.inc:126:read-only ${HOME}/bin
내 질문:
- Firejail을 통해 로컬 애플리케이션을 실행하는 방법은 무엇입니까?
- 로컬 애플리케이션을 위한 구성 파일이 있습니까?
- 비활성화-common.profile을 편집해야 합니까?
- 폴더를 허용하는 CL 옵션이 있습니까?
- 다른 폴더를 선택해야 합니까
~/bin/
?
내 목표:
제 생각에는...
- github.com에서 복제하여 컴파일된 샌드박스 애플리케이션
- 내 사용자 폴더에 소스 코드와 바이너리를 모두 저장합니다.
- 언제든지 필요하지 않음
sudo
(설치 외firejail
)
답변1
Firejail은 확실히 이 작업을 즉시 수행할 수 있어야 하며, 이것이 제가 직접 사용하는 방법입니다. 실행 firejail bash
해 보고 문제가 있는 실행 파일이 있는지 확인하세요. 또한 opera
환경을 설정하고 firejail
.
답변2
Firejail에 대한 문서를 사용할 수 있습니다여기. 불행하게도 이는 매우 포괄적이지 않으며 사용자 가이드에 가깝습니다.
이것L29Ah의 답변이 작업을 수행하는 방법을 알아낼 수 있는 충분한 정보를 제공했지만 안타깝게도 답변은 유용한 예와 추가 정보를 제공하지 못했습니다. 그래서 저는 모든 질문에 답하고 이를 수행할 수 있는 몇 가지 실제 방법을 보여 주려고 노력할 것입니다.
- 로컬 애플리케이션을 위한 구성 파일이 있습니까?시청 중소스 코드에서, firejail은 명령줄의 첫 번째 인수에서 명령 이름을 추출하며 다음과 같은 방식으로 실행하도록 지시합니다. 먼저 찾은 첫 번째 공백 문자에서 해당 인수의 문자열 값을 자른 다음 선행 디렉터리를 제거합니다. 경로의 구성 요소. 따라서 'firejail /home/me/various/"commandName commandNameSecondWord" ' 명령은 "commandName.profile"이라는 프로필을 검색합니다. $HOME에서 실행되는 프로그램과 /usr/bin과 같은 시스템 디렉토리에서 실행되는 프로그램에는 특별한 처리가 없습니다. 이 모든 것은 명령줄에서 하나 이상의 "--profile=..." 옵션을 사용하여 무시할 수도 있습니다.
- 비활성화-common.profile을 편집해야 합니까?아니요. 우선 이 파일은 다른 Firejail 구성 파일에 포함되어 있기 때문에 편집을 권장하지 않습니다. 둘째, 이 파일이 포함되어 있어도 특정 로컬 프로그램을 실행하는 데 문제가 없습니다. 셋째, 해당 파일에 문제가 있는 경우 해당 파일을 포함하지 않는 사용자 정의 구성 파일을 작성해야 하며, 여전히 일부가 필요한 경우 구성 파일의 사용자 정의 Just에 복사하면 됩니다.
- ~/bin/이 아닌 다른 폴더를 선택하면 되나요?아니요, 더 복잡합니다.
- 폴더를 허용하는 CL 옵션이 있습니까?예, 이를 수행하는 방법에는 여러 가지가 있습니다. 그러나 일반적으로 실행 중인 특정 프로그램에 대한 구성 파일을 작성하여 $HOME/.config/firejail에 저장합니다. "빠르고 더러운" 명령줄 매개변수인 "--private-home=..."이면 충분할 수 있으며, 이는 최상위 파일과 디렉터리를 샌드박스 파일 시스템에 복사합니다. 파일 복사 크기는 500MB로 제한되며 파일 복사로 인해 샌드박스 애플리케이션의 시작 속도가 느려집니다.
- Firejail을 통해 로컬 애플리케이션을 실행하는 방법은 무엇입니까?이 질문은 약간 일반적입니다. 각 애플리케이션에는 서로 다른 구성이 필요할 수 있으며(이것이 바로 Firejail이 기본적으로 전체 프로필 라이브러리를 제공하는 이유입니다), 구성은 전적으로 애플리케이션을 제한하려는 방식(또는 그렇지 않은 방식)에 따라 달라집니다. . 그러나 애플리케이션을 실행할 수 있었습니다(위의 500MB 제한은 여전히 적용됩니다). 또 다른 가능성은 "whitelist ${HOME}/.local_fj/programInstallDir"을 사용하는 것입니다. 두 경우 모두,"noexec" 명령으로 인해 프로그램이 해당 디렉터리에서 실행되는 것을 방해하지 않는지 확인하세요.. (참고: 저는 전문적인 Firejail 사용자가 아닙니다. 제가 익숙하지 않은 다른 방법이 거의 확실하게 있습니다.)