2011-06-26 6 views
1

セキュリティ上の理由から、一部のアプリケーションはchroot環境で隔離されています。このアプリケーションをPHPスクリプトで呼び出す必要があります。そのような何か:PHPでchrootを呼び出す

exec('chroot /path/to/chroot command') 

私はchrootを使用するためのrootする必要があります。 PHPマニュアルにはchroot()がありますが、この機能にはroot権限も必要です。

PHPのchroot edコマンドの使い方は?

+0

私にとって、これはセキュリティを実現する良い方法のようには思えません。あなたがしようとしていることについてもう少し説明してもらえますか、それを行うための他の方法があるかもしれませんか? –

+0

私はラテックスの式に対応するpngファイルを生成するために、pdflatexとimagemagickを実行する必要があります。問題は、いくつかの悪質なラテックスコードでシステムファイルへのアクセスを防止する必要があることです。だから私はchrootにラテックスをインストールし、私はPHPを介してそれを呼び出す。 –

+0

音が怖い、幸運:) –

答えて

2

chrootは、特権ユーザーによってのみ呼び出すことができます。そうしないと、通常のユーザーは、passwdsudoなどのsetuidアプリケーションを突っ込んで、予期しない場所にあるファイルにアクセスする可能性があります。

したがって、PHPアプリケーションがrootで実行されていない場合は、setuidラッパースクリプトを設定してphpから呼び出すことができます。ルートがtrivially break out of chrootsのように、chrootを呼び出した後すぐに権限を落とすべきです。

また、phpユーザがchroot /path/to/chroot commandを実行し、execコールの前にsudoを追加するようにsudoを設定することもできます。

0

ここでは、sudoを使用し、sudoersファイルはsudo manpageを参照してください。あなたは、Linuxの機能を使用することができます

exec('sudo chroot /path/to/chroot command') 
2

は基本的にあなたがどうなるのかchrootコマンドのsudoユーティリティへのPHPのユーザーアクセスを与え、あなたのコードは次のようになりますです。 man capabilitiesのCAP_SYS_CHROOT機能を参照してください。

警告! sudoを使うと、chrootした後にrootです!

関連する問題