Como posso executar aplicativos locais através do firejail?

5

Eu instalei o pacote debian localmente. Eu escolhi aleatoriamente o Opera, extraí via dkpg -x opera-x.y.z.deb ~/bin/opera_package , e criei um link simbólico na pasta ~/bin do meu usuário (que está no caminho do usuário).

Tentativa de executar no lado firejail

$ 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...

Se eu tentar executar usando o caminho absoluto (da minha pasta pessoal):

$ 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...

A GUI do navegador nunca é inicializada e a CLI relata o processo DOA. Estou assumindo que preciso ajustar o 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

Minhas perguntas:

  • Como posso executar aplicativos locais através do firejail?
  • Existe um perfil para aplicativos locais?
  • Preciso editar o disable-common.profile?
  • Existe uma opção CL para permitir pastas?
  • Acabei de selecionar uma pasta diferente de ~/bin/ ?

Minhas metas:

Eu gostaria de ...

  1. aplicativos de sandbox clonados do github.com depois de serem compilados
  2. mantenha a origem e o binário na minha pasta de usuário
  3. não precisa sudo em nenhum ponto (fora da instalação de firejail )
por Rick 05.04.2017 / 18:54

2 respostas

1

Firejail certamente deve ser capaz de fazer isso da caixa, e eu estou usando isso dessa maneira eu mesmo. Tente executar firejail bash e verificar se ele vê os executáveis em questão. Além disso, opera pode ser um script de shell que configura um ambiente e executa outro binário que fica oculto por firejail .

    
por 10.08.2017 / 10:03
0

A documentação fornecida para a firejail está disponível aqui . Infelizmente não é muito abrangente e é mais como um guia do usuário.

A resposta de L29Ah me forneceu informação suficiente para descobrir como fazer isso, mas é lamentável que a resposta não fornece exemplos úteis e mais informações. Então vou tentar responder a todas as perguntas e mostrar algumas maneiras reais de fazer isso.

  • Existe um perfil para aplicações locais? De olhar em código-fonte, firejail extrai o nome do comando do primeiro argumento na linha de comando que você diga que ele seja executado da seguinte forma: primeiro, ele trunca o valor da cadeia de que o argumento no primeiro caractere de espaço em branco que encontra, e em seguida, elimina todos os componentes principais do diretório no caminho. Portanto, o comando 'firejail / home / me / various / "commandName commandNameSecondWord"' procuraria por um perfil chamado "commandName.profile". Não há processamento especial para programas que são executados sob $ HOME versus um diretório do sistema como / usr / bin. Também é possível ignorar tudo isso usando uma ou mais opções "--profile = ..." na linha de comando.
  • Preciso editar o disable-common.profile? Não. Primeiro, não recomendo editar esse arquivo, pois ele está incluído em outros perfis do firejail. Em segundo lugar, eu não tive um problema em executar o meu programa local específico, mesmo com este arquivo incluído. Em terceiro lugar, se de alguma forma algo nesse arquivo é um problema, então você deve escrever um perfil personalizado que não inclui-lo, e se você quiser algumas partes dele de qualquer maneira, apenas copiá-los para o seu perfil personalizado.
  • Acabei de selecionar uma pasta diferente de ~ / bin /? Não, é mais complicado.
  • Existe uma opção CL para permitir pastas? Sim, existem várias maneiras de fazer isso. Normalmente, no entanto, você escreveria um perfil para o programa específico que está executando e o colocaria em $ HOME / .config / firejail. Um argumento de linha de comando "rápido e sujo" que pode ser suficiente é "--private-home = ...", que pode copiar arquivos e diretórios de nível superior para o sistema de arquivos do sandbox. Observe que há um limite de 500 MB no tamanho dos arquivos copiados e a cópia dos arquivos retardará a inicialização do aplicativo em área restrita.
  • Como posso executar aplicativos locais através firejail? Esta questão é um pouco geral, uma vez que cada aplicação pode precisar de uma configuração diferente (toda a razão por firejail é fornecido com toda uma biblioteca de perfis fora da caixa) e a configuração depende exatamente de como você deseja restringir o aplicativo (ou não). No entanto, eu consegui executar o meu aplicativo, instalando-o em um diretório de nível superior no meu diretório home chamado $ HOME / .local_fj e adicionando "-casa particular .local_fj" no perfil de comando personalizado (o limite de 500MB mencionado acima ainda se aplica) . Outra possibilidade pode estar usando "whitelist $ {HOME} /. Local_fj / programInstallDir". Em ambos os casos, certifique-se de que qualquer comando "noexec" não bloqueie a execução do programa a partir do diretório onde ele reside . (Nota: Eu não sou um usuário especialista em firejail - é quase certo que existem outras maneiras de fazer isso com as quais eu não estou familiarizado.)
por 15.09.2018 / 22:03