ホームページ  >  記事  >  バックエンド開発  >  PHP で root として外部コマンドを実行する [Oso から再投稿]_PHP チュートリアル

PHP で root として外部コマンドを実行する [Oso から再投稿]_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 16:54:30753ブラウズ


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 番目のステップは super を設定することです
Super の設定ファイルは /etc/super.tab です。これはテキスト ファイルであり、形式は比較的複雑です。ただし、ここでは単に数行を追加するだけです。詳細な手順については、man super.tab から参照できます。
Apache を実行しているユーザーがEveryone で、super を介してシステム ユーザーを追加したいとします (useradd コマンドを呼び出します)。その場合は、次の行を super.tab ファイルに追加するだけです:
auser /sbin/useraddEveryone, Hunte
最初の段落は、スーパーが認識できるコマンドのエイリアスです。2 番目の段落は、そのエイリアスに対応するシステム コマンドのフル パスです。3 番目の段落は、コマンドを実行できるユーザーのリストです。カンマで区切られています。 none に加えて、hunte という名前の一般ユーザーもいます。これは次のテストに使用されます。もちろん、システム上に存在する通常のユーザーを使用する必要があります。
この時点で、スーパー構成の準備が整いました。
4 番目のステップ、test
3 番目のステップで指定した非 nobody ユーザーとしてログインし、以下を実行します:
% /bin/super auser testuser
前の設定にエラーがなければ、ユーザー testuser が正常に作成されるはずです。
% cat /etc/passwd | grep testuser
コマンドを使用して確認できます。
ステップ 5、PHP でコマンドを呼び出します
以下は PHP コードです:
if ($username)

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