Como virtualizar um arquivo para um único programa?

Como virtualizar um arquivo para um único programa?

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 firejaile man 5 firejail-profile.

informação relacionada