これまで、LinuxシステムでのJoomlaファイル/ディレクトリの権限と所有権で問題に遭遇することがよくありました。
含まれている問題
LinuxシステムのJoomlaで権限と所有権を設定するための推奨されるベストプラクティスは何ですか?
Linuxホスティングでのファイルとフォルダーのアクセス許可の問題には、いくつかの潜在的な原因があります。
1。ファイルとフォルダーのアクセス許可
フォルダのアクセス許可が0755に設定され、ファイルのアクセス許可が0644に設定されていることを確認します。ファイルまたはフォルダのアクセス許可は、Akeeba管理ツールの無料または有料バージョンを使用して、サイト全体でこれらの標準の安全な設定にリセットできます。
2。 PHPパラメータ
PHP情報]タブで十分です。PHP設定を介して共有ホスティング環境のデフォルト設定を上書きできます。 cPanelまたはカスタムphp.ini
ファイル。
3。 configuration.phpの不正なパス
Tmpおよびlogsフォルダーに誤ったパスが指定されている可能性があります。これらは、システム構成で指定するか、システムファイルを直接編集したい場合は、configuration.phpファイルで直接更新できます。パスが何であるかわからない場合は、whereami.php
(または同様の)ファイルを作成して、次のコンテンツを含むWebサイトのルートフォルダーにアップロードします。
<?php
print 'Current folder is ' . dirname(__FILE__);
?>
[mywebsite].com/whereami.php
を参照して、ルートフォルダーへのパスを確認します。
正しいパスを取得したら、whereami.php
ファイルを必ず削除してください。
4。不適切PHPファイルハンドラ
WebホスティングはデフォルトのPHPファイルハンドラーで構成されている場合がありますが、Joomlaが安全なファイル権限を使用してファイルをアップロードおよび実行できるように、suPHPまたはFastCGIなどを使用するのが理想的です。
PHPハンドラがSystem -> System Information -> WebServer to PHP Interface
で使用されていることを確認できます。
PHPファイルハンドラ: http://boomshadow.net/tech/php-handlers の相対的なメリットに関する良い記事があります。
共有ホスティング環境では、通常、どのPHPファイルハンドラーを有効にするか)を変更するアクセス権はありませんが、Webホスティング会社がこれを変更できる場合があります。
回避策として、ファイルとフォルダーのアクセス許可が0777に変更されることがありますが、これによりWebサイトが脆弱な状態になり、0777のファイルアクセス許可は通常回避する必要があります。
Webホスティング会社がsuPHPまたはFastCGIを有効にできない場合、他の唯一のオプションは、新しいWebホスティング会社を見つけることです。
5。ディスク容量
ディスク容量の割り当てを超えていないことを確認してください。
トラブルシューティングチェックリスト
LinuxシステムのJoomlaで権限と所有権を設定するための推奨されるベストプラクティスは何ですか?
1と4を参照してください。
WinSCPなどのプログラムを使用してサーバーにファイルを転送できない。
1、2、4、および5を参照してください。
Joomla拡張機能、プラグインなどをインストールできない.
1、2、3、4、5を参照してください。
危険な権限と所有権の設定により、安全でないファイルとフォルダ。
1と4を参照してください。
アクセス許可レベルを確認してくださいファイルとフォルダーの場合は、それぞれ644と755にする必要があります。
いくつかの問題が発生した場合でも、多くの場合、アクセス許可レベルは問題ありません。それはあなたがしなければならないことを意味します特定のファイルとフォルダの所有権とグループをチェックする。通常、グループと所有権は、Apacheのwww-dataに変更できます(ubuntuベースのWebサーバーで使用されます)。
私にとっての簡単な解決策は、PHPを(Fast-)CGIモードで実行する)ようにし、Joomlaディレクトリーの所有権をFTPユーザーに設定することです。 FTPおよびJoomla経由のファイルもファイルを書き込むことができます。
(許可されている場合)共有ホスティング環境でこれを行う方法は、次のようなものを.htaccessファイルに追加することです。
AddHandler php53-cgi .php
異なるモード についての概要も参照してください。
Shyamで説明されているように、権限は644と755にする必要があります。
直面している問題は、サーバーの設定方法に関連している可能性が高いです。ほとんどの場合、これは、ApacheがFTPアカウントとは異なるユーザーで実行されている共有ホストで発生します。通常、FTPを使用してJoomlaをアップロードするため、Apacheはファイルの所有者ではないため、ファイルを変更するために必要な権限がありません。
JoomlaにはFTPモードがあり、この問題を回避できます。 Joomlaグローバル設定で有効にできます。次に、通常のApacheユーザーの代わりにFTPユーザーを使用してすべてのファイルアクセスを行います。
ただし、より良い方法は、ホストに問題の修正を依頼することです。彼らはPHP(Apache)を特別なユーザーの下で実行するように設定できます。そのような場合、FTPユーザーである必要があります。そうすれば、すべてが正常に動作します。
Shyamで説明されているように、権限は644と755にする必要があります。
Joomlaでは、次の方法で、あなたが言及したすべての問題を回避できます。
WinSCPなどのプログラムを使用してサーバーにファイルを転送できない
configuration.php
のような(444)の許可が原因で発生する可能性があります。この許可は、デフォルトでは(セキュリティのため)許可されていません。Joomla拡張機能、プラグインなどをインストールできません
これは、temp/log
フォルダーの不正な権限が原因で発生します。(755が必要でした)
または、別の理由はtemp/log
のパスがconfiguration.php
で間違っていることです
危険な権限と所有権の設定により、安全でないファイルとフォルダー。
その助けを願っています...
はい、権限は644と755である必要があります Shyamで説明 ですが、他の投稿者は、ファイルがWebサーバーによって所有されており、グループが所属するグループであることを忘れています。
たとえば、FileZillaでは、次のような権限が表示されます。
Filename Size Filetype Last Modified Permissions Owner/Group
somefile.txt 11KB txt file 2014-04-23 3:43:00 AM www-data myGroup
権限drwxr-xr-xは755です(先頭のdrを無視するので、wxr-xr-xになります)。読み取りアクセス許可は4、書き込みアクセス許可は2、実行アクセス許可は1の価値があります。したがって、それらすべてを合計すると7になり、それがこのファイルの所有者の役割です。グループには読み取りと実行のアクセス許可がありますが、書き込みはありません。したがって、グループには5があり、全員にも5.があります。
754は読み取り、書き込み、実行の所有者になります。グループには読み取りと実行があり、全員に読み取り権限しかありません。
上記の例では、ファイルの所有者はwww-data(多くのApacheサーバーのデフォルトのWebサーバーグループ)であり、グループはグループmyGroupです。これは私が所属するグループ(admins)です。
最初の番号は所有者の権限、2番目はグループの権限、3番目の番号は全員の権限です。明らかに、Webサーバーに必要なアクセス許可を与えるように注意する必要があります...ロックダウンする必要のあるファイルがだれでも(3番目の番号)だけで書き込みまたは実行できないようにしてください。以下は数字の意味です:
Webサーバーがファイルを所有していると仮定すると、あなたの管理者はグループに属しており、もちろん、全員が3番目の番号です。
644:権限が644に設定されたファイルは、誰でも読み取り可能で、ファイル/フォルダーの所有者のみが書き込み可能です。
755:権限が755に設定されたファイルは、誰でも読み取りと実行が可能ですが、ファイル/フォルダーの所有者のみが書き込み可能です。
777:権限が777に設定されたファイルは、誰でも読み取り、書き込み、実行が可能です。セキュリティ上の理由から、絶対に必要な場合を除いて、一時的にのみ、この一連の権限をWebサーバーで使用しないでください。特にディレクトリにこれらのアクセス許可がある場合、それは起こるのを待っている災害です。それは誰でもファイルをアップロードして実行できることを意味します。
Joomla!をセットアップするLinuxコマンドは次のとおりです。コマンドラインからの推奨権限。推奨されるJoomlaファイルの権限
Set ownership: Sudo chown -R www-data:myName /path/to/your/domain.com
Set Directories: Sudo find /path/to/your/domain.com -type d -exec chmod 755 {} \;
Set files : Sudo find /path/to/your/domain.com -type f -exec chmod 644 {} \;
注-多くの人はこれらのコマンドをパスなしで表示しますが、ディレクトリをルートJoomlaに変更するのを忘れた場合は、常に完全パスを使用することをお勧めします。インストールディレクトリとパスなしでそれらを実行すると、その最上位ディレクトリ内のすべてのファイルとディレクトリのアクセス許可が変更され、巨大な混乱が生じました。
これらのコマンドを実行した後、より多くの権限を必要とするすべてのディレクトリの権限を修正する必要があります...たとえば...画像をアップロードするユーザーなど。
JOOMLAのみを使用する場合!インターフェイス、およびサーバーへの管理者アクセスまたはFTPアクセス権がない場合は、上記の所有権と権限を使用してください。
ご不明な点がある場合は、ここで停止してください。以下は、アクセス許可と所有権の内容を本当に理解している人のみを対象としています。
ただし、ほとんどの場合FileZillaとターミナルセッションのコマンドラインを使用したいため、所有権と権限をそのように使用することは非常に不便であり、多くのファイルを手動でアップロードしています。ただし、ファイルを所有しておらず、書き込み権限がないため、ファイルを上書きできません。 FileZillaにWebサーバーアカウントでログインさせることもできますが、FileZillaに自分のアカウントでログインさせたいので、Webサーバーがアクセスできるファイルだけでなく、他のディレクトリも参照できます... SO ...所有権と権限をこれに変更します。
Filename Size Filetype Last Modified Permissions Owner/Group
somefile.txt 11KB txt file 2014-04-23 3:43:00 AM drwxr-xr-x myName www-data
私は自分をオーナーにして、Webサーバーをグループに入れます。また、ディレクトリのアクセス許可を775に、ファイルのアクセス許可を664に変更します。私の人生をずっと簡単にします...しかし、私はそれをお勧めしません全員。
あなたが私のやり方でそれをするなら、これらはコマンドです:
Set ownership: Sudo chown -R myName:www-data /path/to/your/domain.com
Set Directories: Sudo find /path/to/your/domain.com -type d -exec chmod 775 {} \;
Set files : Sudo find /path/to/your/domain.com -type f -exec chmod 664 {} \;
他の答えは、何をすべきかについての良い説明を提供します。すでにコンポーネントをアップロードしていて、ftpでファイルにアクセスできない場合にのみ、権限を修正するスクリプトを追加したいと思います。
この場合、このファイルをfix.php
としてFTPサーバーにアップロードし、ブラウザで開きます:http://example.com/fix.php
<?php
file_fix_directory(dirname(__FILE__));
function file_fix_directory($dir, $nomask = array('.', '..')) {
if (is_dir($dir)) {
// Try to make each directory world writable.
if (@chmod($dir, 0777)) {
echo "<p>Made writable: " . $dir . "</p>";
}
}
if (is_dir($dir) && $handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (!in_array($file, $nomask) && $file[0] != '.') {
if (is_dir("$dir/$file")) {
// Recurse into subdirectories
file_fix_directory("$dir/$file", $nomask);
}
else {
$filename = "$dir/$file";
// Try to make each file world writable.
if (@chmod($filename, 0666)) {
echo "<p>Made writable: " . $filename . "</p>";
}
}
}
}
closedir($handle);
}
}
このスクリプトは、すべてのファイルの権限を666に、すべてのディレクトリを777に設定します。書き込み可能な世界はnot共有ホストに最適な権限のセットですが、ファイルに再度アクセスして設定することができますFTPで正しい値に。
パーティーに遅れました。ここに来て、joomlaで書き込み可能なフォルダを決定するためのガイドを探しました。
悪い知らせの前触れになって申し訳ありません。
すべてのディレクトリに755、すべてのフォルダに644のアクセス許可を使用するというアドバイスは、少なくとも無責任です。
すべてのフォルダーとファイルの所有者を書き込み可能にすることは、所有者がWebサーバー(Apacheなど)でない限り問題ありません。
これは一般的に推奨される方法であることは知っていますが、それが適切な方法ではないことを保証できます。フォルダーへの書き込み機能を付与したい最後のソフトウェアは、Webサーバー自体です。まだパッチが適用されていない(または発見されてさえいない)エクスプロイトを利用するためにハッカーが使用するWebサーバーです。
.htaccessはあなたのケビンを救うと思いますか? Webサーバーへの書き込みアクセスを許可したため、忘れてください。私たちのハッカーの友達は、自分の.htaccessファイルを作成して、必要なアクセス許可を与えることができます。うーん、サーバーで.jpgファイルを実行できるようにするのはわかりません。そして、あなたは.phpの実行に対する保護があなたのAをカバーすることになるだろうと考えました。
ただし、実際に書き込みアクセスが必要なフォルダーのみにあることを確認してください。次のフォルダーの場合は755および644。
public_html/images
public_html/cache
public_html/tmp
そして、すべての書き込み可能なフォルダー(上記のものなど)に対してAllowOveride noneを使用して.htaccessファイルを必ずオフにしてください。
これはあなたが制御できない構成要素であるため、共有ホスティングの幸運を祈っている人にとっては。
.htaccessファイルを読み取り専用にすることで問題が解決するとは思わないでください。ハッカーの友達が新しいフォルダを作成できる場合(作成できる場合)、自分の.htaccessを作成できます。
神聖なすべての共有ホスティングを実行している人のために、セキュリティについての手がかりを取得してください。
セキュリティを理解していない場合は、私たちの残りの部分のためにそれを難しくしているホスティング事業から抜け出してください。
ここで、書き込みアクセスが必要なフォルダーに関する決定的なガイドを検索したところに戻ります...