Ограничить доступ программы (Viber для Linux) только к определенному каталогу

Ограничить доступ программы (Viber для Linux) только к определенному каталогу

Можно ли ограничить доступ программ только к определенному каталогу, например, для запускаВайберв Fedora и заставить его читать только в этом /home/username/.local/share/viber/exchangeкаталоге и не читать из других каталогов?

Мне удалось создать и запуститьВайберкак другой user:group( viber:viber). Когда я пытаюсь открыть изнутри Viber файлы, которые принадлежат мне или любому другому пользователю, он не может их прочитать. Цель достигнута, но частично. Теперь я наткнулся на другую проблему, которая заключается вВайберработает только с сообщениями, а когда я пытаюсь сделать звонок, он говорит, что не может найти ни микрофон, ни динамики? Кажется, я знаю почему (я запускаю X Server (GNOME) как я иВайберкак viber:viber( user:group) ) но я не уверен, как разрешитьвайберможет ли пользователь использовать микрофон и динамики при запуске X-сервера под моим именем?

Может быть, мне нужно добавить viberпользователя в определенную группу? Возможно, есть какие-то обходные пути с SELinux? Если да, то могли бы вы предоставить пример правильной политики? :D

ВайберКажется, это здорово, но это не проект с открытым исходным кодом, и только Бог знает, что находится в исходном коде этого предварительно скомпилированного программного обеспечения!

решение1

С использованиемchroot

Создайте небольшойкорневая директориясодержащий /bin, /usr, /lib, /tmpи так далее (в зависимости от ваших потребностей), скопируйте все ваши данные в этотновый корень, чем зайти chrootв этот каталог.

chrootcommand — очень старый инструмент Un*x, созданный именно в этом смысле.

Вы могли бысвязыватькаталог вконтейнериспользуя mount --bind.

Посмотрите man chrootи man mount!

Небольшая попытка:

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

Внимание, оттуда!

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

Меня посадили!

ls
bash: ls: command not found

В ! нет lsкоманды /bin.

Используя openvzилиlxc

Следующий шаг влегкая виртуализациязаключается в запуске одного из openvzили lxc(или другого, возможно).

Эти инструменты делают примерно то же самое chroot, но используютизолированное пространство имен ядра. Это позволяет вам моделировать сетевые интерфейсы или другие устройства, а также некоторые ограничения, связанные с памятью, процессором и другими ресурсами...

С таким типомлегкая виртуализация, вы можете совместно использовать каталоги таким же образом chroot, как и при использовании , с помощью mount --bind(или под openvz, возможно, использование mount -t simfsможет быть полезным).

Сильная виртуализация

Далее вы можете использовать kvm, xenили другое фирменное программное обеспечение для виртуализации...

Но отсюда следует, что совместное использование каталогов подразумевает некую форму(псевдо)сетевой сервис...

Связанный контент