パーミッションの設定について

パーミッションの設定について(共通事項)

EC-CUBE の便利な機能のいくつかは、Webサーバがファイルに書き込みできることに基づいています。 しかし、アプリケーションがファイルに書き込み権限を持つことは危険です。 セキュリティの観点からベストなのは、パーミッションを可能な限り制限して特定のディレクトリ・ファイルのみに書き込み権限を与えることです。 以下のパーミッション設定に関してはどのインストール方法でも共通になります。

Webサーバの書き込み権限

EC-CUBEの全ての機能を利用するためには以下のディレクトリ・ファイルにWebサーバからの書き込み権限が必要です。

[eccube_root/]
  │
  ├──[app/]
  │   ├──[Plugin/]
  │   ├──[PluginData/]
  │   ├──[proxy/]
  │   └──[template/]
  ├──[html/]
  ├──[var/]
  ├──[vendor/]
  ├──[composer.json]
  └──[composer.lock]

その他のディレクトリ・ファイルには読み取り権限が必要です。

eccube_root/

EC-CUBEのルートディレクトリにWebサーバの書き込み権限が必要です。 ルートディレクトリ配下には .env ファイルや .maintenance ファイル等が配置されます。 ルートディレクトリ配下は別の推奨権限がありますので一括権限変更しないようにご注意ください。

app/

ディレクトリにWebサーバの書き込み権限が必要です。 配下のディレクトリにWebサーバの書き込み権限が必要なためです。

app/Plugin/

ディレクトリにWebサーバの書き込み権限が必要です。 プラグインのソースコードが配置されます。

app/PluginData/

ディレクトリにWebサーバの書き込み権限が必要です。 プラグインのデータが配置されます。

app/proxy/

ディレクトリ配下にWebサーバの書き込み権限が必要です。 Entity拡張で生成されるproxyファイルが配置されます。

app/template/

ディレクトリ配下にWebサーバの書き込み権限が必要です。 テンプレートファイルが配置されます。

html/

ディレクトリ配下にWebサーバの書き込み権限が必要です。 cssファイルやjsファイル等が配置されます。

var/

ディレクトリ配下にWebサーバの書き込み権限が必要です。 キャッシュやログなどの一時ファイルが配置されます。

vendor/

ディレクトリ配下にWebサーバの書き込み権限が必要です。 プラグインインストール時にライブラリがインストールされ、クラスマップが更新されます。

composer.json / composer.lock

ファイルにWebサーバの書き込み権限が必要です。 プラグインインストール時に更新されます。

パーミッションの設定例

権限が必要なロールはサーバの仕様によって異なります。 例えば共有サーバ等の場合、ファイルを設置するFTPユーザとWebサーバの実行ユーザが異なる場合があります。 この場合、WebサーバはOtherでの権限でアクセスすることになりますので、EC-CUBEの機能を利用するためにはOtherに対して適切に書き込み権限を設定する必要があります。

ディレクトリ・ファイル Webサーバに必要な権限 設定例
eccube_root/
app/
app/Plugin/
app/PluginData/
app/proxy/
app/template/
html/
var/
vendor/
読み取り、書き込み 707( rwx---rwx )
その他のディレクトリ 読み取り 705( rwx---r-x )
composer.json
composer.lock
読み取り、書き込み 606( rw----rw- )
その他のファイル 読み取り 604( rw----r-- )

本体のバージョンアップについて

アップデートプラグインにてEC-CUBE本体をバージョンアップする場合は全ファイルにWebサーバからの書き込み権限が必要になります。 バージョンアップの際は一時的にWebサーバの書き込み権限を付与していただき、アップデート後は推奨のパーミッション設定に戻してください。

bin/consoleについて

EC-CUBEのコマンドを利用する場合は bin/console に実行権限を付与してください。

本番環境でのパーミッション設定

前項ではEC-CUBEの全ての機能を利用するためのWebサーバの書き込み権限について記載いたしました。 本番環境ではさらにパーミッションを制限することで、よりセキュリティリスクを下げることができます。 ただしパーミッションの制限を強くすると一部機能が制限され、利便性が落ちてしまいます。 それぞれのファイル・ディレクトリの役割と制限内容を理解した上でパーミッションの設定をお願いします。

以下のディレクトリ・ファイルにはセキュリティの観点からWebサーバの書き込み権限を付与しないほうが安全です。

[eccube_root/]
  │
  ├──[app/]
  │   ├──[Plugin/]
  │   ├──[proxy/]
  │   └──[template/]
  ├──[vendor/]
  ├──[.env]
  ├──[.htaccess]
  ├──[composer.json]
  └──[composer.lock]

上記のディレクトリ・ファイルのWebサーバの書き込み権限を制限した場合には以下の機能が制限されます。

  • コンテンツ管理
    • ページ管理
    • ブロック管理
    • メンテナンス管理
  • 設定
    • 店舗設定
      • 特定商取引法設定
      • 利用規約設定
      • メール設定
    • システム設定
      • セキュリティ管理
  • オーナーズストア
    • プラグイン
      • プラグイン一覧
    • テンプレート
      • テンプレート一覧
      • アップロード
    • 設定

.env と .htaccess

.env はEC-CUBEのインストール時に作成され、EC-CUBEの重要な設定が記載されています。 また、 .htaccess にはWebサーバの設定や環境変数等の重要な設定が記載されています。 共に重要な設定が記載されたファイルですので、Webサーバからの読み取り権限と書き込み権限のみに制限したほうが安全です。 ファイルの所有者をWebサーバのユーザに設定し、 400(rw-------) のパーミッションを設定してください。 本番環境の .env ファイルの利用については本番環境での .env ファイルの利用についても合わせてご覧ください。

var/

キャッシュやログ等のEC-CUBEの稼働に必要なファイルが設置されます。 EC-CUBEが稼働するためにはWebサーバの書き込み権限が必要です。

app/PluginData/

プラグインのデータを配置するためのディレクトリです。 app/PluginData/ を利用しているかどうかはプラグインによって異なります。 app/PluginData/ を利用するプラグインがインストールされている場合にはWebサーバの書き込み権限が必要です。

html/

商品等の画像等をアップロードした際に html/ に配置されます。 Webサーバからの書き込み権限を制限すると以下の機能が制限されます。

  • 商品管理
    • 商品登録
      • 商品画像
  • コンテンツ管理
    • ファイル管理
  • 設定
    • 店舗設定
      • 支払方法設定
        • ロゴ画像