
ユーザーアカウントが特定のフォルダを編集または表示できないようにサンドボックスを試しています。つまり、/home/user/test
アカウントは、システムがすべてのコマンドを受け入れ、システムを何らかの方法で変更または編集できないようにするC ++プログラムをコンパイルして実行します。
これは、そのユーザーのシステム全体で書き込み(および一部の読み取り)権限を無効にして削除su
しsudo
、プログラムを自分のフォルダにロックする(閉じ込める)ことを意味します。何か抜けましたか?
今実装のため。
とを別々に入力すると、合計の位置を見つけることができると思いますsu
。たとえば、バイナリが次の場所にあることがわかります。sudo
whereis su
whereis sudo
sudo
/usr/bin/sudo /usr/lib/sudo /usr/bin/X11/sudo /usr/share/man/man8/sudo.8.gz
このユーザーの実行を無効にするためにこれらのバイナリの権限を変更すると、他の手段sudo
(他のプログラミング言語)による操作は禁止されますか?
chroot
特に、プログラムがサンドボックスフォルダの外の他のリソースにアクセスする必要がある場合は、特定のフォルダ内にプログラムを「閉じ込める」ことが効果的ではないようです。それでは、最良のアプローチは何ですか?
答え1
バックドアとして使用できるものを忘れたものを見つけるよりも、chrootに含める必要があるものを見つける方が良いでしょう。 chrooted構造の下で必要な材料に接続するだけです。そして最初のコンパイルの実行で見つけたが見落としたすべて。
2000年以来、私はこれらの要件があるたびにこれらの編集に仮想マシンを使用してきました。そのようなアカウントが実行できる操作やシステムの他のアクティビティ(ソフトウェアのインストールなど)によってコンパイルプロセスが中断される可能性があることを心配しないでください。アップグレードする前にスナップショットなどを撮るのは簡単です。このため、速度低下の観点からは、仮想マシンのオーバーヘッドは支払う必要がある非常に少ないコストです。