마 젠토 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을 할당하고 싶지 않습니다. 할당 할 수있는 더 구체적인 권한이 있습니까?
Neekoy

Magento는 폴더에 대한 파일 권한을 775로 설정하고 파일 권한을 644로 설정합니다
Rishabh Rk Rai

참고로, magento 2가 "홈"디렉토리에 var/cache있고 pub/staticsuid 비트 세트가 필요한 경우. 내가 사용한 : find var/cache -type d -print0 | xargs -0 sudo chmod 1775
Chris K

답변:


117

http://devdocs.magento.com/ 을 참조 하십시오.

중요한 것들 :

Magento 파일 시스템의 소유자 : 모든 파일 및 디렉토리를 완전히 제어 (읽기 / 쓰기 / 실행)해야합니다.

웹 서버 사용자가 아니어야합니다. 다른 사용자 여야합니다.

웹 서버 사용자는 다음 파일 및 디렉토리에 대한 쓰기 액세스 권한이 있어야합니다. var app / etc pub (및 아마도 2.2.1의 새로운 기능) generated

또한 웹 서버 그룹은 Magento 파일 시스템을 소유해야 Magento 사용자 (그룹에있는 사용자)가 웹 서버 사용자와 파일에 대한 액세스를 공유 할 수 있습니다. (여기에는 Magento Admin 또는 기타 웹 기반 유틸리티로 만든 파일이 포함됩니다.)

다음과 같이 권한을 설정하는 것이 좋습니다.

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
그러나 이것은 개발 모드입니다. 프로덕션 환경에서는 그룹 읽기 전용이어야합니다. 어떻게 작동해야하는지 알 수 없음
Alex

3
chmod u+x bin/magento콘솔 명령도 실행할 수 있어야 한다고 생각 합니다.
Volvox

42
친구 친구 777을 허용하지 않습니다
대런 펠튼

6
app / etc 777> 하하. 해킹 가능 app / etc에는 DB 정보가 포함되어 있습니다
CompactCode

19

드문 경우이지만 @MagenX가 말한 것처럼 770과 660을 사용할 수 없습니다. 755와 644도 필요한 권한이 될 수 있습니다. (일부 빠른 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를 실행할 수 있습니다. -타입 f -exec chmod 664 {} \; 검색 . -타입 d -exec chmod 775 {} \; ./var -type d -exec chmod 777을 찾으십시오. {} \; ./pub/media -type d -exec chmod 777을 찾으십시오. {} \; ./pub/static -type d -exec chmod 777을 찾으십시오. {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magento 루트에 있으면 괜찮을 것입니다.
Daniel van der Garde

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에서 생성 된 폴더에 쓰기 권한을 부여하는 방법은 무엇입니까? @Rafael Corrêa Gomes
zus

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

로컬 개발 세트 pubvar775 또는 777


왜? (댓글의 길이가 최소입니다.)
vitoriodachef

7

SELinux를 사용하는 경우 (예 : CentOS) 다음을 시도하십시오.

sudo chcon -R -t httpd_sys_rw_content_t var

(물론 magento 루트 폴더에서)


6

마 젠토 커뮤니티에서 추천

다음과 같이 권한을 설정하는 것이 좋습니다.

모든 디렉토리 에는 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가 제공 한 devdoc을 읽고 실행중인 버전을 올바르게 보호하십시오.
themanwhoknowthetheman

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?

매번 권한을 변경하는 대신 루트에서 사용자로 적절한 사용자, 파일 소유자로 로그인 / 작업하십시오.

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

Windows에서 생성 된 폴더에 쓰기 권한을 부여하는 방법은 무엇입니까? @MagenX
zus


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

이 명령을 루트 사용자로 실행하십시오. 777 권한을 이미 부여한 경우 처음 두 명령을 사용하여 권한을 되 돌리면 나머지를 진행하십시오.

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 사용자 및 웹 사용자로 설정하십시오.

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

이 명령을 실행하면 Magento 루트의 폴더 및 파일과 var, pub 및 생성 된 디렉토리에 새 파일을 만들 수있는 권한이 설정됩니다.

루트 사용자 로 새 정적 파일 이 생성 될 수 있으므로 루트 사용자 로 명령을 실행하지 마십시오. 그러면 웹 사용자가 해당 파일에 액세스하여 777 권한을 제공하지 못하게 될 수 있습니다. Magento 명령을 Magento user 로 실행하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.