限制程序(Viber for Linux)仅访问特定目录

限制程序(Viber for Linux)仅访问特定目录

是否可以限制程序仅访问特定目录,例如运行Viber在 Fedora 上并强制它只能读取下面/home/username/.local/share/viber/exchange而不能读取其他目录?

我已经成功创建并运行Viber作为另一个user:groupviber:viber)。当我尝试从 Viber 内部打开属于我或任何其他用户的文件时,它无法读取它们。目标实现了,但只是部分实现。现在,我遇到了另一个问题,即Viber只适用于消息,当我尝试拨打电话时,它说找不到麦克风或扬声器?我觉得我知道原因(我以自己的身份运行 X Server(GNOME)并且Viber作为viber:viberuser:group)),但我不确定如何让维伯用户是否可以在我名下运行 X 服务器时使用麦克风和扬声器?

也许我需要将viber用户添加到某个组?SELinux 可能有一些解决方法?如果是的话,您能提供适当的策略示例吗?:D

Viber看起来很棒,但它不是开源的,只有上帝知道,那个预编译软件的源代码上有什么!

答案1

使用chroot

创建一个小的根目录包含/bin、、、等等(取决于你的需要),将所有内容复制到/usr其中/lib/tmp新根,然后进入chroot该目录。

chroot命令是一个非常古老的Un*x工具,正是按照这个含义构建的。

你可以绑定目录中容器通过使用mount --bind

看一下man chrootman 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

使用openvzlxc

下一步轻度虚拟化是运行其中一个openvz或者lxc(或者其他,也许)。

此工具的功能与此大致相同chroot,但使用隔离内核命名空间。这让您可以模拟网络接口或其他设备以及内存、CPU 和其他资源的一些限制……

这种轻度虚拟化,您可以以与使用相同的方式共享目录chroot,通过使用mount --bind(或者在openvz使用下mount -t simfs可能有用)。

强大的虚拟化

接下来您可以使用kvmxen其他专有虚拟化软件......

但从那时起,共享目录就意味着某种(伪)网络服务...

相关内容