Linux hosting'de dosya izinleri; pratik chmod rehberi

403 veya Permission denied hatası alıyorsanız, bu rehber doğru dosya ve klasör izinlerinin ne olduğunu ve 777'nin sorunu neden gizlediğini gösterir.

6 dk Güncellendi 21 Sep 2026

Site açılmıyor, tarayıcı 403 Forbidden gösteriyor veya WordPress tema yüklerken Could not create directory diyor. File Manager'a giriyorsunuz, klasöre sağ tıklıyorsunuz, 777 veriyorsunuz ve sorun çözülüyor. Ta ki gelecek hafta hosting bir e-posta gönderip wp-content/uploads içinde bilinmeyen bir PHP dosyasının çalıştırıldığını söyleyene kadar. Bu makale, "çalışıyor" ile "doğru" arasındaki o boşluk hakkında yazılmıştır.

Dosya izni ne demek ve neden sayı yazıyorlar

Linux her dosya için üç grup tanımlar: sahip (user), grup (group) ve diğerleri (others). Her grubun üç biti vardır: okuma (r=4), yazma (w=2) ve çalıştırma (x=1). chmod içinde yazdığınız sayı bu bitlerin toplamıdır. Yani 644, sahibin okuyup yazması, grubun sadece okuması, diğerlerinin sadece okuması demektir. 755 ise sahibin her şeyi yapabilmesi, diğerlerinin sadece okuyup klasöre girebilmesi demektir.

Çoğu kişinin bilmediği nokta: x'in dosya ve klasör üzerindeki anlamı farklıdır. Dosya üzerinde "çalıştırılsın" demektir. Klasör üzerinde "içine girip dosya adlarını görebilesin" demektir. Bir klasör 644 ise, içindeki dosya 644 ve tamamen okunabilir olsa bile, web sunucusu o dosyaya erişemez. Ortaya çıkan hata da yanıltıcıdır: kendisinde hiçbir sorun olmayan bir dosyada 403 Forbidden.

Doğru dosya ve klasör izni değeri

Paylaşımlı hosting'deki PHP sitelerinin ezici çoğunluğu için bu iki sayı yeterlidir:

  • Dosyalar: 644
  • Klasörler: 755

Hepsi bu. Dosyaların sahipliği doğruysa, bu iki sayı her şeyi çalıştırır. SSH üzerinden tek seferde çalıştırma komutu:

find /home/USER/public_html -type d -exec chmod 755 {} \;
find /home/USER/public_html -type f -exec chmod 644 {} \;

Sıralama önemlidir: önce klasörler, sonra dosyalar. Tersini yaparsanız ve sonradan bir klasör oluşturulursa sonuç aynıdır, ancak komutu büyük bir ağaç üzerinde çalıştırmak birkaç saniye sürer ve bir kez doğru şekilde yapılması daha iyidir.

Gerçekten var olan istisnalar

Genellikle üç yerde yukarıdaki kuraldan çıkmanız gerekir. Birincisi, WordPress'teki wp-config.php dosyası; buna 600 veya 640 verebilirsiniz; sahibinden başka kimse onu okumamalıdır. İkincisi, betiğin içinde dosya oluşturması gereken klasörler, örneğin wp-content/uploads veya eklenti cache klasörleri; bunlar çoğu zaman 755 ile çalışır, ancak PHP farklı bir sahiplikle çalıştırılıyorsa 775 gerekli olur. Üçüncüsü, bazı ortamların 755 ile çağırdığı wp-cron.php gibi çalıştırılabilir dosyalar.

Ve bir uyarı: 775 yalnızca sahip ve grup doğru ayarlandığında anlam taşır. Dosyaların sahipliği nobody:nobody ise ve siz 775 verirseniz, pratikte sunucudaki tüm kullanıcılara yazma izni vermiş olursunuz. Burada hata yapıyorlar: sayıyı değiştiriyorlar, sahipliği değiştirmiyorlar.

777 neden çözüm değil, işe yaradığında bile

777, o sunucudaki her kullanıcının, aynı makinede barındırılan diğer her siteden, dosyalarınıza yazma ve çalıştırma izni olduğu anlamına gelir. Paylaşımlı hosting'de bu, kendisi hacklenmiş komşu bir sitenin sizin wp-content/uploads içine bir PHP dosyası koyup onu çalıştırabileceği anlamına gelir. Hiçbir belirti görmezsiniz; siteniz sağlıklı çalışır. Ta ki hosting'in tarayıcısı veya şüpheli bir giden trafik raporu olayı ortaya çıkarana kadar.

İkinci sorun daha tekniktir. Bazı hosting'ler suPHP veya PHP-FPM ayarları nedeniyle 777 izinli dosyayı tamamen reddeder ve hatayı düzeltmek yerine 500 Internal Server Error alırsınız. Yani 777 ne güvenlidir ne de her zaman çalışır. İzinleri değiştirdikten sonra beyaz sayfa görürseniz, hata yolu başka bir yerdedir; WordPress ve PHP'de beyaz sayfa giderme rehberi logları doğru inceleme sırasını açıklar.

Sorunun gerçek işareti: sahiplik

755 ve 644 ile de yazma hatası alıyorsanız, sorun neredeyse her zaman sahipliktir, sayı değil. SSH ile kontrol edin:

ls -ln /home/USER/public_html/wp-content/uploads
id
ps aux | grep -E 'php-fpm|apache' | head -3

Dosyaların sahibi, PHP'nin altında çalıştırıldığı kullanıcıyla aynı değilse, hiçbir sayı sorunu çözmez. Doğru yol, sahipliği düzeltmektir:

chown -R USER:USER /home/USER/public_html

Paylaşımlı hosting'de genellikle chown erişiminiz yoktur ve bunu panelden veya destek talebiyle istemeniz gerekir. Kendi özel sunucunuzda bu kısıtlama yoktur ve bu, bazı ekiplerin bir süre sonra paylaşımlı hosting'den taşınması için tek başına yeterli bir sebeptir.

Yaygın hatalar ve logda gördükleriniz

BelirtiMuhtemel nedenEylem
Bir dosyada 403 ForbiddenÜst klasörün çalıştırma (x) izni yokKlasörü 755 yapın
PHP logunda Permission deniedYanlış sahiplik veya salt okunur klasörls -ln kontrolü ve sahipliği düzeltme
WordPress'te başarısız yüklemeuploads yazılabilir değil755 veya gerekirse 775
chmod sonrası 500 Internal Server Error777, PHP handler tarafından reddedildi644/755'e geri dönün
Eklenti dosya oluşturamıyorCache klasörü yanlış sahiplikteKlasörü silin ve PHP tarafından yeniden oluşturulsun

Pratik bir not: Her toplu değişiklikten önce izinlerin çıktısını kaydedin ki bir şey bozulursa geri dönebilesiniz.

find /home/USER/public_html -printf '%m %p\n' > ~/perms-backup.txt

644/755 kuralından ne zaman çıkmalısınız

Siteniz paylaşımlı hosting'deyse ve sahiplik doğru ayarlanmışsa, 644 ve 755'i koruyun ve hiçbir bahaneyle 777 vermeyin. VPS veya özel sunucudaysanız ve PHP-FPM'i sitenin özel kullanıcısıyla çalıştırıyorsanız, aynı 644/755 yeterlidir ve her şeyden daha güvenlidir. 775'in mantıklı olduğu tek durum, web sunucusu ile dağıtım (deploy) kullanıcısı arasında ortak bir grubun olduğu ve her ikisinin de klasöre yazması gerektiği durumdur. O zaman bile 777 yanlış bir seçimdir.

Test ortamı veya yönetim paneli için, izinleri açmak yerine web sunucusu kimlik doğrulamasını kullanın; hosting'de klasörü şifreleme tam olarak bu senaryo için yazılmıştır ve chmod'da yapılacak herhangi bir değişiklikten daha güvenlidir.

Sitenin dosya sayısı fazlaysa ve izinleri manuel yönetmek zaman alıcı hale geldiyse, FTP hesabı oluşturma ve yönetme rehberi erişimleri dosya tarafından değil, hesap tarafından nasıl kısıtlayacağınızı gösterir. Ve hosting'inizde başka hangi kısıtlamaların uygulandığını bilmek istiyorsanız, hosting kaynak limitleri referansı her sayıyı ayrı ayrı açıklamıştır.

Sık sorulan sorular

WordPress dosyaları için doğru izin nedir?

Dosyalar 644 ve klasörler 755. Bu iki sayı, paylaşımlı hosting'deki çoğu WordPress kurulumu için yeterlidir ve değiştirmeye gerek yoktur. Tek istisnalar, 600 veya 640 ile wp-config.php ve gerekirse 775'e ulaşan yükleme ve cache klasörleridir.

777'den sonra site çalışıyor ama hosting neden uyarıyor?

Çünkü 777, sunucudaki her kullanıcıya yazma ve çalıştırma izni verir. Siteniz çalışır, ancak aynı sunucudaki başka bir site enfekte olursa, saldırgan klasörlerinize kötü amaçlı bir dosya koyup çalıştırabilir. Hosting uyarısı genellikle tam da bu dosyaların otomatik taranmasından sonra gönderilir.

chmod ile chown arasındaki fark nedir ve hangisini kullanmalıyım?

chmod izin seviyesini değiştirir ve chown sahipliği. Yazma hatası alıyorsanız ve izinler 644/755 ise, sorun sahipliktir ve chown yapmanız gerekir. Paylaşımlı hosting'de genellikle bu erişiminiz yoktur ve destekten istemeniz gerekir.

Klasör için 755 güvenli mi?

Evet, sahiplik doğru olduğu sürece. 755, yalnızca sahibin yazabileceği, diğerlerinin ise yalnızca okuyup klasöre girebileceği anlamına gelir. Tehlike, sahiplik nobody gibi yanlış bir kullanıcıya verildiğinde başlar; o zaman 755 de pratikte açıktır.

Her toplu değişiklikten önce, izinlerin çıktısını bir kez kaydedin ve sonra find komutunu çalıştırın. Eğer ondan sonra site açılmazsa, muhtemelen sorun sayı değil sahipliktir. Başlangıç için, doğru sahiplikle ayarlanmış Linux hosting, bu tür hataları kökten azaltan şeydir.

Bu sayfa yardımcı oldu mu?