Firejail은 기본 블랙리스트를 어떻게 작성합니까?

Firejail은 기본 블랙리스트를 어떻게 작성합니까?

을 시작하면 firejail전체 홈 디렉토리가 표시됩니다. 시작하면 집에서만 firejail --whitelist=~/something보입니다 . something이제 시스템에 대한 더 많은 액세스를 제한하고 싶습니다. 예를 들어 추가하면 --blacklist=/media예상대로 작동합니다.

그러나 기본 동작은 허용 목록에 있는 파일을 제외 /home/OTHERUSER하고 숨겨지는 것을 어떻게 결정합니까? /home/*에 일치하는 규칙이 없습니다 /etc/firejail/*.

허용된 하위 디렉터리도 가능합니까? 예를 들어 --blacklist=/media --whitelist=/media/data맨페이지에서 허용 목록이 --read-only.

이러한 규칙이 바이너리에 하드코딩되어 있나요? 그렇지 않다면 어떤 규칙이 이러한 일을 합니까?

내가 갖고 싶은 예. 기본 규칙:

  1. 프로필에 기재된 것 외에는 집이 비어 있습니다.
  2. 블랙리스트/media/data
  3. ~/apps ->/media/data/apps심볼릭 링크를 읽기 전용으로 허용합니다 .
  4. /media/data/apps(필요한 경우) 읽기 전용을 허용합니다 .

1, 2는 작동 중이고 3은 4로만 작동하지만(아마도 괜찮을 것입니다) 금지된 디렉토리의 하위 디렉토리에 대한 읽기 액세스를 재정의하는 것은 작동하지 않습니다.

그것이 작동해야 한다는 것은 다소 직관적이지 않은 것처럼 보이지만 파일 시스템 계층에서는 mkdir -p foo/bar;chmod 111 foo;ls foo/bar/( 111즉, foo에 대한 읽기(디렉터리 나열) 권한이 없지만 ls foo/실패하더라도 실행 가능한 비트(하위 디렉터리 입력)만 작동한다는 의미입니다.

확장된 시나리오에서는 화이트리스트(프로필 + /usr, /bin, /lib 등)를 제외한 모든 항목을 허용하지 않습니다. 루트 없이는 불가능해 보이는 또 다른 일(그리고 앱 자체가 루트로 실행됨)은 /etc/passwd를 감옥에서 알 수 없는 사용자를 포함하지 않는 것으로 바꾸는 것입니다. /etc신뢰할 수 없는 응용 프로그램에서 숨겨져야 하는 읽을 수 있는 데이터가 상당히 많이 포함되어 있습니다.

그러나 아마도 확장된 시나리오는 실제로 전체 chroot + userspace-lxc 컨테이너를 정당화할 것입니다.

관련 정보