ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルで root として外部コマンドを実行する

PHP_PHP チュートリアルで root として外部コマンドを実行する

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-07-13 17:21:401038ブラウズ

root ユーザーのみが実行できる外部プログラムを PHP で実行することは常に古い問題であり、従来の方法を使用して実現することは困難です。これは、通常の状況では、PHP は APACHE のモジュールとして使用されます。つまり、PHP は APACHE の一部であり、APACHE は suEXEC メカニズムを除いて異なるユーザー ID でコマンドを実行できませんが、suEXEC メカニズムは CGI のみ動作するためです。 。

かつて「su - -c COMMAND」を呼び出すことで実現できるという記事がインターネット上にありましたが、何度もテストした結果、suコマンドはSTDINにrootパスワードを入力する必要があるため機能しないことが判明しました。

どうすればいいですか?従来の方法では実現が難しいため、別の方法を考えなければなりません。成功の鍵は、ユーザー ID を切り替えられるだけでなく、コマンドにパスワードを入力できる (またはパスワードを入力しない) こともできるツールを用意することです。そのようなツールはありますか?はい、超最高です。

その方法を詳しく話しましょう?

スーパーのインストールと設定は root として行う必要があることに注意してください。

最初のステップ、root に切り替えます

2 番目のステップ、super をインストールします
まず ftp://ftp.mdtsoft.com/pub/super に移動して super-3.14.0-1.i386.rpm をダウンロードします。これは、setuid と super という 2 つのツールと、それらのドキュメントとマニュアルを含む RPM ファイルです。次のコマンドを使用して、システムにインストールします:
% rpm -Uvh super-3.14.0-1.i386.rpm
このコマンドを使用して、この RPM 内のファイルを表示することもできます:
% rpm -qpl super-3.14 .0-1.i386.rpm
結果からわかるように、両方のツールは /bin ディレクトリにインストールされます。

3 番目のステップは、スーパーを設定することです
スーパーの設定ファイルは /etc/super.tab です。これはテキスト ファイルであり、形式は比較的複雑です。ただし、ここでは単に数行を追加するだけです。詳細な手順については、man super.tab から参照できます。
Apache を実行しているユーザーが誰でもないと仮定し、super を介してシステム ユーザーを追加する (useradd コマンドを呼び出す) 場合は、次の行を super.tab ファイルに追加するだけで済みます:
auser /sbin/useradd none ,hunte
最初の段落は、スーパーが認識できるコマンドのエイリアスです。2 番目の段落は、そのエイリアスに対応するシステム コマンドのフル パスです。3 番目の段落は、コマンドを実行できるユーザーのリストです。 。 none に加えて、hunte という名前の一般ユーザーもいます。これは次のテストに使用されます。もちろん、システム上に存在する通常のユーザーを使用する必要があります。
この時点で、スーパー構成の準備が整いました。

ステップ 4、テスト
ステップ 3 で指定した非 nobody ユーザーとしてログインし、次のコマンドを実行します:
% /bin/super auser testuser
前の構成にエラーがなければ、ユーザー testuser が正常に作成されるはずです。
% cat /etc/passwd | grep testuser
コマンドを使用して確認できます。

5 番目のステップ、PHP でコマンドを呼び出します
以下は PHP コードです:
if ($username)
{
//新しいユーザーが既に存在するかどうかを確認します
echo 'Creating user<$username> ;...';
system(escapeshellcmd("/bin/super auser $username"));
}
?>
super を使用すると、PHP で外部コマンドを実行することが難しくなくなります。試してみる。
テスト環境: RedHat Linux 7.0 (カーネル 2.4.3) + Apache 1.3.9 + PHP 4.0.4pl1

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/532431.html技術記事 root ユーザーのみが実行できる外部プログラムを PHP で実行することは常に古い問題であり、従来の方法を使用して実現することは困難です。これは、一般的に PHP が APACHE のモジュールとして使用されるためです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。