%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D0%BA%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC%D1%83%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83.png)
Можно ли ограничить доступ программ только к определенному каталогу, например, для запускаВайберв 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
в этот каталог.
chroot
command — очень старый инструмент 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
или другое фирменное программное обеспечение для виртуализации...
Но отсюда следует, что совместное использование каталогов подразумевает некую форму(псевдо)сетевой сервис...