
プログラムのアクセスを特定のディレクトリのみに制限することは可能ですか?例えば、バイバー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
またはその他の独自の仮想化ソフトウェアを使用できます...
しかし、そこからディレクトリを共有することは、ある種の(疑似)ネットワークサービス...