tamulab.jp

tamulabはプログラミングのtipsやインターネット上で気になったことなどを書き溜めています

Nginx + php-fpm の時に php の実行ユーザーを固定する

calendar

reload

共用サーバーとかで設定ファイルのパーミッション設定によってDBのユーザー名やパスワードが漏出するというのがありました。
あれって、php がウェブサーバーの実行ユーザーで実行されるから第3者への読み取り権限をつけていたからだと思うんです。
apache + mod_php の場合だと apache ユーザーでの読み込みが必要となりますからそれに紛れて第3者がアクセスできたということみたいですね。そうしないと設定ファイルが読み取れなくてプログラムが動かなくなりますしね。

じゃぁどう対応するかっていうと第3者の読み取り権限を外してしまえばいいわけです。
そうなると apache ユーザーからも読み込みができなくなるのでプログラムが動かなくなってしまいます。
さぁ困った。

というわけで今回は php 実行時のユーザーをファイル所有者とあわせれるようにしてみます。
なお、今回は Nginx + php-fpm という環境の前提で進めます。
apache の場合? suPHP とかでググってみてください。いろいろと情報はあるようです。


まずは php-fpm の設定を変更します。

include=etc/fpm.d/*.conf というのがコメントアウトされているのでコメントインして微修正します。
include=etc/php-fpm.d/*.conf とします。

hoge ユーザー用の php-fpm の設定ファイルを作成します。

保存したら php-fpm を再起動します。

として php-fpm のプロセスが start_servers の数だけあるか確認しておきます。

続けて Nginx の設定ファイルを変更します。

すでに php-fpm を使っていれば upstream の設定があると思うのでそれをコピペ&微修正します
upstream 名は他のと被らないようにし、 server には hoge.conf に設定した listen とあわせます。

次にバーチャルホストの設定を変更します。

fastcgi_pass の設定を先ほどの php-fpm-hoge に設定します。

あとは Nginx の設定を再読み込みすればok。

試しに hoge の public ディレクトリに phpinfo でも作成して確認してみましょう。
一番下の方の Environment の項目で USER のところが hoge になっていれば hoge ユーザーで実行されています。

この記事をシェアする

関連記事

[FuelPHP] 配列の値を入れ替える
FuelPHPでFieldset_Fieldクラスを使ってフィールド生成するときのエラーメッセージについて
[FuelPHP] Arr::get() が便利すぎる
FuelPHPのPaginationクラスについて

No Image

FuelPHP の ORM\Model での find(‘all’) について

folder Amazon

Fire TV Stickがキタ━(゚∀゚)━!!
Amazonでウィンターセール開催中(1/16まで)
AmazonでCyberMondayセール開催中[〜12/12]
more...

folder AWS

[9/15まで] AWS 無料クーポンプレゼント実施中
[8/25まで] AWS 無料クーポンプレゼント実施中
t2.nanoインスタンスを調べてみた
more...

sponsored link

folder CentOS

No Image

No Image

No Image

more...

folder FreeBSD

No Image

No Image

No Image

more...

folder git

[git] tigのインストール

No Image

No Image

more...

folder JavaScript

No Image

No Image

more...

folder JAWS-UG

JAWS-UG Shimane vol.5やります

No Image

more...

folder kindle

まだあった、ImpressのKindle本50%オフセール(2/23まで)
翔泳社のKindle本が50%オフセール中(2/22まで)
Kindle本50%ポイント還元フェア(1/22まで)
more...

folder MySQL

No Image

No Image

No Image

more...

folder PHP

[Laravel5] Query Builder を使った時にどんなSQLになるのか知りたい
[FuelPHP] 配列の値を入れ替える
[FuelPHP] Arr::get() が便利すぎる
more...

folder Ruby

入門Redmine 第5版を読んだよ
RubyWorldConference2016の参加券が届いたよ
Redmine 3.2.1でチケットのコピーができなくなった(追記あり:2016-06-30)
more...

folder ShellCommand

ランダムな文字列を生成する方法

No Image

more...

folder subversion

No Image

No Image

No Image

more...

folder WordPress

マテリアル2にチェンジ
EWWW Image Optimizerで画像をスリムにしよう
WordPressの記事を Markdown記法 で書く
more...

folder モノ

今年買ったペンを比べてみたよ
セリアのフリーノートを買ってみた
more...

folder 未分類

Withingsのスマート体重計Body Cardio開封の儀
格安SSL証明書 CoreSSL を設定してみた【スクリーンショット多数】
StartSSLで発行した証明書がFirefox51で使えなくなった[追記: Chromeも]
more...