Quyền truy cập thư mục / tệp Magento 2


61

Tôi nghi ngờ rằng các quyền có thể đã bị rối trong quá trình cài đặt Magento 2 của tôi. Trên các phiên bản cũ, tôi sẽ chạy lệnh sau để tạo thư mục 755 và tệp 644:

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

Bạn có thể vui lòng cho tôi biết quyền truy cập tệp và thư mục chính xác cho Magento 2 vì chúng có vẻ khác nhau không? Ngoài ra, nếu có một số thư mục hoặc tệp cụ thể sẽ cần các quyền khác nhau.


Hãy thử 777 Quyền trước khi sao lưu
Magento 2

Trình xử lý PHP của máy chủ của tôi là suPHP và tôi thực sự không muốn gán 777 cho mọi thứ vì điều đó thực tế sẽ mở trang web của tôi cho bất kỳ ai. Có quyền cụ thể hơn có thể được chỉ định?
Neekoy

Magento có quyền truy cập tệp trên các thư mục thành 775 và đối với quyền tệp được đặt thành 644
Rishabh Rk Rai

FYI, nếu magento 2 nằm trong thư mục "home" var/cachepub/staticcần thiết lập các bit suid. Tôi đã sử dụng: find var/cache -type d -print0 | xargs -0 sudo chmod 1775
Chris K

Câu trả lời:


117

bạn có thể tham khảo http://devdocs.magento.com/

Những điều quan trọng:

Chủ sở hữu hệ thống tệp Magento: Phải có toàn quyền kiểm soát (đọc / ghi / thực thi) tất cả các tệp và thư mục.

Không phải là người dùng máy chủ web; nó nên là một người dùng khác

Người dùng máy chủ web phải có quyền ghi vào các tệp và thư mục sau: var app / etc pub (và có thể mới trong 2.2.1 :) được tạo

Ngoài ra, nhóm của máy chủ web phải sở hữu hệ thống tệp Magento để người dùng Magento (người trong nhóm) có thể chia sẻ quyền truy cập vào tệp với người dùng máy chủ web. (Điều này bao gồm các tệp được tạo bởi Quản trị viên Magento hoặc các tiện ích dựa trên web khác.)

Chúng tôi khuyên bạn nên thiết lập các quyền như sau:

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.

Bạn nên đặt dưới đây được đề nghị.

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

Tôi hy vọng điều này sẽ giúp bạn.


3
Nó chỉ hoạt động với tôi \;, ví dụ:find ./var -type d -exec chmod 777 {} \;
bpoiss

1
Nhưng đây là cho chế độ phát triển. Để sản xuất, nó phải được đọc theo nhóm - không biết nó nên hoạt động như thế nào
Alex

3
Tôi nghĩ bạn cũng cần chmod u+x bin/magentocó khả năng thực thi các lệnh console.
Volvox

42
bạn bè đừng để bạn bè 777
Darren Felton

6
ứng dụng / vv 777> Haha đẹp. Dễ dàng hack. ứng dụng / etc chứa thông tin db của bạn
CompactCode

19

Trong một số trường hợp hiếm hoi, bạn không thể sử dụng 770 và 660, như @MagenX nói, 755 và 644 cũng có thể là sự cho phép bạn cần. (Một số người dùng Fast-CGI tôi đoán)

Vì vậy, trong trường hợp đó, bạn chạy:

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

Điều đó dường như khắc phục nó, nhưng nếu Magento tạo các tệp hoặc thư mục mới, chúng sẽ có quyền 770 và 660 một lần nữa. Bạn có thể chỉnh sửa các giá trị chmod mặc định đó trong các tệp sau:

/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)

Sau những thay đổi này, hãy chạy lại lệnh đầu tiên và sau đó, các tệp mới được tạo không còn là vấn đề nữa.

Lưu ý: Chỉnh sửa các tệp như thế này không bao giờ là một ý tưởng hay, nhưng tôi nghi ngờ các tùy chọn chmod này sẽ có thể được cấu hình trong tương lai, vì vậy tôi đã thực hiện một cách dễ dàng.


1
Không thể tìm thấy /lib/iternal/Cm/Cache/Backend/File.php trên M231
snh_nl

@snh_nl Trong phiên bản Magento mới hơn, họ không đặt quyền nữa nếu có, có vẻ như họ sử dụng 775. Sau khi cài đặt mới, bạn có thể chạy: find. -type f -exec chmod 664 {} \; tìm thấy . -type d -exec chmod 775 {} \; tìm ./var -type d -exec chmod 777 {} \; tìm ./pub/media -type d -exec chmod 777 {} \; tìm ./pub/static -type d -exec chmod 777 {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magento Trong thư mục gốc và bạn sẽ ổn.
Daniel van der Garde

11

Bạn có thể sử dụng phương pháp như tài liệu Magento khuyến nghị:

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

Làm thế nào để cấp quyền ghi vào thư mục được tạo trong 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

Đối với bộ phát triển cục bộ pubvar775 hoặc 777


tại sao? (Có tối thiểu chiều dài nhận xét)
vitoriodachef

7

Nếu bạn đang sử dụng SELinux (ví dụ: CentOS), hãy thử:

sudo chcon -R -t httpd_sys_rw_content_t var

(tất nhiên là từ thư mục gốc magento)


6

Trong cộng đồng Magento đề nghị

Chúng tôi khuyên bạn nên thiết lập các quyền như sau:

Tất cả các thư mục có quyền 770 . 770 quyền cung cấp toàn quyền kiểm soát (nghĩa là đọc / ghi / thực thi) cho chủ sở hữu và cho nhóm và không có quyền cho bất kỳ ai khác.

Tất cả các tệp660 quyền. 660 quyền có nghĩa là chủ sở hữu và nhóm có thể đọc và viết nhưng những người dùng khác không có quyền.

Để biết thêm thông tin liên kết này https://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.html



4

Đặt nội dung này trong thư mục gốc của bạn, sau đó thực hiện nó với bàn điều khiển.

Đừng quên chmod +x yourfile.sh.

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/

Làm thế nào tôi có thể đặt mã này? dưới dạng tập tin htacces hoặc php
matinict

Tránh điều này, về cơ bản nó làm cho thư mục máy chủ web của bạn mở ra công khai. thay vào đó hãy đọc các devdocs được cung cấp bởi magento để bảo mật chính xác phiên bản bạn đang chạy.
themanwhoknowstheman

4

không có quyền đặc biệt, bạn chỉ cần đảm bảo rằng các tệp thuộc sở hữu của người dùng chạy php hoặc trong trường hợp người dùng cPanel - cpanel và cùng một nhóm

Vì vậy, lệnh của bạn là tốt:

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

chỉ cần cập nhật chủ sở hữu tập tin:

chown -R user:user *

nơi userlà chủ sở hữu, userngười điều hành php.

thay vì thay đổi quyền mọi lúc, đăng nhập / làm việc như người dùng, chủ sở hữu tệp, từ root đến người dùng:

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

Làm thế nào để cấp quyền ghi vào thư mục được tạo trong 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

Ngoài ra thông tin chi tiết cũng có sẵn trên, http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html


5
Câu hỏi gọi để được tư vấn về Magento 2
Flipmedia

0

tôi đã giải quyết theo cách này cho CentOS Linux 7.4.1708 trên Plesk Onyx 17.8.11

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> .

Bạn nên tránh sử dụng 777 trên các tập tin và thư mục. Nó mở cửa hàng của bạn để rủi ro bảo mật không cần thiết. Thay vào đó, hãy đọc các tài liệu được cung cấp bởi magento cho phiên bản bạn đang chạy.
themanwhoknowstheman

0

Thực hiện các lệnh này như là một người dùng root. Nếu bạn đã cho phép 777 hoàn nguyên, sử dụng hai lệnh đầu tiên, hãy tiếp tục với phần còn lại.

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 {} +

Đặt quyền sở hữu cho người dùng Magento và người dùng web bằng cách sử dụng

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

Chạy các lệnh này đặt quyền cho các thư mục và tệp trong gốc Magento và cho các tệp mới được tạo trong các thư mục var, pub và được tạo.

Không chạy bất kỳ lệnh nào với tư cách là người dùng root vì nó có thể khiến các tệp tĩnh mới được tạo với quyền sở hữu gốc, điều này có thể ngăn người dùng web truy cập vào các tệp đó buộc bạn phải cung cấp quyền 777. Xin vui lòng trong mọi trường hợp không cho phép 777 nếu vì vậy vui lòng hoàn nguyên lại. Vì vậy, hãy chạy các lệnh Magento với tư cách là người dùng Magento .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.