ユーザーをLDAPに追加するためのPHPスクリプトを作成しようとしています。この目的のために、私はシェルスクリプトを持っています。これは、 "addldapuser.sh"と題されており、ユーザ/スクリーンネーム/パスワードの組み合わせをとり、それらをLDAPに追加します。このスクリプトは正常に動作します。私たちは、ユーザーがWebフォームに情報を入力し、そのスクリプトを呼び出してLDAPに適切にユーザーを追加できるようにしたいと考えています。 addldapuserスクリプトは現在rootとして実行する必要がありますが、セキュリティの問題を認識しているうちに、後で対処することができます。私は考えることができるすべてを試しました。私が考えることができるすべての許可をすべて与えました。私が根絶できるすべてを与えました。しばらくの間、Apacheに悩まされました。PHPでrootとしてシェルスクリプトを実行していますか?
$scrName = $_POST['screenname'];
$usrName = $_POST['username'];
$pass = $_POST['password'];
if (isset($_POST['submit']))
{
$out = nl2br(shell_exec("sudo /EasyLDAP/old_scripts/addldapuser.sh " . $usrName . " " . $scrName . " " . $pass));
}
はもう一度、私はこれがちょうど永遠に私たちのすべてを破壊するハッカーで終了することが保証されてひどい、ひどいアイデアですけど、私の上司は私が、少なくともそれはこのように機能したいと考えています。
私は入力を少なくとも消さなければならないことを知っており、それは適切な時期に世話をします。
を多くのシステムでは、 'sudo'は、実際のttyシェルなしで実行することはできません。あなたのsudoersファイルで 'requiretty'を探してください。 SELinuxやAppArmorのようなものを実行している場合は、これも禁止されています。 –
また、実行する前に 'escapeshellcmd()'を呼び出すか、名前の入力に 'escapeshellarg()'を呼び出すようにしてください。 –
Michaelが指摘するように、このスクリプトは恐ろしいものです。あなたは数日以内にハッキングされます。なぜLDAP用のPHP関数を使用しないのですか?とにかくLDAPスクリプトがsudo privsを必要とするのはなぜですか? – Brad