Limitar o acesso do programa (Viber para Linux) apenas a determinado diretório

Limitar o acesso do programa (Viber para Linux) apenas a determinado diretório

É possível limitar o acesso dos programas apenas a determinado diretório, por exemplo, para executarViberno Fedora e forçá-lo a ler apenas em /home/username/.local/share/viber/exchangee nenhum outro diretório?

Eu consegui criar e executarVibercomo outro user:group( viber:viber). Quando tento abrir arquivos do Viber que pertencem a mim ou a qualquer outro usuário, ele não consegue lê-los. Objetivo alcançado, mas parcialmente. Agora, me deparei com outro problema, que éViberfunciona apenas com mensagens e quando tento fazer uma ligação diz que não encontra microfone nem alto-falantes? Parece que sei por que (eu executo o X Server (GNOME) como eu mesmo eVibercomo viber:viber( user:group) ), mas não sei como deixarvibraçãousuário usar microfone e alto-falantes enquanto executa o servidor X em meu nome?

Pode ser que eu precise adicionar viberum usuário a um determinado grupo? Provavelmente existem algumas soluções alternativas com o SELinux? Em caso afirmativo, você poderia fornecer um exemplo de política adequado? :D

Viberparece ótimo, mas não é de código aberto e só Deus sabe o que está no código-fonte daquele software pré-compilado!

Responder1

Usandochroot

Crie um pequenodiretório raizcontendo /bin, /usr, /libe /tmpassim por diante (dependendo da sua necessidade), copie todas as suas coisas para estenova raiz, do que executar chrootneste diretório.

chrootO comando é uma ferramenta Un*x muito antiga, construída exatamente nesse sentido.

Você poderiavinculardiretório emrecipienteusando mount --bind.

Dê uma olhada man chroote man mount!

Pequena tentativa:

ldd /bin/bash 
    linux-vdso.so.1 =>  (0x00007fff3e4b5000)
    libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f06290a1000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0628e9d000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0628b12000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f06292e8000)


sudo -s

Aviso, a partir daí!

mkdir /tmp/test/chrooted/lib64
cp -t /tmp/test/chrooted/lib/x86_64-linux-gnu/ \
    /lib/x86_64-linux-gnu/{libc.so.6,libdl.so.2,libtinfo.so.5}
cp -t /tmp/test/chrooted/lib64 /lib64/ld-linux-x86-64.so.2 
chroot /tmp/test/chrooted

Estou preso!

ls
bash: ls: command not found

Não há lscomando em /bin!

Usando openvzoulxc

Próximo passo emvirtualização leveé executar um de openvzou lxc(ou outro, talvez).

Estas ferramentas fazem aprox. igual a chroot, mas usenamespace de kernel isolado. Isso permite simular interfaces de rede ou outros dispositivos e algumas limitações de memória, CPU e outros recursos...

Com esse tipo devirtualização leve, você pode compartilhar diretórios da mesma maneira que usando chroot, usando mount --bind(ou openvztalvez usando mount -t simfspossa ser útil).

Virtualização forte

Em seguida, você pode usar o kvm, xenou outro software de virtualização proprietário...

Mas a partir daí, compartilhar diretórios implica algum tipo de(pseudo) serviço de rede...

informação relacionada