任意ユーザー(ここではwebappというユーザー)を追加して、そのユーザーでphpを動かす方法について記載します。
環境は AmazonLinux2 で、nginx、php-fpm はインストール済とします。
1. webappユーザーの追加の前準備
デフォルトだと webappユーザーを追加する際、ホームディレクトの /home/webapp
の権限が 700
で作成されてしまいます。
これだと他のユーザーが/home/webapp
ディレクトリに入れないので、権限を755
とする為、login.defs
の UMASK
の設定を変更します。
$ sudo vi /etc/login.defs
# 略
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 022 <=====この行を077 から 022に変更する
# 略
2. webappユーザーの追加
以下のコマンドを入力して、webapp
ユーザーを作成します。
$ sudo useradd webapp
以下のコマンドでユーザーが追加されているか確認します。
$ id webapp
uid=1001(webapp) gid=1001(webapp) groups=1001(webapp) <=====このように表示されればOK
念の為、ディレクトリの権限も確認します。
$ ls -l /home
略
drwxr-xr-x 7 webapp webapp 173 12月 14 04:09 webapp <=====権限が755になっています
3. php-fpm の権限変更
/etc/php-fpm.d
ディレクトリのwww.conf
を編集します。
$ sudo vi /etc/php-fpm.d/www.conf
略
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = webapp <=====ここをwebappにします
; RPM: Keep a group allowed to write in log dir.
group = webapp <=====ここをwebappにします
; The address on which to accept FastCGI requests.
略
4. php-fpm の再起動と確認
以下コマンドでphp-fpm
を再起動します。
$ sudo systemctl restart php-fpm
以下コマンドでphp-fpmのプールのユーザーやグループが変更されたかを確認します。
$ ps -o user,group,cmd -e | grep -v grep | grep php-fpm
root root php-fpm: master process (/etc/php-fpm.conf)
webapp webapp php-fpm: pool www <=====webappになっている
webapp webapp php-fpm: pool www
webapp webapp php-fpm: pool www
webapp webapp php-fpm: pool www
webapp webapp php-fpm: pool www
5. nginx の再起動
忘れがちですが、nginxも再起動が必要です。
$ sudo systemctl restart nginx
以下コマンドでwebapp
ユーザーになります。また-
をつけることで、そのユーザーのディレクトリに自動で移動します。
$ sudo su - webapp
6. まとめ
これでwebapp
ユーザーでログインし、/home/webapp
フォルダにPHPアプリケーションを置く(cloneとかでもってくる)ことにより、ファイル権限もwebapp
になり、動いているphpもwebapp
で動かすことができるようになりました。
phpは吐き出すログファイルなどの権限もwebapp
になるので、整合性がとれるようになります。