0

ユーザーが登録できるようにユーザー登録ページを作成したいので、phpからスクリプトに変数を取得する方法を考えています.phpはスクリプトを呼び出して変数を送信します。

具体的には、私が問題を抱えているこの行(phpページにあります):

PHP: $結果 = bash /home/*******/public_html/add_user $login '$pwd';

add_user.sh:

#!/bin/bash
adduser -u "$1" -p "$2" -g users -s /bin/bash
4

3 に答える 3

1

エグゼクティブ

$results = exec("bash /home/*******/public_html/add_user $login '$pwd'");

このプロセスを実行しているユーザー (Web ユーザー、おそらく www-data、www、web など) は、これを行うために sudo または昇格されたアクセス権を持っている必要があることに注意してください。また、これを Web に公開する場合のすべての意味と結果を本当に時間をかけて検討しない限り、これを行わないように注意したいと思います。

于 2013-11-04T15:19:11.837 に答える
1

本当に PHP から外部プログラムを呼び出したい場合は、system()orのような呼び出しを使用してそれexec()を行うことができます。PHP 変数から PHP でコマンド ラインを作成する必要があります。

そうは言っても、このアプローチは Web アプリケーションのセキュリティ ホールの最も一般的な原因の 1 つです。渡そうとしているデータが有効で正しいことを確認する必要があります ( が$login含まれている場合に何が起こるかを考えて"; rm -rf /"ください)。

adduserもう 1 つの考慮事項は、スーパーユーザー特権が必要であるという事実です。前回確認したとき、シェル スクリプトは SUID を尊重しなかったため、単純なアプローチが機能するかどうかはわかりません。sudoたとえば、Perl でスクリプトを使用または書き換えて、suidperl.

于 2013-11-04T15:24:52.303 に答える
0

PHP スクリプトから変数をエコーし​​、これを次のようにシェル変数に読み込むことができます。

read -r user pass < <(/path/to/php/script.php)
于 2013-11-04T15:19:26.433 に答える