Nginxの実行ユーザとグループを確認するための2つの方法を紹介します。
実行中のプロセスから確認する (psコマンド)
実際に動作しているNginxプロセスのユーザーとグループを確認する、最も確実な方法です。
psコマンドの「o」オプションを使うと、表示したい項目を「,」区切りでを自由に指定することができます。
下記のように、ユーザ名(user)、グループ名(gropu)、コマンド名(command)を指定して、その結果を「|」(パイプ)でgrepに渡してnginxという文字列が含まれている行のみ表示させることで、動作してるNginxのユーザ名、グループ名を確認することができます。
ps axo user,group,command | grep nginx
実行結果の例
以下はコマンドの実行結果の例です。
$ ps axo user,group,command | grep nginx root root nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx nginx nginx: worker process nginx nginx nginx: worker process nginx nginx nginx: worker process nginx nginx nginx: cache manager process nginx nginx php-fpm: pool www nginx nginx php-fpm: pool www tamohiko tamohiko grep --color=auto nginx
結果の見方
Nginxは役割の違うプロセスで動作していて、それぞれ別のユーザとグループで実行されていました。
- master process: rootユーザ、rootグループで起動
Nginx全体の司令塔で、設定ファイルを読み込み、ポートの確保など起動時にroot権限が必要な処理だけを行います。 - worker process: nginxユーザ、nginxグループで起動
実際にクライアントと通信を行う役割をもっています。 - cache manager process: nginxユーザ、nginxグループで起動
Nginxのキャッシュ機能を管理するプロセスです。
※NginxとバックエンドアプリケーションをUNIXドメインソケットで連携させる際に合わせる必要があるのは、「worker process」のユーザーとグループです。
Nginxの設定ファイルから確認する (nginx.conf)
Nginxの設定ファイルである「/etc/nginx/nginx.conf」の「user」項目で実行ユーザが設定されています。
$ grep '^user' /etc/nginx/nginx.conf user nginx;
※ 「^user」とすることで、行頭が「user」で始まる行(設定項目)のみを的確に探せます。
ユーザ名だけが指定されている場合
この場合は、グループ名が指定されていないので、ユーザ名と同じ「nginx」グループが適用されます。
user nginx;
ユーザ名とグループ名の両方が指定されている場合
このようにスペース区切りで記述されている場合、1つ目がユーザー名 (nginx)、2つ目がグループ名 (www-data) となります。
user nginx www-date;
まとめ: どちらの方法を使うべき?
2つの方法には、それぞれ以下のような意味合いがあります。
- psコマンド: 「今、実際にどう動いているか」という現実を確認する方法
- 設定ファイル(nginx.conf): 「本来、どう動かすべきか」という設定を確認する方法
基本的には、まず設定ファイルで設定内容を確認し、その上でpsコマンドを使って実際の動作を検証するのが、最も確実で間違いのない手順と言えます。
コメント