Her «izin reddedildi» iletisinin doğru bir yanıtı, bir de tehlikeli bir yanıtı vardır. Tehlikeli olan 777'dir; her zaman işe yarar ve sunucudaki her sürecin kodunuzu yeniden yazabileceği anlamına gelir.

Üç rakam neyi anlatır

Sahip, grup ve geri kalan herkes. Okuma 4, yazma 2, çalıştırma 1'dir ve toplanırlar: 6 okuma ve yazmadır, 7 ise üçü birden.

  • Bir dosyada 644 — sahibi yazar, herkes okur.
  • Bir klasörde 755 — sahibi yazar, herkes girip listeleyebilir.
  • Bir sırda 600 — yalnızca sahibi, başka hiç kimse.

Bir sitenin ihtiyacı olan

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 600 wp-config.php

Klasörlere girilebilmesi için çalıştırma bitine ihtiyaç vardır; dosyaların buna hiç ihtiyacı yoktur. 755 izinli bir PHP dosyası daha çalışabilir değildir — web sunucusu onu okur, program olarak çalıştırmaz.

Genelde yanlış olan kısım sahipliktir

Hata çoğu zaman kipte değil, sahiptedir. PHP bir kullanıcı olarak çalışıyor ve dosyalar başkasına aitse, 777'nin altındaki hiçbir kip işe yaramaz — doğru çözüm de sahibidir.

ps aux | grep php-fpm | head -2
chown -R youruser:youruser /path/to/site
Bir yükleme klasöründe 777 ve orada PHP çalıştıran bir sunucu: siteler işte böyle ele geçirilir. Biri bir dosya yükler, sonra sunucudan onu çalıştırmasını ister. Yüklemeler asla çalıştırılabilir olmamalıdır.

Yüklemelerin çalıştırılmasını engelleyin

location ~* /uploads/.*\.php$ {
    deny all;
}
Bir eklenti çalışmak için 777'de ısrar ediyorsa, bu o eklenti hakkında bir bilgidir. Ona doğru grupla 775 verin ve konuyu yazarına açın.