Limite o acesso do programa (Viber para Linux) apenas a determinados diretórios

0

É possível limitar o acesso dos programas apenas a um determinado diretório, por exemplo, para executar o Viber no Fedora e forçá-lo a somente ler sob /home/username/.local/share/viber/exchange e nenhum outro diretório?

Eu consegui criar e executar o Viber como outro user:group ( viber:viber ). Quando tento abrir de dentro dos arquivos Viber que pertencem a mim ou a qualquer outro usuário, não é possível lê-los. Objetivo alcançado, mas em parte. Agora, eu tropecei em outro problema, que é o Viber , que funciona apenas com mensagens e, quando tento fazer uma chamada, diz, não é possível encontrar nem microfone nem alto-falantes? Parece que eu sei porque (eu corro o X Server (GNOME) como eu mesmo e Viber como viber:viber ( user:group )) mas não tenho certeza como deixar viber usuário usar microfone e alto-falantes durante a execução do servidor X com o meu nome?

Posso precisar adicionar viber user a um determinado grupo? Provavelmente existem algumas soluções alternativas com o SELinux? Se sim, você poderia fornecer um exemplo de política adequada? : D

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

    
por Ilia Rostovtsev 30.11.2013 / 11:44

1 resposta

2

Usando chroot

Crie um pequeno diretório raiz contendo /bin , /usr , /lib , /tmp e assim por diante (dependendo da sua necessidade), copie todas as suas coisas para este nova raiz , em vez de executar chroot neste diretório.

O comando

chroot é uma ferramenta Un * x muito antiga, construída exatamente com esse significado.

Você poderia vincular diretório em container usando mount --bind .

Dê uma olhada em man chroot e 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

Atenção, de lá!

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á comando ls em /bin !

Usando openvz ou lxc

O próximo passo na virtualização de luz é executar um dos openvz ou lxc (ou outro, talvez).

Essas ferramentas fazem aprox. mesmo que chroot , mas use espaço de nomes do kernel isolado . Isso permite simular interfaces de rede ou outros dispositivos e algumas limitações em torno da memória, da CPU e de outros recursos ...

Com esse tipo de virtualização leve , você pode compartilhar diretórios da mesma maneira que usar chroot , usando mount --bind (ou sob openvz talvez usando mount -t simfs poderia ser útil) .

Virtualização strong

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

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

    
por 30.11.2013 / 12:08