MENU

PHPwebサーバー

webサーバーの実行ユーザーをPHPで確認する方法

更新日:2019/08/14

 

apacheやnginxなどのwebサーバーは、webサイトに外部からアクセスされると、専用のユーザーを割り振ります。

 

サーバーの設定ファイルを見れば、そのユーザーを知ることができますが、設定ファイルの名前と場所を覚えられません( ;∀;)
(この記事でメモしておきます)

 

そこでPHPでプログラムを組んでおいて、サーバーにアップロードするだけで調査できるようにしました。

 

自分でサーバーを構築したときはあまり使いませんが、レンタルサーバーなどで重宝しています。

 

 

実行中のユーザー名とグループを表示するPHP

 

phpの関数にユーザー名やグループを取得するものがあるのですが、ここではexecでシェルコマンドを実行しています。

 

user-check.php:

<?php
$user = exec('whoami');
$group = exec('groups ' .$user);
echo "ユーザー:{$user}<br>";
echo "グループ:{$group}<br>";
?>

 

メモ帳などでPHPファイルを作成して、FTPで転送するか、次のコマンドで直接作成します。

 

$ echo '<?php $user = exec("whoami");$group = exec("groups " .$user);echo "user:{$user}<br>";echo "group:{$group}<br>"; ?>' > user-check.php

 

作成したファイルをブラウザから呼び出します。

 

http(https)://ドメイン/設置したフォルダ/user-check.php

 

実行結果例

ユーザー:kkkk
グループ:kkkk : members kkk

 

user-check.php実行結果

 

※確認したら、必ずサーバーからuser-check.phpを削除しておきましょう。

apacheの設定ファイルを確認する方法

 

apacheで、設定ファイルからユーザーとグループを確認する場合、次のファイルを参照します。

 

Redhat系:CentOSなど
/etc/httpd/conf/httpd.conf

 

Debian系:Ubuntuなど
/etc/apache2/apache2.conf

 

このファイルの中に、「User」と「Group」というディレクティブがあるので、確認します。

 

Redhat系:

$grep -v '^\s*#' /etc/httpd/conf/httpd.conf | grep -E 'User|Group'
User apache
Group apache

 

上の例では、ユーザ名がapache、グループ名がapacheということがわかります。

 

Debian系:

$grep -v '^\s*#' /etc/apache2/apache2.conf | grep -E 'User|Group'
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

 

${XXX}は、XXXという名前の環境変数を参照を意味しています。
Debian系は環境変数を参照するようです。

 

環境変数はenvというコマンドで一覧表示できるのですが、APACHE_RUN_USERAPACHE_RUN_GROUPは表示されませんでした。

 

/etc/apache2/apache2.confを見ると、次のように書いてありました。

# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

 

#行の意味は、『これらは/etc/ apache2/ envvarsに設定する必要があります』です。

 

/etc/apache2/envvarsを見ると、次のような記述がありました。

 

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

 

たぶんこれが、設定内容なので、ユーザ名がwww-data、グループ名がwww-dataということがわかります。

 

ちなみに、ユーザーについては次のコマンドで確認できます。

 

$ ps aux | grep apache

 

最初に表示される文字列がユーザー名です。

 

結果

apache 25607 0.0 0.7 562312 13608 ? S 8月13 0:00 /usr/sbin/httpd -DFOREGROUND

 

上のように表示されたら、apacheがユーザー名です。

 

Nginxの設定ファイルを確認する方法

Nginxは、/etc/nginx/nginx.confを確認します。

 

2,3行目に次のように記述されていました。

 

user nginx nginx;

 

この場合、ユーザー「nginx」、グループで「nginx」で実行されています。

 

ちなみに、ユーザーについては次のコマンドで確認できます。

 

$ ps aux |grep nginx |grep -v grep
root 23647 0.0 0.0 136916 744 ? Ss 8月02 0:00 nginx: master process /usr/sbin/nginx
nginx 23648 0.0 0.4 142400 4520 ? S 8月02 0:53 nginx: worker process

 

実はNginxはmasterとworkerというプロセスが走っていて、masterがroot、workerが設定したユーザになっています。

 

Webの処理はワーカーが処理するので、ブラウザからのアクセスは上の例ではnginxユーザーとなります。

けーちゃんおススメJavaScript入門書

  • スラスラ読める JavaScript ふりがなプログラミング
  • プログラム未経験者がJavaScript始めるならコレ!
    コードを掲載して自分で理解しろという投げっぱなしな入門書とは異なり、コードに一つ一つどんなことをやっているかをふりがなという形式で解説しています。
    それでいてJavaScriptの基礎と応用を学べる良書です。
  • これからWebをはじめる人のHTML&CSS、JavaScriptのきほんのきほん
  • JavaScriptの機能を実践で活かすにはHTMLやCSSの知識が不可欠です。
    しかしそれらの知識があることが前提として書かれている書籍が多い中、この本は総合的な知識を身に着けることができます。
    HTMLやCSSの知識も不安な方には、ぴったりの一冊です
  •  

    入門書の役割は、自分のやりたいことをネットで調べることができるようになるための、基礎的な知識の獲得です。
    まずはこれらの本でしっかりと基礎知識を身につけましょう。
    そしてもっと高度なことや専門的なことはネットで調べ、情報が足りないと感じたら書籍を購入してください。


    記事の内容について

     

    こんにちはけーちゃんです。
    説明するのって難しいですね。


    「なんか言ってることおかしくない?」
    たぶん、こんなご意見あると思います。

    裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。

    そんなときは、ご意見もらえたら嬉しいです。

    ご意見はこちら。
    https://note.affi-sapo-sv.com/info.php

    【お願い】

    お願い

    ■このページのURL


    ■このページのタイトル


    ■リンクタグ


    ※リンクして頂いた方でご希望者には貴サイトの紹介記事を作成してリンクを設置します。
    サイト上部の問い合わせよりご連絡ください。
    ただしサイトのジャンルによっては、お断りさせていただくことがあります。