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

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

WBOY
WBOYオリジナル
2016-07-13 17:28:171171ブラウズ

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 を実行しているユーザーがnobody であり、super を介してシステム ユーザーを追加したいとします (useradd コマンドを呼び出します)。その場合、次の行を super.tab ファイルに追加するだけで済みます: auser /sbin/useradd nothing, Hunte最初の段落は、認識されたコマンドのエイリアスです。2 番目の段落は、そのエイリアスに対応するシステム コマンドのフル パスです。3 番目の段落は、コマンドを実行できるユーザーのリストです。カンマで区切られています。 none に加えて、hunte という名前の一般ユーザーもいます。これは次のテストに使用されます。もちろん、システム上に存在する通常のユーザーを使用する必要があります。 この時点で、スーパー構成の準備が整いました。 ステップ 4: テストします。ステップ 3 で指定した非 nobody ユーザーとしてログインし、% /bin/super auser testuser を実行します。前の構成にエラーがなければ、ユーザー testuser が正常に作成されるはずです。 % cat /etc/passwd | grep testuser コマンドを使用して確認できます。 5 番目のステップは、PHP でコマンドを呼び出すことです。以下は PHP コードです: system(escapeshellcmd("/bin/super auser $username")); > PHP で root として実行するには、super を使用します。外部コマンドはもう問題ありません。試してみる。 テスト環境: RedHat Linux 7.0 (カーネル 2.4.3) + Apache 1.3.9 + PHP 4.0.4pl1 if ($username) { //应该检查新用户是否已经存在 echo 正在创建用户

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