WordPress, yazılım ve IT üzerine notlar
Anasayfa » Sunucu & Linux » Linux dosya izinleri: chmod, chown ve "777 yaptım düzeldi" alışkanlığından kurtulmak

Linux dosya izinleri: chmod, chown ve "777 yaptım düzeldi" alışkanlığından kurtulmak

İçindekiler
  1. İzinleri okumak
  2. r, w, x ne demek?
  3. Sayısal gösterim
  4. 777 neden tehlikeli?
  5. Sahiplik: Asıl çözüm
  6. Web siteleri için doğru ayarlar
  7. Bir kez daha: "Permission denied" teşhisi
  8. Özet

Linux'ta her dosyanın ve klasörün bir sahibi, bir grubu ve üç grup için tanımlanmış izinleri vardır. Bu yapı basittir, ama bir kez yanlış anlaşıldığında yıllarca süren güvenlik sorunlarına yol açar.

İzinleri okumak

ls -l
-rw-r--r--  1 ahmet  www   2410 Eyl 11 17:40 index.php
drwxr-xr-x  3 ahmet  www   4096 Eyl 11 17:40 wp-content

İlk sütun on karakterden oluşur:

  • 1. karakter: tür. - dosya, d klasör, l sembolik bağlantı.
  • Sonraki üçlü: sahip (rw- → okuyabilir, yazabilir).
  • Sonraki üçlü: grup (r-- → yalnızca okuyabilir).
  • Son üçlü: diğerleri, yani herkes (r--).

Üçüncü ve dördüncü sütunlar sahibi (ahmet) ve grubu (www) gösterir.

r, w, x ne demek?

Dosyalarda anlamları açıktır: oku, yaz, çalıştır. Klasörlerde ise farklıdır ve en çok karıştırılan konu budur:

  • r → klasörün içindeki dosyaların adlarını listeleyebilir.
  • w → klasörde dosya oluşturabilir, silebilir, adını değiştirebilir.
  • x → klasöre girebilir ve içindeki dosyalara erişebilir.

Bir klasörde x izni yoksa, içindeki dosyanın izni ne olursa olsun o dosyaya ulaşılamaz. "Dosyaya 644 verdim, hâlâ 403 alıyorum" şikâyetinin sebebi genellikle üst klasörlerden birindeki eksik x iznidir.

Sayısal gösterim

Her izin bir sayıya karşılık gelir: r = 4, w = 2, x = 1. Üçlüdeki sayılar toplanır:

7 = 4+2+1 = rwx
6 = 4+2   = rw-
5 = 4+1   = r-x
4 = 4     = r--
0         = ---

Böylece 644 sahip için rw-, grup ve diğerleri için r-- demektir. 755 ise sahip için rwx, diğerleri için r-x anlamına gelir.

chmod 644 dosya.php
chmod 755 klasor
chmod u+x betik.sh        # sahibe çalıştırma izni ekle
chmod go-w ayar.php       # grup ve diğerlerinden yazma iznini kaldır

777 neden tehlikeli?

777, herkesin o dosyaya yazabileceği anlamına gelir. "Herkes" demek, sunucuda çalışan her süreç ve her kullanıcı demektir. Paylaşımlı bir sunucuda başka bir müşterinin ele geçirilmiş sitesi, sizin 777 izinli klasörünüze PHP dosyası bırakabilir. Kendi sunucunuzda bile, web uygulamasındaki küçük bir açık saldırganın dosyalarınızı değiştirmesine izin verir.

"777 yapınca düzeldi" demek, sorunun aslında sahiplikte olduğu anlamına gelir. 777 sorunu çözmez, yalnızca kapıyı herkese açarak sorunu görünmez kılar.

Sahiplik: Asıl çözüm

Bir web sitesinde dosyalara iki taraf erişir: siz (FTP ya da SSH ile) ve web sunucusu ya da PHP süreci. PHP hangi kullanıcıyla çalışıyor? Asıl soru budur.

ps -o user= -C php-fpm | sort -u     # PHP-FPM süreçleri hangi kullanıcıyla çalışıyor?

Modern hosting kurulumlarında her sitenin PHP havuzu, o sitenin kendi kullanıcısıyla çalışır. Bu durumda dosyaların sahibi de o kullanıcı olmalıdır:

chown -R ahmet:ahmet /home/ahmet/public_html

Sahiplik doğruysa 755 ve 644 izinleri yeterlidir. PHP hem okuyabilir hem yazabilir, başka hiçbir kullanıcı yazamaz.

Web siteleri için doğru ayarlar

cd /home/ahmet/public_html
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +
chmod 600 wp-config.php .env 2>/dev/null
  • Klasörler: 755
  • Dosyalar: 644
  • Şifre içeren yapılandırma dosyaları: 600 (ya da web sunucusu ayrı bir grupla okuyorsa 640)

Bir kez daha: "Permission denied" teşhisi

Bir yolun her basamağındaki izinleri tek komutla görmek için:

namei -l /home/ahmet/public_html/wp-content/uploads/2026/09/resim.jpg

Bu komut yolun her klasörünün sahibini ve izinlerini sırayla listeler. Zincirde x izni eksik olan ya da sahibi yanlış olan halka hemen göze çarpar.

RHEL, AlmaLinux ve Rocky gibi dağıtımlarda bir de SELinux katmanı vardır. İzinler ve sahiplik doğru olduğu hâlde erişim reddediliyorsa:

ls -Z dosya.php
ausearch -m avc -ts recent

Bu komutlar SELinux etiketini ve son engellemeleri gösterir. SELinux'u kapatmak yerine restorecon -Rv /yol ile doğru etiketleri geri yüklemek çoğu zaman sorunu çözer.

Özet

İzin sorunlarında önce sahipliğe bakın, sonra izinlere. 755 ve 644 neredeyse her zaman yeterlidir. 777 ise neredeyse hiçbir zaman doğru cevap değildir.

Tezcan Kabakçı
Hosting teknik destek uzmanı ve WordPress uzmanı. 2024'ten beri bir hosting şirketinde teknik destek bölümünde çalışıyor; WordPress, DNS ve e-posta sorunlarını her gün yakından görüyor. YouTube kanalı.
Bu yazı 11 Eylül 2026 tarihinde Sunucu & Linux kategorisinde yayınlandı.
Yeni yazılar e-postanıza gelsin

Ayda birkaç e-posta; istediğiniz an tek tıkla ayrılabilirsiniz.

Videolu anlatımlar YouTube'da
Sunucu ve WordPress sorunlarını kısa videolarla anlattığım kanala abone olabilirsiniz. ▶ Kanala abone ol

Yorumlar

Henüz yorum yok. İlk yorumu siz yazın.

Yorum yazın

Yorumlar onaylandıktan sonra yayımlanır. Bağlantı içeren yorumlar spam olarak değerlendirilebilir.