Joomla dosya / dizin izinleri ve linux sistemlerde sahiplik ile ilgili önerilen uygulamalar?


26

Geçmişte Joomla dosyalarının / dizinlerinin linux sistemlerindeki izinleri ve mülkiyeti ile ilgili sık sık sıkıntı yaşadım.

Dahil olan sorunlar

  • WinSCP gibi programları kullanarak dosyaları sunucuya aktaramamak.
  • Joomla eklentilerini, eklentilerini vs. yükleyememek
  • Tehlikeli izinler ve mülkiyet ayarları nedeniyle dosya ve klasörleri güvensiz hale getirin.

Joomla'da linux sistemlerde izinleri ve mülkiyeti belirlemek için önerilen en iyi yöntemler nelerdir?

Yanıtlar:


22

Linux barındırmada dosya ve klasör izin sorunlarının birkaç olası nedeni vardır.

1. Dosya ve Klasör İzinleri

Klasör izinlerini kontrol edin 0755 ve dosya izinleri 0644 olarak ayarlandı. Dosya ve klasör izinlerinin Akeeba Admin Tools'un ücretsiz veya ücretli sürümünü kullanarak site genelinde bu standart güvenli ayarlara sıfırlanabileceğini unutmayın.

2. PHP Parametreleri

Upload_max_filesize parametresini sistem bilgisi içindeki PHP Information sekmesinde kontrol ediniz. Paylaşılan bir barındırma ortamındaki varsayılan ayarı cPanel'deki PHP ayarları veya özel bir php.inidosya aracılığıyla sık sık geçersiz kılabilirsiniz .

3. configuration.php dosyasındaki hatalı yollar

Tmp için yanlış yollar olabilir ve klasörleri günlüğe kaydedebilirsiniz. Bunlar Sistem Konfigürasyonunda belirtilmiştir veya sistem dosyalarını doğrudan düzenlemek için rahat bir şekilde çalışıyorsanız doğrudan configuration.php dosyasında güncellenebilir. Yolun ne olması gerektiğinden emin whereami.phpdeğilseniz, aşağıdaki içerikle web sitenizin kök klasörüne bir dosya (veya benzeri) oluşturun ve yükleyin :

<?php
  print 'Current folder is ' . dirname(__FILE__);
?>

[mywebsite].com/whereami.phpKök klasörün yolunu görmek için göz atın .

Doğru yolu seçtikten sonra whereami.phpdosyayı silmeyi unutmayın .

4. Uygun Olmayan PHP Dosya İşleyicisi

Web barındırma varsayılan PHP dosya işleyicisiyle yapılandırılmış olabilir, ancak Joomla'nın güvenli dosya izinleri kullanarak dosya yükleyebilmesi ve yürütebilmesi için ideal olarak suPHP veya FastCGI veya benzeri bir yazılım kullanıyor olmalıdır.

Hangi PHP işleyicisinin kullanılmakta olduğunu görebilirsiniz System -> System Information -> WebServer to PHP Interface.

Http://boomshadow.net/tech/php-handlers adresinde PHP dosya işleyicilerinin göreceli değerleri hakkında iyi bir makale bulunmaktadır.

Paylaşılan bir barındırma ortamında genellikle hangi PHP dosya işleyicisinin etkin olduğunu değiştiremezsiniz, ancak web barındırma şirketiniz bunu sizin için değiştirebilir.

Bazen bir geçici çözüm olarak, dosya ve klasör izinleri 0777 olarak değiştirilir, ancak bu web sitenizi savunmasız bir duruma getirir ve 0777 dosya izinlerinden genellikle kaçınılmalıdır.

Web barındırma şirketiniz suPHP veya FastCGI özelliğini etkinleştiremiyorsa, diğer tek seçenek yeni bir web barındırma şirketi bulmak olabilir.

5. Disk Alanı

Disk alanı kotanızı aşmadığınızdan emin olun.

SORUN GİDERME KONTROL LİSTESİ

Joomla'da linux sistemlerde izinleri ve mülkiyeti belirlemek için önerilen en iyi yöntemler nelerdir?

1 ve 4'e bakınız.

WinSCP gibi programları kullanarak dosyaları sunucuya aktaramamak.

1, 2, muhtemelen 4 ve 5'e bakınız.

Joomla eklentilerini, eklentilerini vs. yükleyememek

1, 2, 3, 4 ve 5'e bakınız.

Tehlikeli izinler ve mülkiyet ayarları nedeniyle dosya ve klasörleri güvensiz hale getirin.

1 ve 4'e bakınız.


1
Benim durumumda bence PHP işleyicileri sorunun büyük bir parçasıydı.
TryHarder

1
+1 Cevabınız aslında sorunumu çözmedi, ancak sunucularımın PHP ayarlarını kontrol etmek için ilham aldım - Güvenli Mod ve bunun AÇIK - etkin olduğu ortaya çıktı. Bu nedenle kapatılarak çözüm oldu. Gelecekteki okuyucular için yukarıdakilerin hiçbiri
düzeltmediyse

12

Lütfen izin seviyelerini kontrol edin, dosya ve klasörler için sırasıyla 644 ve 755 olmalıdır.

Çoğu zaman izin seviyeleri, bazı sorunların yaşandığı durumlarda bile gayet iyi. Bu , belirli dosya ve klasörlerin sahipliğini ve grubunu kontrol etmeniz gerektiği anlamına gelir . Normalde grup ve sahiplik apache için www-data olarak değiştirilebilir (ubuntu tabanlı web sunucularında kullanılır).

Dosya izinlerini doğrulama temelinde bu ilginç Joomla belgesini kontrol etmekten çekinmeyin .


Joomla genellikle www-data grubuna mı ait?
TryHarder

1
Shyam'ın cevabının yanı sıra, SuPHP Apache modülünü kullanıyoruz . Bir uzantı yüklendiğinde, bu dosyaları FTP üzerinden değiştiremediğimizi ve bunun tersini (dosya sahipliği sorunu) değiştirdik. SuPHP, PHP betiklerinin sahiplerinin izinleriyle çalıştırılmasını sağlayarak bizim için bunu düzeltti.
Zachary Draper

1
apache işlemi 'www-data' altında bir unix grubudur. Sadece joomla değil, tüm apache tabanlı uygulamalar.
Shyam

Tüm dosya izinlerini otomatik olarak düzeltmek için bir kabuk betiği geliştirmek ve çalıştırmak mümkün müdür?
NivF007

1
Evet. gist.github.com/ssv445/11204300 Komut dosyasını cron içinde çalıştırabilirsiniz.
Shyam

8

Benim için kolay bir çözüm PHP'nin (Hızlı) CGI modunda çalışmasına izin vermek ve Joomla dizininin FTP kullanıcısına sahipliğini ayarlamaktır. Böylece FTP üzerinden dosya yükleyip üzerine yazabilecek ve Joomla da dosya yazabileceksiniz.

Bunu paylaşılan bir barındırma ortamında (izin veriliyorsa) yapmanın bir yolu .htaccess dosyanıza böyle bir şey eklemektir:

AddHandler php53-cgi .php

Ayrıca, farklı modlar hakkında genel bir bakış da görün .


7

Shyam tarafından açıklandığı gibi izinler 644 ve 755 olmalıdır.

Joomla'da, bahsettiğiniz tüm problemleri, aşağıdaki yöntemleri kullanarak önleyebilirsiniz.

WinSCP gibi programları kullanarak dosyaları sunucuya aktaramamak.

  • Bu, Joomla gibi (444) 'ün izni nedeniyle olabilir ( configuration.phpbu güvenlik için).
  • Bu aynı hatanın başka bir durumu da bir siteyi veya klasörleri bir sunucudan diğerine aktarırken ortaya çıkmasıdır.

Joomla eklentilerini, eklentilerini vs. yükleyememek

  • Bu, temp/logklasörün bozuk izni nedeniyle gerçekleşecek . (755 gerekli)

  • Ya da başka bir neden de temp/logyolun yanlış olması.configuration.php

Tehlikeli izinler ve mülkiyet ayarları nedeniyle dosya ve klasörleri güvensiz hale getirin.

  • Bu Joomla her zaman farkında değilseniz dosya ve klasör için 777 kullanmayın tavsiye en önemlisidir bu .

Umarım yardımcı olur ..


7

Shyam tarafından açıklandığı gibi izinler 644 ve 755 olmalıdır.

Karşılaştığınız sorunlar, sunucunuzun ayarlanma biçimiyle ilgili olabilir. Bu çoğu zaman Apache'nin FTP hesabınızdan farklı bir kullanıcı altında çalıştığı paylaşılan ana bilgisayarlarda olur. Joomla'yı genellikle FTP kullanarak yüklediğiniz için Apache, dosyanın sahibi değildir ve bu nedenle dosyayı değiştirmek için gerekli izinlere sahip değildir.

Joomla içinde bu sorunu atlamanıza izin veren bir FTP modu vardır. Joomla global yapılandırmasında etkinleştirebilirsiniz. Daha sonra düzenli Apache kullanıcısı yerine FTP kullanıcısı kullanarak tüm dosyalara erişir.

Bununla birlikte daha iyi bir yol, ev sahibinizden sorunu gidermesini istemektir. PHP (Apache) 'yi özel bir kullanıcı altında çalışacak şekilde ayarlayabilirler; bu durumda FTP kullanıcınız olmalıdır. O zaman her şey yoluna girecek.


Kullanıcı / grup cevaptır, söylediğiniz gibi PHP için özel bir kullanıcı olması, özellikle FTP kullanıcısı ile çakışması durumunda bunu çözer.
jackJoe

5

Evet, izinler Shyam tarafından açıklandığı gibi 644 ve 755 olmalıdır , ancak diğer posterler, dosyanın web sunucunuza ait olduğunu ve grubun ait olduğunuz gruba ait olduğunu belirtmeyi unutur.

Örneğin, FileZilla'da izinlere benzer bir şey göreceksiniz:

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 izinleri 755'tir (sadece baştaki dr'ü yoksay, bu yüzden wxr-xr-x). Okuma izinleri 4 değerindedir, Yazma izinleri 2 değerindedir ve yürütme izinleri 1 değerindedir .. bu yüzden hepsinin 7'ye kadar eklemesini sağlayın ve bu dosyanın sahibi de budur. Grup izinleri okuyup uyguladı ama yazmadı, bu yüzden 5, herkes de 5 .. izinleri 755 yaptı.

754 okuma, yazma, yürütme sahipleri olacaktı. Grup okuma ve yürütme ve herkes yalnızca okuma izinlerine sahip.

Yukarıdaki örnekte, dosya sahibinin www-data (birçok Apache sunucusu için varsayılan web sunucusu grubu) ve Grup'un ait olduğum Grup (yöneticiler) olan myGroup grubunu görebilirsiniz.

İlk numara sahiplerin izinleri, ikincisi grupların izinleri ve üçüncü sayı herkesin izinleridir. Açıkçası, web sunucusuna ihtiyaç duyduğu izinleri vermede dikkatli olmalısınız ... ve kilitlenmesi gereken dosyaların sadece hiç kimse tarafından yazılmayacağına veya çalıştırılamayacağına emin olmalısınız (üçüncü sayı). Aşağıda sayılar ne anlama geliyor:

Web sunucusunun dosyalara sahip olduğunu varsayarsak, yöneticiniz gruptadır ve elbette herkes üçüncü sayıdır.

644: İzinleri 644 olarak ayarlanmış olan dosyalar herkes tarafından okunabilir ve yalnızca dosya / klasör sahibi tarafından yazılabilir.

755: 755 olarak ayarlanan izinlere sahip dosyalar herkes tarafından okunabilir ve çalıştırılabilir ancak yalnızca dosya / klasör sahibi tarafından yazılabilir.

777: 777'ye ayarlanmış izinlere sahip dosyalar herkes tarafından okunabilir, yazılabilir ve yürütülebilir. Güvenlik nedeniyle, kesinlikle gerekmedikçe ve yalnızca geçici olarak web sunucunuzda bu izin kümesini kullanmayın. Özellikle bir dizin bu izinlere sahipse gerçekleşmesini bekleyen bir felakettir. Bu, herkesin dosya yükleyebileceği ve yürütebileceği anlamına gelir.

Joomla! 'Nın kurulumu için Linux komutları. komut satırından önerilen izinler. Tavsiye Edilen Joomla Dosyası İzinler

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

NOT - birçok kişi size bu komutları yol göstermeden gösterecektir, ancak dizinleri kök Joomla! yükleme dizini ve yolunu kullanmadan çalıştırmak, sadece üst dizindeki her dosya ve dizin için izinleri değiştirdiniz ve çok büyük bir karışıklık yarattınız.

Bu komutları çalıştırdıktan sonra, daha fazla izin gerektiren tüm dizinlerin izinlerini düzeltmeniz gerekir ... örneğin ... resim yükleyen kullanıcılar vb.

SADECE JOOMLA'YI KULLANIN! arabirim ve sunucuya yönetici veya FTP erişiminiz yoksa, GENEL MÜDÜRLÜK ve YUKARI İZNİ KULLANIN.

ÖNEMLİ BİR ŞEYTİRDEN BURADA DUR .. Aşağıdakiler, yalnızca izinlerin ve mülkiyetin ne yaptığını gerçekten anlayan insanlar içindir.

Ancak, sahip olma ve sahip olma izinlerini bu kadar çok özümsemiş buluyorum, çünkü çoğu zaman FileZilla ve Terminal oturum komut satırını kullanmayı seviyorum ve çok fazla dosyayı el ile yüklüyorum. Ancak hiçbir dosyanın üzerine yazamıyorum, çünkü onlara sahip değilim ve yazma iznim yok. FileZilla'nın web sunucusu hesabı altında oturum açmasını sağlayabilirim, ANCAK ... FileZilla'nın hesabım altında oturum açmasını istiyorum, böylece sadece web sunucusu erişimine sahip olan dosyalara değil, diğer dizinlere de göz atabilirim ... SO ... Sahipliği ve izinleri bunun için değiştiriyorum:

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

Kendimi sahibim ve web sunucusunu gruba koydum ... ve dizinlerin izinlerini 775'e, dosyaları 664'e değiştirdim. Hayatımı çok kolaylaştırıyor ... ama tavsiye etmiyorum herkes.

Benim yöntemimle yaparsanız, komutlar şunlardır:

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

"drwxr-xr-x 755" - bu 751 (halk için okuma izni eksik),
755'tir

4

Diğer cevaplar, yapılması gerekenler hakkında iyi bir açıklama sağlar, ben zaten bir bileşen yüklediyseniz ve ftp ile dosyalara erişemiyorsanız, izinleri düzeltmek için sadece bir komut dosyası eklemek istiyorum.

Bu durumda bu dosyayı fix.phpFTP sunucusuna yükler ve tarayıcıda açardım: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);
  }

}

Bu komut dosyası, tüm izinleri 666'ya, tüm yönetmenlerin 777'ye ayarlar. World yazılabilir, paylaşılan bir ana bilgisayar için en iyi izin kümesi değildir , ancak dosyalarınıza tekrar erişebilecek ve daha sonra FTP ile doğru değerlere ayarlayabilirsiniz.


1

Partiye geç. Buraya joomla için hangi klasörlerin yazılabilir olması gerektiğine dair kesin bir rehber bulmak için başka yerlere bakmaya geldim.

Maalesef, kötü haberlerin habercisi olan millet.

Tüm dizinler için izinlerin 755 ve tüm klasörler için 644'ün kullanılması tavsiye edilmez .

Tüm klasörlerinizin ve dosyalarınızın sahibinin yazılabilir olması, sahibi web sunucusu olmadığı sürece iyidir (apache et al).

Bunun yaygın bir önerilen uygulama olduğunu biliyorum, ancak bunun iyi bir uygulama olmadığını temin ederim. Klasörlere yazma yeteneği vermek istediğiniz en son yazılım parçası web sunucusunun kendisidir. Bilgisayar korsanları tarafından henüz eklenmemiş (ya da hatta bulunmamış) bu istismardan yararlanmak için kullanılan web sunucusu.

.Htaccess Kevin'ini kurtaracak mı? Unutmayın, web sunucusunun yazma erişimine izin verdiğiniz için, sevgili korsan arkadaşlarımız, istedikleri izinleri vererek kendi .htaccess dosyalarını oluşturabilir! gibi Oh Umm bilmiyorum. Jpg dosyaları sunucu tarafından çalıştırılabilir. Ve .php uygulamasına karşı korumanın A'nızı kapsayacağını düşündünüz.

Ancak yalnızca yazma erişimi gerektiren klasörlerin gerçektende olduğundan emin olun. Aşağıdaki klasörler için 755 ve 644.

public_html/images
public_html/cache
public_html/tmp

Ayrıca, tüm yazılabilir klasörler için (yukarıda belirtilenler gibi) .htaccess dosyalarını AllowOveride ile hiçbiri KAPALI konuma getirmediğinizden emin olun.

Bu, paylaşılan barındırmada sizin için iyi şanslar, kontrol edemediğiniz bir yapılandırma öğesidir.

.Htaccess dosyasını salt okunur hale getirmenin yardımcı olacağını düşünmeyin. Eğer korsan arkadaşlarımız yeni bir klasör oluşturabilirlerse (yapabilirler) o zaman kendi .htaccesslerini yaratabilirler.

Sizler için kutsal barındırma hizmeti paylaşan çalışanlarınız için, lütfen güvenlik hakkında bir ipucu edinin.

Güvenliği anlamıyorsanız, lütfen geri kalanımız için zorlaştırdığınız barındırma işinden çıkın.

Şimdi yazma erişimine ihtiyaç duyan klasörler hakkındaki kesin rehbere geri dönelim ...


Teşekkürler Chris, ancak resmi Joomla web sitesi ve Sucuri gibi güvenlik uzmanları tarafından önerilen standart 755 ve 644 dosya izinlerine bağlı kalacağım
Neil Robertson

Evet, bunun “önerilen” olduğunu biliyorum, ancak bir kez sömürüldükten ve niçin sömürüldüğünüzü anladığınızda, "önerileri" pencereden atıp sıfırdan başlamanızı temin ederim. Tavsiyeler en az direnç gösteren yoldur. En güvenli değil.
DeveloperChris

Joomla.stackexchange.com/a/180/120 adresindeki "Joomla Web Sitesini Güvenli Tutmak" listesindeki 1 ile 10 arasındaki adımlar , standart dosya izinleriyle birlikte , aradığım 50 web sitesi için gayet iyi çalışıyor. son birkaç yıl. Yaptığınız mil değişebilir, elbette.
Neil Robertson

@NeilRobertson Bu listeyle aynı fikirdeyim ama eğer tuzağa düşürülmemiş bir istismar varsa, son savunma hattınız web sunucusuna yazma izni vermemektir (apache et al). Bu arada bir joomla'ya özgü bir tavsiye değil. Ayrıca çoğu kişi bu listedeki önerilerin çoğunu uygulayamaz. Onlar sadece kaynaklara sahip değil veya daha ucuz (en ucuz değil) hosting kullanıyorlar.
DeveloperChris
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.