ホームページ > バックエンド開発 > PHPチュートリアル > CentOS 上の PHP から root コマンドを実行するにはどうすればよいですか?

CentOS 上の PHP から root コマンドを実行するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-16 04:24:02
オリジナル
195 人が閲覧しました

How to Execute Root Commands from PHP on CentOS?

PHP を介した root コマンドの実行

CentOS サーバー上の PHP コードから root 権限でコマンドを実行したいとのこと。問題を調査し、考えられる解決策を提示しましょう。

問題:

exec() 関数を使用して sshd サービスを再起動しようとしましたが、それにはroot アクセス。Apache ユーザーには許可されません。 root 権限で Apache を実行したり、sudoers ファイルを変更したりするなどの解決策を試しましたが、問題は解決されていません。

バイナリ ラッパーを使用した解決策 (Suid ビットあり):

  1. シェル スクリプトを作成します: まず、以下を作成します。 root として実行するコマンドを含むスクリプト (php_shell.sh など)。
  2. 所有権と権限の設定: root ユーザーがスクリプトを所有し、それが次の権限があります:

    • 所有者: 読み取り、書き込み、実行(rwx)
    • グループ: 読み取り、実行 (rx)
    • その他: 読み取り、実行 (rx)
  3. 作成バイナリ ラッパー: シェルを実行するバイナリ ラッパーを作成しますroot権限を持つスクリプト。以下にラッパーの例を示します:

    # cat > wrapper.c <<CONTENT
    #include <stdlib.h>
    #include <sys/types.h>
    #include <unistd.h>
    
    int
    main (int argc, char *argv[])
    {
       setuid (0);
       system ("/bin/sh /path/to/php_shell.sh");
       return 0;
     }
    CONTENT
    ログイン後にコピー
  4. コンパイルと権限の設定: バイナリ ラッパーをコンパイルし、suid ビットを使用して設定します:

    • コンパイル: gcc Wrapper.c -o php_root
    • 所有権の設定: chown root php_root
    • 権限の設定: chmod u=rwx,go=xr, s php_root

この php_rootラッパーは、次の場合に php_shell.sh で指定されたコマンドを root 権限で実行します。

代替解決策:

外部シェル スクリプトを使用する代わりに、バイナリ ラッパーにコマンドを直接埋め込むことができます。手順 3 の内容を、root 権限で実行したいコマンドに置き換えるだけです。

注意:

実行したいスクリプトへの絶対パスを使用することが重要です。悪意のあるユーザーがバイナリを悪用して任意のコマンドを実行するのを防ぎます。

以上がCentOS 上の PHP から root コマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート