-2

LDAPにユーザーを追加するためのphpスクリプトを作成しようとしています。この目的のために、適切に「addldapuser.sh」というタイトルのシェルスクリプトがあります。このスクリプトは、ユーザー/画面名/パスワードの組み合わせを取り込んで、それらをLDAPに追加します。このスクリプトは正しく機能します。ユーザーが自分の情報をWebフォームに入力できるようにしたいと思います。これにより、そのスクリプトが呼び出され、ユーザーがLDAPに適切に追加されます。addldapuserスクリプトは現在rootとして実行する必要があり、セキュリティ上の懸念は認識していますが、後で処理できます。私は考えたり見つけたりできるすべてのことを試し、考えられるすべての許可を与え、根付くことができるすべてのことを与え、しばらくの間Apacheをいじくり回しましたが、今はアイデアがありません。

$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));

}

繰り返しになりますが、これはひどい、ひどい考えであり、ハッカーが私たち全員を永遠に破壊することになることが保証されていますが、上司は少なくともこのように機能させることを望んでいます。

少なくとも入力をサニタイズする必要があることを私は知っています、そしてそれはやがて処理されるでしょう。

4

2 に答える 2

1

ルートとして実行され、ユーザーレベルで実行されているスクリプトと通信するデーモンを作成することをお勧めします。

非常に単純なpythonrpcサーバー(組み込みのXML-RPCなど)とクライアントを接着剤として実行し、一方をサーバーとルートとして実行し、もう一方をクライアントスクリプトにすることができます。

次に、phpコードは必要なパラメーターを使用してPythonスクリプトを実行し、Pythonサーバースクリプトと通信できるようになります。

利点として、サーバー部分をうまく実行すれば、潜在的なセキュリティを得ることができます。ほとんどの機能が組み込まれていて、非常に使いやすい言語としてPythonを選択しました。

例:

サーバー-http://docs.python.org/library/simplexmlrpcserver.html#simplexmlrpcserver-example

クライアント-http://docs.python.org/library/xmlrpclib.html#example-of-client-usage

または、phpの使用を主張する場合は、サーバープロセスをphpデーモンとして実行し、同様のRPC手段を介して接続することができます。

于 2012-05-09T19:28:07.580 に答える
1

私は最近、PHPが実際のBashシェルを取得して操作できるようにするプロジェクトを公開しました。これにより、rootを使用してシェルを簡単に取得できます。ここで入手してください:https ://github.com/merlinthemagic/MTS

ダウンロードした後は、次のコードを使用するだけです。

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);

$strCmd = "/EasyLDAP/old_scripts/addldapuser.sh " . $usrName . " " . $scrName . " " . $pass;
$return1  = $shell->exeCmd($strCmd);

echo $return1;// return from your script
于 2016-05-26T10:07:28.890 に答える