最新の記事や関連記事をお探しの方は下の「サイト内検索」で検索してみてください。
共用サーバーとかで設定ファイルのパーミッション設定によってDBのユーザー名やパスワードが漏出するというのがありました。
あれって、php がウェブサーバーの実行ユーザーで実行されるから第3者への読み取り権限をつけていたからだと思うんです。
apache + mod_php の場合だと apache ユーザーでの読み込みが必要となりますからそれに紛れて第3者がアクセスできたということみたいですね。そうしないと設定ファイルが読み取れなくてプログラムが動かなくなりますしね。
じゃぁどう対応するかっていうと第3者の読み取り権限を外してしまえばいいわけです。
そうなると apache ユーザーからも読み込みができなくなるのでプログラムが動かなくなってしまいます。
さぁ困った。
というわけで今回は php 実行時のユーザーをファイル所有者とあわせれるようにしてみます。
なお、今回は Nginx + php-fpm という環境の前提で進めます。
apache の場合? suPHP とかでググってみてください。いろいろと情報はあるようです。
まずは php-fpm の設定を変更します。
1 |
# emacs /usr/local/php/etc/php-fpm.conf |
include=etc/fpm.d/*.conf
というのがコメントアウトされているのでコメントインして微修正します。
include=etc/php-fpm.d/*.conf
とします。
hoge ユーザー用の php-fpm の設定ファイルを作成します。
1 2 |
# mkdir /usr/local/php/etc/php-fpm.d # emacs /usr/local/php/etc/php-fpm.d/hoge.conf |
1 2 3 4 5 6 7 8 9 10 |
[hoge] listen = /var/run/php-fpm-hoge.sock user = hoge group = hoge pm = dynamic pm.max_children = 5 pm.start_servers = 3 pm.min_spare_servers = 2 pm.max_spare_servers = 4 pm.max_requests = 200 |
保存したら php-fpm を再起動します。
1 2 |
# service php-fpm stop # service php-fpm start |
1 |
# ps aux | grep '^hoge' |
として php-fpm のプロセスが start_servers の数だけあるか確認しておきます。
続けて Nginx の設定ファイルを変更します。
1 |
# emacs /usr/local/nginx/conf/nginx.conf |
すでに php-fpm を使っていれば upstream の設定があると思うのでそれをコピペ&微修正します
upstream 名は他のと被らないようにし、 server には hoge.conf に設定した listen とあわせます。
1 2 3 4 |
upstream php-fpm-hoge { ip_hash; server unix:/var/run/php-fom-hoge.sock; } |
次にバーチャルホストの設定を変更します。
1 |
# emacs /usr/local/nginx/conf.d/vhost-hoge.conf |
fastcgi_pass の設定を先ほどの php-fpm-hoge に設定します。
あとは Nginx の設定を再読み込みすればok。
1 |
# service nginx reload |
試しに hoge の public ディレクトリに phpinfo でも作成して確認してみましょう。
一番下の方の Environment の項目で USER のところが hoge になっていれば hoge ユーザーで実行されています。