Làm cách nào để đặt quyền thích hợp cho Magento trên máy chủ?


7

Tôi đang gặp nhiều vấn đề với quyền.

Trong bảng quản trị magento:

Máy chủ web của bạn được cấu hình không chính xác. Do đó, các tệp cấu hình có thông tin nhạy cảm có thể truy cập được từ bên ngoài. Vui lòng liên hệ với nhà cung cấp dịch vụ lưu trữ của bạn.

Khi tôi tải lên hình ảnh từ cms:

Các thư mục không thể ghi bởi máy chủ.

Nếu bất cứ ai truy cập url này: http://example.com/app/etc/modules/

họ có thể dễ dàng nhìn thấy các thiết lập cấu hình.

Sử dụng tài khoản FTP: Tôi không thể ghi đè bất kỳ tệp nào và đôi khi tôi không thể sao chép bất kỳ thư mục cục bộ nào sang máy chủ thông qua FTP.

Nơi ứng dụng của tôi là /var/www/html.

với lời khuyên dành cho nhà phát triển cao cấp, tôi thực hiện các lệnh sau:

find <foldername> -type d -exec chmod 755 {} \; 
find <foldername> -type f -exec chmod 664 {} \;

và dưới đây là quyền hiện tại cho mỗi thư mục.

drwxr-xr-x 12 root     root     4096 Jun 10 13:06 var
drwxr-xr-x  3 root     root     4096 Jun 10 13:06 www
drwxr-xr-x 15 www-data www-data 4096 Jun 18 07:29 html

root@web-server-magento:/var/www/html# ls -l

total 14644
-rw-rw-r--  1 www-data www-data     2834 Nov 26  2013 api.php
drwxr-xr-x  6 www-data www-data     4096 Jun 17 11:16 app
-rw-rw-r--  1 www-data www-data     2831 Nov 26  2013 cron.php
-rw-rw-r--  1 www-data www-data      717 Nov 26  2013 cron.sh
-rw-rw-r--  1 www-data www-data  2454234 Oct 26  2011 data.sql
drwxr-xr-x  8 www-data www-data     4096 Jun 11 07:21 downloader
drwxr-xr-x  3 www-data www-data     4096 Nov 26  2013 errors
-rw-rw-r--  1 www-data www-data     1150 Nov 26  2013 favicon.ico
-rw-rw-r--  1 www-data www-data     5979 Nov 26  2013 get.php
drwxr-xr-x  2 www-data www-data     4096 Nov 26  2013 includes
-rw-rw-r--  1 www-data www-data    11510 Jun 10 13:06 index1.html
-rw-rw-r--  1 www-data www-data     2642 Nov 26  2013 index.php
-rw-rw-r--  1 www-data www-data     2366 Nov 26  2013 index.php.sample
-rw-rw-r--  1 www-data www-data     6441 Nov 26  2013 install.php
drwxr-xr-x 12 www-data www-data     4096 Jun 18 06:28 js
drwxr-xr-x 13 www-data www-data     4096 Nov 26  2013 lib
-rw-rw-r--  1 www-data www-data    10421 Nov 26  2013 LICENSE_AFL.txt
-rw-rw-r--  1 www-data www-data    10679 Nov 26  2013 LICENSE.html
-rw-rw-r--  1 www-data www-data    10410 Nov 26  2013 LICENSE.txt
-rw-rw-r--  1 www-data www-data    10327 Jun 11 14:48 logo.png
-rw-rw-r--  1 www-data www-data     1319 Nov 26  2013 mage
drwxr-xr-x 13 www-data www-data     4096 Jun 18 07:29 media
-rw-rw-r--  1 www-data www-data      886 Nov 26  2013 php.ini.sample
drwxr-xr-x  2 www-data www-data     4096 Nov 26  2013 pkginfo
-rw-rw-r--  1 www-data www-data   585086 Nov 26  2013 RELEASE_NOTES.txt
drwxr-xr-x  2 www-data www-data     4096 Nov 26  2013 shell
drwxr-xr-x  5 www-data www-data     4096 Nov 26  2013 skin
drwxr-xr-x  9 www-data www-data     4096 Jun 18 06:57 var

Hãy bình luận nếu có thêm thông tin cần thiết.


Cảm ơn phản hồi của bạn. Tôi đã thử magento dọn dẹp. Cho đến cùng một vấn đề. Tôi nghĩ vấn đề với cấu hình apache hoặc tập tin htacces.
sivakumar

Câu trả lời:


14

Vui lòng kiểm tra và xác minh các bước dưới đây:

  1. Kiểm tra xem máy chủ của bạn có tương thích với Magento không. Tải xuống tệp từ liên kết này Kiểm tra tương thích máy chủ Magento và làm theo hướng dẫn đã cho.

  2. Kiểm tra .htaccesstrong mỗi thư mục và trong root. Magento có .htaccesstrong hầu hết các thư mục. Xác minh nó cho thư mục phương tiện trong trường hợp sự cố xảy ra với hình ảnh

  3. Thực hiện các lệnh máy chủ sau đi vào thư mục dự án của bạn:

    find ./ -type f | xargs chmod 644
    find ./ -type d | xargs chmod 755

    Điều này cho phép 644 quyền đối với các tệp và 755 đối với các thư mục.

  4. Tiếp theo cấp quyền 777 cho thư mục var và media nếu sự cố vẫn còn, sử dụng các lệnh sau cho nó:

    chmod -Rf 777 var
    chmod -Rf 777 media
  5. Ngoài ra kiểm tra sự cho phép thư mục html của máy chủ của bạn. Nó phải là 755.

Hy vọng điều này sẽ giải quyết vấn đề của bạn.


Một lưu ý về tập tin .htaccess. Chúng chỉ được yêu cầu nếu máy chủ web Apache được sử dụng. Các tệp .htaccess trong mỗi thư mục có hại cho hiệu năng của Apache vì nó phải kiểm tra các tệp này cho từng thư mục. Để biết thêm thông tin, hãy xem httpd.apache.org/docs/2.2/howto/htaccess.html Ban đầu, có một cảnh báo: Bạn nên tránh sử dụng hoàn toàn các tệp .htaccess nếu bạn có quyền truy cập vào tệp cấu hình máy chủ chính httpd.
Sven

Cảm ơn vì điều đó ... nhưng tôi đã nhận thấy sự hiện diện của nó trong hầu hết mọi thư mục chính của Magento ...
Dexter

Chỉ cần cho apache => có nghĩa là bạn cần thực hiện các bước thích hợp để giới hạn các thư mục này bằng bất kỳ phương tiện nào khác mà các máy chủ web sử dụng. Tất cả các tệp .htaccess đều có để bảo vệ nội dung hoặc quan trọng hơn là ngăn chặn việc thực thi tập lệnh ra khỏi các thư mục có RWX toàn cầu. Hầu hết mọi người sử dụng Apache không có quyền truy cập vào cấu hình máy chủ http, do đó, đây là loại cá trích đỏ để đề cập đến việc loại bỏ thứ gì đó cần thiết để bảo mật quyền truy cập tệp mà không thừa nhận chính xác lý do tại sao chúng ở đó. Cũng quan trọng là đưa ra các lựa chọn thay thế để thay thế đúng mô hình bảo mật đó.
Phòng thí nghiệm Fiasco

nhận được Operation not permittedtrên tất cả các tập tin khi chạy find ./ -type f | xargs chmod 644. Đã thử với sudolà tốt.
Amit Patel

Nó dường như là một vấn đề với sự cho phép máy chủ của bạn
Dexter

4

Vui lòng kiểm tra xem người dùng FTP và SSH của bạn có thuộc nhóm dữ liệu www không.

Các tệp và thư mục của bạn thuộc về nhóm và người dùng dữ liệu www:

-rw-rw-r--  1 www-data www-data     2642 Nov 26  2013 index.php
drwxr-xr-x 13 www-data www-data     4096 Jun 18 07:29 media

Thông báo lỗi FTP của bạn (Tôi không thể ghi đè bất kỳ tệp nào) khiến tôi tin rằng người dùng FTP của bạn không thuộc nhóm dữ liệu www.

Từ dòng lệnh, chạy và kiểm tra nhóm người dùng ftp và ssh của bạn thuộc về nhóm nào:

$ groups [username]

Nếu không có dữ liệu www được liệt kê, hãy điều chỉnh cài đặt với quản trị viên máy chủ của bạn.


4

Theo quyết định của bạn, bạn nên chỉ định tất cả các tệp máy chủ web cho người dùng và nhóm dữ liệu www, hoặc chỉ nhóm. Nó thường thuận tiện và vẫn an toàn để tạo chủ sở hữu các tệp để bạn có thể dễ dàng chỉnh sửa chúng hơn, đặc biệt nếu bạn muốn quản lý các tệp đó thông qua repo.

Nếu bạn quyết định làm cho tất cả các tệp máy chủ web được sở hữu và sở hữu theo nhóm bởi dữ liệu www, tôi khuyên bạn nên sử dụng các quyền sau:

find /var/www/html -type d -exec chmod 755 {} \; 
find /var/www/html -type f -exec chmod 644 {} \;

find /var/www/html/var -type d -exec chmod 755 {} \; 
find /var/www/html/var -type f -exec chmod 644 {} \;

find /var/www/html/media -type d -exec chmod 755 {} \; 
find /var/www/html/media -type f -exec chmod 644 {} \;

Nếu bạn muốn có các tệp thuộc sở hữu của người dùng khác có thể chỉnh sửa mọi thứ, bạn có thể thực hiện 775 và 664 thay thế. Dù bạn làm gì, đừng bao giờ đặt bất cứ điều gì thành 777 . Bạn hiếm khi, nếu có, có bất kỳ lý do để làm điều đó. Trong trường hợp này, bạn biết ai nên và không nên truy cập vào các tệp và với mức cấp phép nào, vì vậy bạn có thể đặt rõ ràng những gì bạn cần, thay vì để bất kỳ và mọi người đọc / ghi / thực hiện mọi thứ.

Cuối cùng, và đây là bước quan trọng nhất, bạn sẽ muốn làm cho thư mục / ứng dụng và nội dung không thể truy cập để phục vụ bằng cách cho phép các .htaccesstệp điều chỉnh quyền truy cập. Chỉ cần thêm một cái gì đó như sau, nếu sử dụng httpd:

<Directory /var/www/html>
  AllowOverride FileInfo Indexes Options Limit
</Directory>

Tôi cũng chỉ tìm thấy hướng dẫn cài đặt quyền sở hữu của họ .
Spencer Williams

3

Tôi đã sử dụng mã dọn dẹp magento để đặt lại các quyền, nó đã làm việc cho tôi. Bạn có thể thử sử dụng mã dọn dẹp như sau không: -

<?php

## Function to set file permissions to 0644 and folder permissions to 0755

function AllDirChmod( $dir = "./", $dirModes = 0755, $fileModes = 0644 ){
   $d = new RecursiveDirectoryIterator( $dir );
   foreach( new RecursiveIteratorIterator( $d, 1 ) as $path ){
      if( $path->isDir() ) chmod( $path, $dirModes );
      else if( is_file( $path ) ) chmod( $path, $fileModes );
  }
}

## Function to clean out the contents of specified directory

function cleandir($dir) {

    if ($handle = opendir($dir)) {
        while (false !== ($file = readdir($handle))) {
            if ($file != '.' && $file != '..' && is_file($dir.'/'.$file)) {
                if (unlink($dir.'/'.$file)) { }
                else { echo $dir . '/' . $file . ' (file) NOT deleted!<br />'; }
            }
            else if ($file != '.' && $file != '..' && is_dir($dir.'/'.$file)) {
                cleandir($dir.'/'.$file);
                if (rmdir($dir.'/'.$file)) { }
                else { echo $dir . '/' . $file . ' (directory) NOT deleted!<br />'; }
            }
        }
        closedir($handle);
    }

}

function isDirEmpty($dir){
     return (($files = @scandir($dir)) && count($files) <= 2);
}

echo "----------------------- CLEANUP START -------------------------<br/>";
$start = (float) array_sum(explode(' ',microtime()));
echo "<br/>*************** SETTING PERMISSIONS ***************<br/>";
echo "Setting all folder permissions to 755<br/>";
echo "Setting all file permissions to 644<br/>";
AllDirChmod( "." );
echo "Setting pear permissions to 550<br/>";
chmod("pear", 550);

echo "<br/>****************** CLEARING CACHE ******************<br/>";

if (file_exists("var/cache")) {
    echo "Clearing var/cache<br/>";
    cleandir("var/cache");
}

if (file_exists("var/session")) {
    echo "Clearing var/session<br/>";
    cleandir("var/session");
}

if (file_exists("var/minifycache")) {
    echo "Clearing var/minifycache<br/>";
    cleandir("var/minifycache");
}

if (file_exists("downloader/pearlib/cache")) {
    echo "Clearing downloader/pearlib/cache<br/>";
    cleandir("downloader/pearlib/cache");
}

if (file_exists("downloader/pearlib/download")) {
    echo "Clearing downloader/pearlib/download<br/>";
    cleandir("downloader/pearlib/download");
}

if (file_exists("downloader/pearlib/pear.ini")) {
    echo "Removing downloader/pearlib/pear.ini<br/>";
    unlink ("downloader/pearlib/pear.ini");
}

echo "<br/>************** CHECKING FOR EXTENSIONS ***********<br/>";
If (!isDirEmpty("app/code/local/")) { 
    echo "-= WARNING =- Overrides or extensions exist in the app/code/local folder<br/>";
}
If (!isDirEmpty("app/code/community/")) { 
    echo "-= WARNING =- Overrides or extensions exist in the app/code/community folder<br/>";
}
$end = (float) array_sum(explode(' ',microtime()));
echo "<br/>------------------- CLEANUP COMPLETED in:". sprintf("%.4f", ($end-$start))." seconds ------------------<br/>";
?>

1

Máy chủ MAGENTO 2 Centos 7

Xem https://github.com/magento/magento2/issues/2882#issuecomment-217661873

Để sửa tin nhắn

Máy chủ web của bạn được thiết lập không chính xác và cho phép truy cập trái phép vào các tệp nhạy cảm. Vui lòng liên hệ với nhà cung cấp dịch vụ lưu trữ của bạn

  1. SSH - Chạy lệnh sau từ tài khoản root của bạn.

    chown -R accountuser:accountusergroup /path-to-root-folderl/
  2. SSH - Chạy lệnh sau từ người dùng tài khoản miền (không phải tài khoản máy chủ web của bạn như apache, v.v.).

    find . -type d -exec chmod 770 {} \; & find . -type f -exec chmod 660 {} \; && chmod u+x bin/magento
    
    chmod -R g+w /path-to-root-folderl/{pub,var}
    chmod -R g+w /path-to-root-folderl/{app/etc,vendor}
    chmod -R g+s pub/static pub/media .
    find var/generation -type d -exec chmod g+s {} \;
    find var/session -type d -exec chmod g+s {} \;
  3. SSH - Chạy lệnh sau từ tài khoản root của bạn.

    chown -R domain_account_user:webservergroup /path-to-root-folderl/var
    chown -R domain_account_user:webservergroup /path-to-root-folder/app/etc
    chown -R domain_account_user:webservergroup /path-to-root-folderl/pub
    chown -R webserverUSER:webservergroup /path-to-root-folder/var/session

Điều này sẽ khắc phục lỗi này và nhiều lỗi khác. Lưu ý: vô hiệu hóa SUPHP khi sử dụng magento 2, bạn sẽ tiết kiệm cho mình rất nhiều vấn đề đau đầu. Hiện tại tôi đang chạy mod_mpm_event với ea-apache24-mod_cgid và PHP 7 và ea-php70-php-fpm.

Tôi đã chạy magento 2 chỉ với mod_mpm_event với ea-apache24-mod_cgid và PHP 7 trước khi tôi thêm PHP-FPM.

Nếu bạn đang chạy cpanel / apache và bạn không muốn sử dụng easyapache để chuyển sang mod_mpm_event + ea-apache24-mod_cgid, bạn có thể sử dụng shell từ ssh. Chạy lệnh dưới đây từ ssh. yum shell remove ea-apache24-mod_mpm_worker gỡ bỏ ea-apache24-mod_cgi cài đặt ea-apache24-mod_mpm_event cài đặt ea-apache24-mod_cgid chạy thoát


Câu trả lời của bạn áp dụng cho Magento 2? Câu hỏi này là về Magento 1 ...
7ochem

Bạn thấy Magento 1 hay Magento 2 ở đâu? Tôi tìm thấy trang này đang tìm kiếm magento 2. Đó là lý do tại sao tôi nói rõ ràng Máy chủ MAGENTO 2 Centos 7 để làm cho nó rõ ràng.
wle alejo

1
Bản thân câu hỏi được gắn thẻ rõ ràng "magento-1.8", cấu trúc tệp hiển thị trong câu hỏi rõ ràng là Magento 1. Xin vui lòng tự hỏi lại câu hỏi này cho Magento2 và tự trả lời bằng câu trả lời bạn đã đăng ở đây.
7ochem

1

đặt app/etc/config.xmlapp/etc/local.xmltập tin thành 644

đảm bảo rằng bạn có tất cả .htaccesscác tệp tồn tại trong các vị trí mặc định của magento, như bạn sẽ có tệp đó tại root, appthư mục , v.v.


1

Bạn có thể tham khảo liên kết này để kiểm tra quyền cho cài đặt Magento của bạn

http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/magento_filesystem_permissions

Bạn có thể tải xuống công cụ dọn dẹp Magento và chạy nó trên máy chủ của bạn.

cuối cùng cũng kiểm tra nhóm / chủ sở hữu các tệp của bạn trên máy chủ và người dùng ftp bạn đang sử dụng có đủ quyền cập nhật / xóa.

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.