2026.03.25本番環境で迷わない!パーミッションと所有者の正しい設定ガイドTECH BLOG

  • HOME
  • TECH BLOG
  • 本番環境で迷わない!パーミッションと所有者の正しい設定ガイド

システムを本番サーバーへアップロードした際、「エラーが出て動かない」「画像がアップロードできない」といったトラブルの多くは、パーミッション(権限)所有者の設定ミスが原因です。

とりあえずで 777 に設定するのは非常に危険です。この記事では、セキュリティを保ちつつシステムを正常に動かすための「正しい設定」を解説します。


1. 基本の考え方:最小権限の原則

サーバー運用の鉄則は、「必要最小限の権限しか与えない」ことです。基本的には以下の構成を目指します。

  • 所有者: Webサーバーを動かすユーザー(www-datanginx など)
  • 権限: 読み取りは許可するが、書き込みは必要な場所だけに限定する

2. 所有者(Owner)の設定

まず、ファイルの「持ち主」をWebサーバーの実行ユーザーに変更します。これにより、Webサーバーがファイルを読み取れるようになります。

# 一般的なWebサーバーユーザーに変更する例(Ubuntu/Debian系の場合)
sudo chown -R www-data:www-data /var/www/html/project-name

注意: 自分のユーザー名(例:ec2-usersftp-user)が所有者でないと、FTPでのアップロードができなくなる場合があります。その場合は、Webサーバーのグループに自分を追加するなどの対応が必要です。


3. パーミッション(Permission)の推奨値

ファイルの種類によって、以下の数値を設定するのが一般的かつ安全です。

対象 推奨値 理由
ディレクトリ 755 所有者は全操作可能、他人は読み取りと移動のみ。
ファイル 644 所有者は読み書き可能、他人は読み取りのみ。
書き込みが必要なフォルダ 775 / 700 ログ保存先や画像アップロード先など。

一括で設定する便利なコマンド

一つずつ設定するのは大変なので、find コマンドを使って一気に変更するのが効率的です。

# ディレクトリをすべて 755 に
find /var/www/html/project-name -type d -exec chmod 755 {} \;

# ファイルをすべて 644 に
find /var/www/html/project-name -type f -exec chmod 644 {} \;

4. Laravelなどのフレームワーク特有の設定

Laravelなどのモダンなフレームワークでは、システムがログを書いたりキャッシュを生成したりするために、特定のディレクトリだけ書き込み権限を与える必要があります。

# Laravelの場合の例
chmod -R 775 storage
chmod -R 775 bootstrap/cache

もしこれでもエラーが出る場合は、所有者が www-data になっているかを再確認してください。777 にするのは最後の手段(かつ一時的)に留めましょう。


5. なぜ「777」がダメなのか?

chmod 777 は、「そのサーバーにアクセスできる人なら誰でも、ファイルを書き換えたり、悪意のあるプログラムを実行したりできる」状態を指します。

  • 設定ファイルを書き換えられてデータベース情報を盗まれる
  • ウイルスを仕込まれて、踏み台サーバーにされる

といったリスクをゼロにするためにも、適切な権限管理は必須です。


まとめ

本番環境の設定は、以下の3ステップをルーチンにしましょう。

  1. 所有者をWebサーバーユーザー(www-dataなど)にする
  2. ディレクトリ755ファイル644 にする
  3. 書き込みが必要な場所(storageなど)だけ 775 にする

これだけで、あなたのシステムのセキュリティと安定性は格段に向上します。