プログラム(Linux用Viber)のアクセスを特定のディレクトリのみに制限する

プログラム(Linux用Viber)のアクセスを特定のディレクトリのみに制限する

プログラムのアクセスを特定のディレクトリのみに制限することは可能ですか?例えば、バイバーFedora で、その下のディレクトリのみ読み取り可能で、他のディレクトリは読み取り不可に強制することはできます/home/username/.local/share/viber/exchangeか?

私は作成して実行しましたバイバーuser:group( )としてviber:viber。Viberファイルから自分や他のユーザーのファイルを開こうとすると、読み取れません。目標は部分的に達成されました。今、私は別の問題に遭遇しました。バイバーメッセージのみで動作し、電話をかけようとすると、マイクもスピーカーも見つからないと言われます。理由はわかっているような気がします(私はXサーバー(GNOME)を自分で実行しており、バイバーviber:viber( ) )ですuser:groupが、どのようにすればいいのかわかりませんバイバーユーザーは自分の名前で X サーバーを実行しているときにマイクとスピーカーを使用できますか?

おそらく、viber特定のグループにユーザーを追加する必要がありますか? おそらく SELinux でいくつかの回避策があるのでしょうか? もしそうなら、適切なポリシーの例を提供できますか? :D

バイバー素晴らしいようですが、オープンソースではなく、そのコンパイル済みソフトウェアのソースコードに何が含まれているかは神のみぞ知るところです。

答え1

使用chroot

小さなルートディレクトリ/bin、、など(必要に応じて)を含むすべての内容/usrをここにコピーします/lib/tmp新しいルートchrootこのディレクトリを実行します。

chrootコマンドは、まさにこの意味で構築された非常に古い 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が、分離されたカーネル名前空間これにより、ネットワーク インターフェイスやその他のデバイス、およびメモリ、CPU、その他のリソースに関するいくつかの制限をシミュレートできます...

このような軽量仮想化chrootを使用すると、を使用する場合と同じ方法でディレクトリを共有できますmount --bind(または、 の下でopenvzを使用するとmount -t simfs便利な場合があります)。

強力な仮想化

kvm次に、 、xenまたはその他の独自の仮想化ソフトウェアを使用できます...

しかし、そこからディレクトリを共有することは、ある種の(疑似)ネットワークサービス...

関連情報