
Eu tenho um aplicativo que acessa o arquivo /etc/hostname. Este aplicativo deve ser executado 1 instância por máquina. No entanto, para fins de depuração, estou executando várias instâncias na mesma máquina.
Portanto, eu gostaria de ter um /etc/hostname diferente (e talvez outros arquivos) diferente para cada um sem ter que alterar manualmente o código para procurar esses arquivos em caminhos diferentes.
Executar cada instância em um contêiner não é uma opção viável, pois o aplicativo utiliza um soquete bruto em uma interface sem fio (é possível fornecer acesso direto à interface de um contêiner?)
Eu apenas tentei "enganar" cada instância da aplicação para acessar arquivos diferentes ao acessar o mesmo arquivo real.
Como posso fazer isso?
Responder1
Você pode fazer isso comfirejail
.
Firejail é um programa SUID que reduz o risco de violações de segurança, restringindo o ambiente de execução de aplicativos não confiáveis usando namespaces Linux e seccomp-bpf. Ele permite que um processo e todos os seus descendentes tenham sua própria visão privada dos recursos do kernel compartilhados globalmente, como pilha de rede, tabela de processos e tabela de montagem.
Exemplo:
# cat /etc/hostname
myhost
# firejail --noprofile --quiet --writable-etc --bind=/etc/timezone,/etc/hostname cat /etc/hostname
Europe/Warsaw
Você provavelmente desejará definir alguns perfis para executar facilmente várias instâncias do aplicativo. Estude man 1 firejail
e man 5 firejail-profile
.