サーバー上のMagentoに適切な権限を設定するにはどうすればよいですか?


7

権限に関して多くの問題が発生しています。

magento管理パネル:

Webサーバーが正しく構成されていません。その結果、機密情報を含む構成ファイルに外部からアクセスできます。ホスティングプロバイダーにお問い合わせください。

cmsから画像をアップロードする場合:

ディレクトリはサーバーから書き込み可能ではありません。

誰かがこのURLにアクセスした場合:http : //example.com/app/etc/modules/

彼らは簡単に構成設定を見ることができます。

FTPアカウントの使用:ファイルを上書きできず、ローカルフォルダーをFTP経由でサーバーにコピーできない場合があります。

私の申し込み場所は/var/www/htmlです。

上級開発者のアドバイスで、次のコマンドを実行します。

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

以下は、各フォルダの現在の権限です。

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

追加情報が必要な場合はコメントしてください。


あなたの応答をありがとう。私はmagento cleanupを試しました。それでも同じ問題があります。Apache構成またはhtaccesファイルに問題があると思います。
sivakumar 2014年

回答:


14

以下の手順を確認してください:

  1. サーバーがMagentoと互換性があるかどうかを確認します。このリンクからファイルをダウンロードしますMagentoサーバーの互換性チェックを行い、記載されている指示に従います。

  2. .htaccess各フォルダとルートにもチェックします。Magentoは.htaccessほとんどすべてのフォルダにあります。画像に問題がある場合は、メディアフォルダーを確認します

  3. プロジェクトフォルダに移動する次のサーバーコマンドを実行します。

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

    これにより、ファイルへのアクセス権は644、フォルダへのアクセス権は755になります。

  4. 次に、問題が引き続き発生する場合は、varおよびmediaフォルダーに777権限を付与し、次のコマンドを使用します。

    chmod -Rf 777 var
    chmod -Rf 777 media
  5. サーバーのhtmlフォルダー権限も確認してください。755にする必要があります。

これで問題が解決することを願っています。


.htaccessファイルに関する注意。これらは、Apache Webサーバーが使用されている場合にのみ必要です。各フォルダーの.htaccessファイルは、フォルダーごとにチェックする必要があるため、Apacheのパフォーマンスに悪影響を及ぼします。詳細については、httpd.apache.org / docs / 2.2 / howto / htaccess.htmlを参照してください。 最初に警告があります。httpdメインサーバー構成ファイルにアクセスできる場合は、.htaccessファイルを完全に使用しないでください。
スベン

それをありがとう...しかし、Magentoのほぼすべてのメインフォルダーに存在することに気づきました...
Dexter

apache =>にのみ必要です。これは、他の種類のWebサーバーの使用方法を問わず、これらのフォルダーを制限するための適切な手順を実行する必要があることを意味します。.htaccessファイルはすべて、内容を保護するため、またはさらに重要なことに、グローバルRWXを持つフォルダーからのスクリプトの実行を防止するためにあります。Apacheを使用しているほとんどの人はhttpサーバー構成にアクセスできないため、そこにある理由を正しく認識せずにファイルアクセスを保護するために必要なものを削除することは、一種の赤いニシンです。また、そのセキュリティモデルを適切に置き換える代替手段を提供することも重要です。
Fiasco Labs

Operation not permitted実行時にすべてのファイルを取得しますfind ./ -type f | xargs chmod 644。も試しsudoました。
Amit Patel

サーバーの権限に問題があるようです
Dexter

4

FTPおよびSSHユーザーがwww-dataグループに属しているかどうかを確認してください。

ファイルとフォルダーはwww-dataユーザーとグループに属しています。

-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

FTPエラーメッセージ(どのファイルも上書きできません)により、FTPユーザーがwww-dataグループに属していないと思われます。

コマンドラインから、ftpおよびsshユーザーが所属するグループを実行して確認します。

$ groups [username]

www-dataがリストされていない場合は、server-adminで設定を調整してください。


4

裁量で、すべてのWebサーバーファイルをwww-dataユーザーとグループに割り当てるか、グループのみを割り当てる必要があります。ファイルを簡単に編集できるようにファイルの所有者を自分で作成することは、多くの場合便利であり、なおかつ安全です。特に、リポジトリを介してそのようなファイルを管理したい場合はそうです。

www-dataがすべてのWebサーバーファイルを所有およびグループ所有することにした場合は、次の権限をお勧めします。

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 {} \;

すべてを編集できるはずの別のユーザーがファイルを所有したい場合は、代わりに775と664を実行できます。何をする場合でも、何も777に設定しないでください。あなたがそれを行う理由があるとしても、めったにありません。この場合、誰がどのファイルにアクセスするべきか、そしてアクセスしてはならないか、およびどのアクセス許可レベルかがわかっているため、すべてのユーザーにすべての読み取り/書き込み/実行を許可するのではなく、必要なものを明示的に設定できます。

最後に、これは最も重要なステップです.htaccess。ファイルがアクセスを制御できるようにすることで、/ appディレクトリとコンテンツにアクセスできないようにする必要があります。httpdを使用している場合は、次のようなものを追加するだけです。

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


3

権限をリセットするためにmagentoクリーンアップコードを使用しました。以下のクリーンアップコードを使用してみてください。

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

MAGENTO 2 Centos 7サーバー

https://github.com/magento/magento2/issues/2882#issuecomment-217661873を参照してください

メッセージを修正するには

Webサーバーが正しく設定されておらず、機密ファイルへの不正アクセスを許可しています。ホスティングプロバイダーにお問い合わせください

  1. SSH-rootアカウントから次のコマンドを実行します。

    chown -R accountuser:accountusergroup /path-to-root-folderl/
  2. SSH-ドメインアカウントユーザー(apacheなどのWebサーバーアカウントではない)から次のコマンドを実行します。

    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-rootアカウントから次のコマンドを実行します。

    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

これにより、このエラーと他の多くのエラーが修正されます。注:magento 2を使用する場合はSUPHPを無効にしてください。頭痛の種を大幅に軽減できます。現在、私はea-apache24-mod_cgidとPHP 7およびea-php70-php-fpmでmod_mpm_eventを実行しています。

PHP-FPMを追加する前に、ea-apache24-mod_cgidとmod_mpm_eventとPHP 7だけでmagento 2を実行していました。

cpanel / apacheを実行していて、easyapacheを使用してmod_mpm_event + ea-apache24-mod_cgidに移動したくない場合は、sshからシェルを使用できます。sshから次のコマンドを実行します。yum shell remove ea-apache24-mod_mpm_worker remove ea-apache24-mod_cgi install ea-apache24-mod_mpm_event install ea-apache24-mod_cgid run quit


あなたの答えはMagento 2に当てはまりますか?この質問はMagento 1についてです...
7ochem '10年

質問のどこにMagento 1またはMagento 2がありますか?私はこのページがmagento 2を探しているのを見つけました。そのため、明確にするためにMAGENTO 2 Centos 7 Serverと明確に言います。
willy alejo 2016年

1
質問自体は明らかに「magento-1.8」というタグが付けられています。また、質問に表示されるファイル構造は明らかにMagento 1 です。Magento2についてこの質問を自分でもう一度質問し、ここに投稿した回答を使って自分で回答してください。
2016年

1

設定app/etc/config.xmlapp/etc/local.xmlファイルへの644

あなたはすべて持っていることを確認してください.htaccessあなたがでそのファイルがありますように、ファイルは、Magentoののデフォルトの場所に存在しrootappフォルダなどを


1

このリンクを参照して、Magentoインストールの権限を確認できます

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

Magentoクリーンアップツールをダウンロードして、サーバーで実行できます。

また、最後にサーバー上のファイルのグループ/所有者を確認し、使用しているftpユーザーに十分な更新/削除権限があることを確認してください。

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