シェル スクリプトの権限の問題に関する PHP 分析

小云云
リリース: 2023-03-20 15:28:02
オリジナル
1591 人が閲覧しました

1. sudo の概要

sudo を使用すると、root が通常のユーザーにないいくつかの権限を割り当てることができるため、一般のユーザーも root ユーザーの関連する権限を持つことができます (たとえば、sudo は特定のコマンドの実行権限を特定のユーザーに割り当てることができます) )。
sudo にとって重要なファイルの 1 つは /etc/sudoers であり、どのユーザーがどのような種類のコマンドを実行できるかは、主にこのファイルに割り当てられたユーザーのみが sudo を使用できるかどうかによって決まります。

sudo -l 列出该用户能执行的命令  
sudo -u user 以指定用户来执行命令  
sudo -k 清楚入场券上的时间,下次使用sudo还要输入密码  
sudo -b 在后台执行命令
ログイン後にコピー
ログイン後にコピー

ターミナルに vim と入力して /etc/sudoers ファイルを開きます。
写真に示されている場所を見つけてください:
シェル スクリプトの権限の問題に関する PHP 分析

写真の赤いボックス内の内容は、後で私が追加したものです。www は、php を実行しているユーザーです。デフォルトの名前は、私が追加した環境によって異なります。 wwwのセントス。

phpの動作を確認できるユーザーは、以下のphpのWebページから入手できます。

<?php    
    echo shell_exec("id -a");  
?>
ログイン後にコピー
ログイン後にコピー

各行に 3 つの ALL があり、2 番目の括弧内の ALL はターゲット ユーザーを表し、最後の ALL はユーザーを表します。 . 実行するコマンドの名前 (このユーザーに実行できるようにするコマンドを指定できます)。

NOPASSWD は、パスワードが必要ないことを意味します。 (便宜上、ブラウザ経由でプログラムにアクセスすると、パスワードを入力してフィードバックを待つという余分な手順が発生します。これは本当に面倒です。これにより、多くの手間が省けます。)

Ubuntu の場合Fedora などの場合は、変更する必要はありません。

Defaults env_reset をオンにするだけです (つまり、先頭の # 記号を削除します)。 php.ini 設定ファイルでセーフ モードがオンになっているかどうか

  1. safe_mode =  off 这样就可以了
    ログイン後にコピー
    ログイン後にコピー

    php が Linux スクリプトを実行するために必要な関数はいくつありますか? 3 つあります (shell_exec()、system() など)。ここでは説明しません。詳細はここで説明していますので、system() 関数を使用します。

    route.php
  2. <?php   $ip=(string)$_POST["ip"];  
    system("su ./route.sh $ip",$status);  
    if($status == &#39;true&#39;)  
    {  
        echo "设置成功";  
    }  
    else  {  
        echo "设置失败";  
    }  
    ?>
    ログイン後にコピー
    ログイン後にコピー
前の設定が適切に設定された後、実行後、ブラウザーには設定が成功として表示され、スクリプトが正常に実行されたことが示されます。


1.phpの実行シェルは実際にはApacheやNginxのユーザーによって実行され、php自体がユーザーを作成するわけではありません。

2. 転載元

以前はECSで毎回rootユーザーでログインして操作していたので基本的にsudoは使っていませんでしたが、最近プロジェクトではブラウザ経由でphpのWebページにアクセスする必要があります。 Web ページは Linux 上でスクリプトを呼び出して実行します。もともとこれは非常に単純なものでしたが、実際に操作してみると、ブラウザからアクセスするたびにスクリプトが実行されるわけではなく、ターミナルのコマンドラインからphp Webページを実行する場合には問題ありませんでした。かなり違うと思い、よく考えてみると、ブラウザ経由でアクセスするのは、ターミナル内でイニシエータを直接実行するのとは違うことがわかり、ユーザーの権限に問題があるのではないかと思い、ネットで調べてみました。そして結果はsudoでした。

1. sudo の概要

sudo を使用すると、root が通常のユーザーにないいくつかの権限を割り当てることができるため、一般のユーザーも root ユーザーの関連する権限を持つことができます (たとえば、sudo は特定のコマンド実行権限を特定のユーザーに割り当てることができます) 。

sudo にとって重要なファイルの 1 つは /etc/sudoers で、どのユーザーがどのような種類のコマンドを実行できるかは、主にこのファイルに割り当てられたユーザーのみが sudo を使用できるかどうかによって決まります。

sudo -l 列出该用户能执行的命令  
sudo -u user 以指定用户来执行命令  
sudo -k 清楚入场券上的时间,下次使用sudo还要输入密码  
sudo -b 在后台执行命令
ログイン後にコピー
ログイン後にコピー
ターミナルに vim と入力して /etc/sudoers ファイルを開きます。

写真に示されている場所を見つけてください:


写真の赤いボックス内の内容は、後で私が追加したものです。www は、php を実行しているユーザーです。デフォルトの名前は、私が追加した環境によって異なります。 wwwのセントス。
シェル スクリプトの権限の問題に関する PHP 分析phpの動作を確認できるユーザーは、以下のphpのWebページから入手できます。

<?php    
    echo shell_exec("id -a");  
?>
ログイン後にコピー
ログイン後にコピー

各行に 3 つの ALL があり、2 番目の括弧内の ALL はターゲット ユーザーを表し、最後の ALL はユーザーを表します。 . 実行するコマンドの名前 (このユーザーに実行できるようにするコマンドを指定できます)。

NOPASSWD は、パスワードが必要ないことを意味します。 (便宜上、ブラウザ経由でプログラムにアクセスすると、パスワードを入力してフィードバックを待つという余分な手順が発生します。これは本当に面倒です。これにより、多くの手間が省けます)

Ubuntuの場合Fedora などの場合は、変更する必要はありません。

Defaults env_reset をオンにするだけです (つまり、先頭の # 記号を削除します)。 php.ini 設定ファイルでセーフ モードがオンになっているかどうか

safe_mode =  off 这样就可以了
ログイン後にコピー
ログイン後にコピー

php が Linux スクリプトを実行するために必要な関数はいくつありますか? 3 つあります (shell_exec()、system() など)。ここでは説明しません。詳細はここで説明していますので、system() 関数を使用します。

route.php
    <?php   $ip=(string)$_POST["ip"];  
    system("su ./route.sh $ip",$status);  
    if($status == &#39;true&#39;)  
    {  
        echo "设置成功";  
    }  
    else  {  
        echo "设置失败";  
    }  
    ?>
    ログイン後にコピー
    ログイン後にコピー
  1. 前の設定が適切に設定された後、実行後、ブラウザーには設定が成功として表示され、スクリプトが正常に実行されたことが示されます。

PHP 実行シェルは実際には Apache または Nginx ユーザーによって実行されますが、PHP 自体はユーザーを作成しません。


関連するおすすめ:

コアファイルを生成せずにシェルスクリプトを実行する問題をPHPがどのように解決するか

シェルスクリプトによるphp7のワンクリックインストールの例

シェルスクリプトコマンドの例

以上がシェル スクリプトの権限の問題に関する PHP 分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!