2026年11月12日

2026年11月12日

WordPress Dosya İzinleri: Dizin 755, Dosya 644, wp-config.php

Bu makale, Japonca orijinalin yerelleştirilmiş sürümüdür. Japonca orijinali oku

WordPress dosya izinlerinde temel kural, dizinler için 755 ve dosyalar için 644 kullanmaktır. Veritabanı bağlantı bilgilerini içeren wp-config.php dosyasını okuyabilenleri ise daha da sınırlayın. Yalnızca rakamlara değil, dosyaların sahibinin kim olduğuna ve PHP'nin hangi kullanıcıyla çalıştığına da bakarsanız hem bilgi sızıntısını hem de "güncelleme yapılamıyor" sorununu önleyebilirsiniz. Bu yazıdaki önerilen değerler, Kasım 2026 itibarıyla WordPress'in resmî "WordPress'i Sağlamlaştırma (Hardening WordPress)" sayfasına bakılarak doğrulanmıştır.

İzin rakamları nasıl okunur

İzinler "sahip, grup, diğerleri" olmak üzere üç takımdan oluşur ve okuma (4), yazma (2), çalıştırma (1) değerlerinin toplamıyla ifade edilir.

Değer Gösterim Anlamı
755 rwxr-xr-x Sahip okuyabilir, yazabilir ve dizinin içine girebilir; diğerleri yalnızca okuyabilir ve içine girebilir (dizinler için)
644 rw-r--r-- Sahip okuyabilir ve yazabilir, diğerleri yalnızca okuyabilir (dosyalar için)
640 rw-r----- Sahip okuyabilir ve yazabilir, grup yalnızca okuyabilir, diğerleri hiçbir şey yapamaz
600 rw------- Yalnızca sahip okuyabilir ve yazabilir
440 / 400 r--r----- / r-------- Kimse yazamaz; okuma yalnızca sahip (ve grup) için

Bir dizindeki "çalıştırma (x)" izni, o dizinin içine girme iznidir. Bir dizinden x iznini kaldırırsanız içindeki dosyalar okunamaz hale gelir.

WordPress için önerilen değerler

Hedef Önerilen değer Not
Dizinler 755 (paylaşımlı sunucuda başkalarının görmesini istemiyorsanız 750) Resmî otomatik güncellemeler de dizinleri 755'e getirir
Dosyalar 644 (aynı durumda 640) Resmî otomatik güncellemeler de dosyaları 644'e getirir
wp-config.php Yalnızca kendiniz ve web sunucusu okuyabilecek şekilde kısıtlayın Resmî açıklamada "genellikle 400 veya 440" denir. PHP, dosya sahibiyle aynı kullanıcı olarak çalışan bir ortamda 600 veya 400 de çalışır
.htaccess 644 Kalıcı bağlantı ayarını kaydederek WordPress'in dosyayı yeniden yazmasına izin veriyorsanız, PHP'nin çalıştığı kullanıcının yazabilmesi gerekir
wp-content/uploads Dizin 755, dosya 644 Sahibi, PHP'nin çalıştığı kullanıcının yazabileceği şekilde ayarlanmalıdır

777 (herkes yazabilir) yapmanıza gerek yoktur. Paylaşımlı sunucuda aynı sunucudaki başka kullanıcılar tarafından değiştirilme riski doğar.

Bazı kiralık sunucu hizmetleri (PHP'nin çalıştırılma biçimi sunucudan sunucuya farklı olduğundan) kendi önerilen değerlerini belirleyebilir. Sözleşme yaptığınız sunucunun kılavuzunda değerler yazıyorsa onları önceliklendirin.

Sahiplik nasıl düşünülmeli

Resmî açıklamaya göre dosyaların sahibi kendi kullanıcı hesabınız olmalı ve onlara siz yazabilmelisiniz. Yalnızca WordPress'in yazması gereken dosyalarda (uploads, tema düzenleyicisini kullanıyorsanız temalar gibi) sahibi veya grubu, web sunucusunun (PHP'nin) çalıştığı kullanıcının yazabileceği şekilde eşleştirin.

Her şeyi chown -R www-data:www-data gibi bir komutla web sunucusu kullanıcısına verirseniz, PHP tüm dosyaları değiştirebilir hale gelir. Bir eklenti açığı kullanıldığında zarar kolayca büyür; bu yüzden önce mevcut durumu kontrol edip sonra karar verin.

Eklenti veya çekirdek güncellemesinde "bağlantı bilgileri (FTP ana bilgisayar adı, kullanıcı adı, parola)" istenmesinin nedeni çoğu zaman bu sahiplik uyuşmazlığıdır. WordPress, yalnızca PHP'nin oluşturduğu dosyaların sahibi ile WordPress dosyalarının sahibi aynıysa dosyaları doğrudan yazma yöntemini seçer. Farklıysa FTP üzerinden güncelleme ister. İzinleri 777'ye genişletmek yerine sahipliği eşleştirerek düzeltin.

Mevcut ayarları kontrol etme

SSH ile WordPress dizinine girin ve aşağıdaki komutlarla değerleri ve sahibi kontrol edin. Yolları kendi ortamınıza göre değiştirin.

cd /var/www/html

# wp-config.php değeri, sahibi ve grubu
stat -c '%a %U:%G %n' wp-config.php

# Diğer kullanıcıların yazabildiği dosya ve dizinleri bul
find . -perm -o=w ! -type l

# uploads içindeki PHP dosyalarını bul (normalde bulunmaz)
find wp-content/uploads -type f -name '*.php'

Web üzerinden erişildiğinde PHP'nin çalıştığı kullanıcıyı sunucu ayarlarından (PHP-FPM havuzundaki user gibi) veya kiralık sunucunun kılavuzundan öğrenin. SSH ile giriş yaptığınız kullanıcıyla aynı olmayabilir.

uploads içinde tanımadığınız bir PHP dosyası varsa dosyanın bozulmuş (kurcalanmış) olduğundan şüphelenin ve silmeden önce dosyanın tarihini ve içeriğini kaydedin.

İzinleri toplu düzeltme

WordPress dizininde çalıştırın. Çalıştırmadan önce yedek alın.

cd /var/www/html

# Dizinleri 755, dosyaları 644 yap
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +

# wp-config.php'yi kısıtla (PHP'nin dosya sahibi olarak çalıştığı ortam örneği)
chmod 600 wp-config.php

wp-config.php değerini ortamınıza göre şöyle seçin.

  • PHP, dosya sahibiyle aynı kullanıcı olarak çalışıyorsa (çoğu paylaşımlı kiralık sunucu, kullanıcı başına PHP-FPM): 600 veya 400
  • Sahibi kendi hesabınızsa ve web sunucusu grup olarak okuyorsa: 640 veya 440 yapın ve grubu web sunucusunun grubu olarak ayarlayın
# Örnek: sahibi kendiniz, grubu web sunucusu (www-data) yapıp 640 ver
sudo chgrp www-data wp-config.php
chmod 640 wp-config.php

Ayardan sonra siteyi ve yönetim ekranını açıp görüntülemenin ve girişin çalıştığını doğrulayın. Bembeyaz bir ekran veya hata alırsanız PHP wp-config.php dosyasını okuyamıyor demektir. Değeri 644'e geri alın, ardından sahibi ve grubu yeniden gözden geçirin.

400 veya 440 yaparsanız wp-config.php'ye yazan eklentiler (önbellek ayarlarını yazanlar gibi) başarısız olur. Bu tür eklentileri yapılandırırken yalnızca geçici olarak yazma izni verin.

wp-config.php’nin web üzerinden okunmasını engelleme

PHP düzgün çalışıyorsa wp-config.php'ye tarayıcıdan erişseniz de içeriği görünmez. PHP durduğunda kaynağın görüntülenmesini önlemek için web sunucusu tarafında da erişimi reddedin. Apache 2.4'te, WordPress'in bulunduğu dizindeki .htaccess dosyasına aşağıdakini yazın (eski Order Deny,Allow / Deny from all Apache 2.2 yazımıdır).

<Files "wp-config.php">
    Require all denied
</Files>

Ayrıntılı adımlar "wp-config.php erişimini reddetme ayarı" yazısında anlatılmaktadır.

.htaccess dosyasının kendisine erişim, Apache'nin standart ayarıyla (httpd.conf içindeki <Files ".ht*">) zaten reddedilir.

Resmî açıklamaya göre wp-config.php dosyasını WordPress'in bulunduğu dizinin bir üst dizinine de taşıyabilirsiniz. WordPress, aynı dizinde wp-config.php yoksa bir üst dizine bakar. Ancak resmî açıklama da etkisinin küçük olduğu görüşüne ve yanlış yapılırsa tersine tehlikeli olabileceğine değinir. Taşıyacaksanız bir üst dizinin herkese açık bir dizin olmadığından emin olun.

uploads içinde PHP çalıştırmayı engelleme

uploads, WordPress'in yazdığı bir dizin olduğundan saldırıyla dosya bırakılmaya elverişli bir yerdir. Burada PHP'nin çalışmasını engellerseniz, dosya bırakılsa bile çalışmaz.

Apache 2.4'te wp-content/uploads/.htaccess dosyasını oluşturup aşağıdakini yazın.

<FilesMatch "\.(php|phtml|phar)$">
    Require all denied
</FilesMatch>

.htaccess içinde Require kullanabilmek için sunucu tarafında AllowOverride ile buna izin verilmiş olması gerekir. İzin verilmemişse 500 hatası alınır veya ayar yok sayılır. Yazdıktan sonra https://example.com/wp-content/uploads/test.php gibi var olmayan bir PHP adresini açıp 403 aldığınızı doğrulayın (404 geliyorsa ayar etkili değildir).

Nginx'te server bloğunun içinde, PHP'yi işleyen location ~ \.php$ bloğundan önce aşağıdakini koyun. Düzenli ifadeli location blokları yukarıdan aşağıya sırayla eşleştirilir ve ilk eşleşen kullanılır.

location ~* ^/wp-content/uploads/.*\.(php|phtml|phar)$ {
    deny all;
}

Ayarı değiştirdikten sonra nginx -t ile sözdizimini kontrol edip yeniden yükleyin.

Ayrıca WordPress'in medya yüklemesi, izin verilen türler (görsel, PDF vb.) dışındaki dosyaları varsayılan olarak kabul etmez. PHP dosyasını medya olarak yüklemek, yönetim ekranından normalde mümkün değildir.

Dikkat edilecekler

  • İzinleri değiştirmeden önce dosyaların ve veritabanının yedeğini alın.
  • İzinleri bir FTP programıyla değiştiriyorsanız, bazı sunucularda toplu değişiklik desteklenmeyebilir. Dosya sayısı çoksa SSH'deki find komutunu kullanmak daha hızlıdır ve atlanan dosya kalmasını da önler.
  • Güncelleme sırasında FTP bağlantı bilgileri isteniyorsa izinleri genişletmeyin, sahipliği kontrol edin. "WordPress izin hatası nasıl düzeltilir" yazısına da bakabilirsiniz.
  • Yukarıdaki kontrol komutlarını (diğer kullanıcıların yazabildiği dosyalar, uploads içindeki PHP) düzenli olarak çalıştırırsanız ayar bozulmalarını veya kurcalamayı erken fark edersiniz.

WordPress hakkında sorunuz mu var? Bu sitenin yayıncısı Japonya'dadır ve Japonca yanıt verir. İletişim (Japonca)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲