Apacheにプロジェクトをアップロードし起動したら、ファイルのアクセス権がいろんなところでなく、大変な思いをしたので記載。 自分のローカルではroot権限でファイルの読み書きをしているので、Apach環境になると権限がなくエラーになる。Apacheでのユーザーにも正しく権限を付与する必要がある。
まず、Apacheの設定ファイル内にApacheの実行ユーザーが指定されているので確認する。
$ vi /etc/httpd/conf/httpd.conf\// file内User apacheGroup apache
ここに記載されているのが実行ユーザーと実行グループ。これがDemonになっている場合があるので、apacheに変更。その後、apacheを再起動する。
$ service httpd restartStopping httpd: [ OK ]Starting httpd: [ OK ]
次に、コンテンツディレクトリの所有者と所有グループをapacheに変更する。 chown -R で指定ディレクトリ以下の全てのディレクトリファイルを全て変更することができる。
$ chown -R apache:apache /実行させるフォルダのパス
今後のコンテンツディレクトリ以下に作成されるファイルの所有グループをapacheに固定する。 方法としてはSGIDを使う。SGIDについては割愛。
$ chmod -R 2770 /実行させるフォルダのパス
コンテンツディレクトリ以下のディレクトリのパーミッションを770に、ファイルのパーミッションを660にして、その他のユーザーがアクセスできないようにする。
$ find /実行させるフォルダのパス -type d -exec chmod 770 {} \;$ find /実行させるフォルダのパス -type f -exec chmod 660 {} \;
Web開発用ユーザーをapacheグループに入れる。 以後、そのユーザーグループを使用して開発を行う。
$ usermod -g apache グループ名
ファイルをアップロードするスクリプト使用する場合、ファイルの保存場所の所有者をapacheに、所有グループをapacheにする
$ chown apache:apache /var/uploads$ chmod 755 /var/uploads
httpdの実行ユーザーを独自に作成して(上記ではapache)、Webで公開するディレクトリやファイル以外のapacheの権限をちゃんと設定することで、悪意のあるスクリプトがきても被害を最小限に抑えることができる!!