Como o Firejail constrói sua lista negra padrão?

Como o Firejail constrói sua lista negra padrão?

Quando inicio firejail, vejo meu diretório inicial completo. Quando começo firejail --whitelist=~/something, vejo apenas somethingna minha casa. Agora gostaria de restringir mais acesso ao sistema. Posso, por exemplo, adicionar --blacklist=/mediae funciona conforme o esperado.

Mas como o comportamento padrão determina que /home/OTHERUSER, /home/*exceto os arquivos da lista de permissões, estão ocultos? Não vejo uma regra correspondente em /etc/firejail/*.

E os subdiretórios permitidos são possíveis? Por exemplo, --blacklist=/media --whitelist=/media/datanão funciona como esperado, mesmo quando a página de manual informa que a lista de permissões substitui outras opções como --read-only.

Essas regras são codificadas no binário? Se não, qual regra faz essas coisas?

Um exemplo do que eu gostaria de ter. Regras básicas:

  1. Casa vazia, exceto pelos itens listados no perfil
  2. Lista negra/media/data
  3. Permitir link simbólico ~/apps ->/media/data/appssomente leitura.
  4. Permitir /media/data/apps(se necessário) somente leitura.

1, 2 estão funcionando, 3 está funcionando apenas com 4 (provavelmente ok), mas substituir o acesso de leitura para um subdiretório de um diretório proibido não funciona.

Parece um pouco contra-intuitivo que funcione, mas na camada do sistema de arquivos mkdir -p foo/bar;chmod 111 foo;ls foo/bar/(onde 111significa que não há permissão de leitura (listagem de diretórios) em foo, mas apenas o bit executável (inserindo subdiretórios) funciona, mesmo quando ls foo/falha.

O cenário estendido proibiria tudo, exceto uma lista de permissões (perfil + /usr, /bin, /lib, etc.). Outra coisa que não parece possível sem root (e então o próprio aplicativo roda como root) é substituir, por exemplo, /etc/passwd por um que não contenha usuários, que não deve ser conhecido na prisão. /etccontém muitos dados legíveis, que devem ser ocultados de aplicativos não confiáveis.

Mas possivelmente o cenário estendido realmente justificaria um contêiner chroot + userspace-lxc completo.

informação relacionada