Magento 2フォルダー/ファイルのアクセス許可


61

Magento 2のインストールで権限が台無しになったのではないかと思います。古いバージョンでは、次のコマンドを実行してフォルダー755とファイル644を作成します。

find . -type f -exec chmod -c 644 {} \; && find . -type d -exec chmod -c 755 {} \;

Magento 2の正しいファイルとフォルダーのアクセス権は異なるようですので、教えてください。また、異なるアクセス許可が必要な特定のフォルダーまたはファイルがある場合。


バックアップを取る前に777許可を試してください
Magento 2

私のサーバーのPHPハンドラーはsuPHPであり、777をすべてに実際に割り当てたくないのは、それが私のWebサイトを実質的に誰にでも開くからです。割り当てることができるより具体的な権限はありますか?
-Neekoy

Magentoには、775のフォルダーに対するファイル許可があり、644のファイル許可に設定されている
Rishabh Rk Rai

Magentoの2は「ホーム」ディレクトリ内にある、場合FYI、var/cacheおよびpub/static必要SUIDビットを設定します。私が使用したもの: find var/cache -type d -print0 | xargs -0 sudo chmod 1775
クリスK

回答:


118

http://devdocs.magento.com/を参照できます

重要なこと:

Magentoファイルシステムの所有者:すべてのファイルとディレクトリのフルコントロール(読み取り/書き込み/実行)が必要です。

Webサーバーのユーザーであってはなりません。別のユーザーである必要があります。

Webサーバーのユーザーは、次のファイルとディレクトリへの書き込みアクセス権を持っている必要があります。

さらに、Magentoユーザー(グループ内)がファイルへのアクセスをWebサーバーユーザーと共有できるように、WebサーバーのグループがMagentoファイルシステムを所有している必要があります。(これには、Magento Adminまたはその他のWebベースのユーティリティによって作成されたファイルが含まれます。)

次のように権限を設定することをお勧めします。

All directories have 770 permissions.

770 permissions give full control (that is, read/write/execute) to the owner and to the group and no permissions to anyone else.

All files have 660 permissions.

660 permissions mean the owner and the group can read and write but other users have no permissions.

推奨されるように設定する必要があります。

cd <your Magento install dir> 

find . -type f -exec chmod 644 {} \;                        // 644 permission for files

find . -type d -exec chmod 755 {} \;                        // 755 permission for directory 

find ./var -type d -exec chmod 777 {} \;                // 777 permission for var folder    

find ./pub/media -type d -exec chmod 777 {} \;

find ./pub/static -type d -exec chmod 777 {} \;

chmod 777 ./app/etc

chmod 644 ./app/etc/*.xml

chown -R :<web server group> .

chmod u+x bin/magento

これがあなたのお役に立てば幸いです。


3
それは私のためにのみ\;、例えば:find ./var -type d -exec chmod 777 {} \;
-bpoiss

1
ただし、これは開発モード用です。実稼働環境では、グループ読み取り専用である必要があります-どのように機能するかわかりません
アレックス

3
また、chmod u+x bin/magentoコンソールコマンドを実行できる必要があると思います。
ボルボ

42
友人は友人777を許可しない
ダレンフェルトン

6
app / etc 777>いいね。ハッキングが簡単。app / etcにはデータベース情報が含まれています
-CompactCode

19

まれに、@ MagenXが言うように、770と660を使用できないことがあります。755と644も必要な許可になる可能性があります。(私が推測する一部のFast-CGIユーザー)

したがって、その場合、次を実行します。

find . -type d -exec chmod 755 {} \; && find . -type f -exec chmod 644 {} \; && chmod u+x bin/magento

これで修正されたようですが、Magentoが新しいファイルまたはディレクトリを生成した場合、それらは再び770および660の許可を持ちます。これらのデフォルトのchmod値は、次のファイルで編集できます。

/vendor/magento/framework/Filesystem/DriverInterface.php 
(WRITEABLE_DIRECTORY_MODE and WRITEABLE_FILE_MODE)

/lib/internal/Cm/Cache/Backend/File.php 
(directory_mode and file_mode)

これらの変更後、最初のコマンドを再度実行すると、新しく生成されたファイルは問題になりません。

注:このようなファイルの編集は決して良い考えではありませんが、これらのchmodオプションは将来構成可能になると思われるので、簡単な方法を取りました。


1
M231で/lib/internal/Cm/Cache/Backend/File.phpを見つけることができません
snh_nl

@snh_nl Magentoの新しいバージョンでは、許可を設定しても、775を使用しているように見えます。新規インストール後、単にfindを実行できます。-type f -exec chmod 664 {} \; 見つける 。-type d -exec chmod 775 {} \; find ./var -type d -exec chmod 777 {} \; find ./pub/media -type d -exec chmod 777 {} \; find ./pub/static -type d -exec chmod 777 {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magentoルートで元気です。
ダニエル・ファン・デル・ガルド

11

Magentoのドキュメントで推奨されている方法を使用できます。

find . -type f -exec chmod 664 {} \;
find . -type d -exec chmod 775 {} \;
find var pub/static pub/media app/etc -type f -exec chmod g+w {} \;
find var pub/static pub/media app/etc -type d -exec chmod g+ws {} \;
chmod u+x bin/magento

Windowsで生成されたフォルダに書き込み許可を与える方法は?@ラファエル・コレア・ゴメス
zus

8
sudo find . -type d -exec chmod 770 {} \; && sudo find . -type f -exec chmod 660 {} \; && sudo chmod u+x bin/magento

ローカル開発セットpubおよびvar775または777へ


どうして?(コメント長に最小値がある)
vitoriodachef

7

SELinux using(CentOSなど)を使用している場合:

sudo chcon -R -t httpd_sys_rw_content_t var

(もちろんmagentoのルートフォルダーから)


6

Magentoコミュニティで推奨

次のように権限を設定することをお勧めします。

すべてのディレクトリに770の権限があります。770パーミッションは、所有者とグループにフルコントロール(つまり、読み取り/書き込み/実行)を与え、他のユーザーにはパーミッションを与えません。

すべてのファイルに660のアクセス許可があります。660のアクセス許可は、所有者とグループは読み取りと書き込みができるが、他のユーザーにはアクセス許可がないことを意味します。

詳細については、このリンクhttps://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.htmlを参照してください



4

このコンテンツをルートフォルダーに入れてから、コンソールで実行します。

することを忘れないでくださいchmod +x yourfile.sh

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/

このコードをどのように配置できますか?htaccesまたはPHPファイルとして
matinict

これを避けてください、それは基本的にあなたのウェブサーバーディレクトリを公開することです。代わりに、magentoが提供するdevdocsを読んで、実行中のバージョンを適切に保護してください。
themanwhoknowtheman

4

特別なアクセス許可はありません。phpを実行するユーザーまたはcPanelの場合、cpanelユーザーと同じグループがファイルを所有していることを確認するだけです。

あなたのコマンドは良いです:

find . -type f -exec chmod -c 644 {} \; && find . -type d -exec chmod -c 755 {} \;

ファイルの所有者を更新するだけです:

chown -R user:user *

phpを実行userする所有者はどこuserですか。

毎回権限を変更する代わりに、適切なユーザー、ファイル所有者として、rootからユーザーにログイン/作業します。

cd /magento/root/folder/
su $(stat -c '%U' index.php) -s /bin/bash
whoami
pwd

Windowsで生成されたフォルダに書き込み許可を与える方法は?@MagenX
zus

3
find . -type f -exec chmod 400 {} \;
find . -type d -exec chmod 500 {} \;
find var/ -type f -exec chmod 600 {} \;
find media/ -type f -exec chmod 600 {} \;
find var/ -type d -exec chmod 700 {} \;
find media/ -type d -exec chmod 700 {} \;
chmod 700 includes
chmod 600 includes/config.php

また、詳細情報は、http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.htmlで入手できます。


5
Magento 2に関するアドバイスを求める質問
Flipmedia

0

Plesk Onyx 17.8.11上のCentOS Linux 7.4.1708でこのように解決しました

find . -type f -exec chmod 644 {} \; &&  find . -type d -exec chmod 755 {} \; && find ./var -type d -exec chmod 777 {} \; && find ./pub/media -type d -exec chmod 777 {} \; && find ./pub/static -type d -exec chmod 777 {} \; && chmod 777 ./app/etc  && chmod 644 ./app/etc/*.xml

chown -R :<web server group> .

ファイルやディレクトリで777を使用しないでください。それはあなたの店を不必要なセキュリティリスクにさらします。代わりに、実行しているバージョンについてmagentoが提供するドキュメントをお読みください。
-themanwhoknowthetheman

0

これらのコマンドをrootユーザーとして実行します。すでに777の許可を与えている場合、最初の2つのコマンドを使用して元に戻します。

find . -type f -exec chmod 664 {} \;

find . -type d -exec chmod 775 {} \;

find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +

find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +

所有権をMagentoユーザーとWebユーザーに設定します

sudo chown -R <Magento user>:<web server group> .

これらのコマンドを実行すると、Magentoルートのフォルダーとファイル、およびvar、pub、および生成されたディレクトリに作成される新しいファイルのアクセス許可が設定されます。

rootユーザーとしてコマンドを実行しないでください。これにより、新しい静的ファイルがroot所有権で作成され、Webユーザーがそのようなファイルにアクセスして777許可を強制する可能性があります。いずれにしても、777許可を与えないでください。元に戻します。Magento ユーザーとしてMagentoコマンドを実行します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.