Ulu Önder Mustafa Kemal Atatürk'ü aramızdan ayrılışının 88. yılında saygı, minnet ve özlemle anıyoruz.

Linux'ta dosya izinleri: chmod, chown ve sık yapılan hatalar

kaan.yildiz Mid 1 saat önce · 0 görüntülenme

"Permission denied" Linux'ta en sık görülen hatalardan biridir. Çözüm olarak chmod 777 yazmak işi görür gibi görünür ama ciddi bir güvenlik açığı bırakır. İzin sistemini bir kez anlamak bu hatayı doğru çözmeni sağlar.

İzinleri okumak

$ ls -l
-rw-r--r-- 1 ayse www-data  1204 Kas 10 09:12 config.php
drwxr-x--- 2 ayse www-data  4096 Kas 10 09:12 uploads

İlk karakter türdür (- dosya, d klasör). Sonraki dokuz karakter üç gruba ayrılır:

Grup Kim Örnek
ilk üçlü Sahibi (user) rw-
ikinci üçlü Grup (group) r--
üçüncü üçlü Diğer herkes (others) r--
  • r = okuma (4), w = yazma (2), x = çalıştırma (1)
  • Sayısal gösterim toplamdır: rw- = 6, r-x = 5, r-- = 4

Klasörlerde x farklı anlama gelir

Bir klasörde x izni, klasörün içine girebilmek ve içindeki dosyalara erişebilmek demektir. Dosyayı okuma iznin olsa bile, yolundaki herhangi bir klasörde x iznin yoksa dosyaya ulaşamazsın. Web sunucusunun bir dosyayı okuyamadığı durumların çoğu buradan çıkar.

Yoldaki bütün klasörlerin izinlerini tek seferde görmek için:

namei -l /var/www/site/public/index.php

chmod ve chown

chmod 640 config.php          # sahibi okur/yazar, grup okur, diğerleri hiçbir şey
chmod 750 uploads             # sahibi her şey, grup girer/okur
chmod u+x deploy.sh           # sadece sahibine çalıştırma izni ekle
chown ayse:www-data config.php

Toplu düzeltme yaparken dosya ve klasörleri ayır:

find /var/www/site -type d -exec chmod 755 {} +
find /var/www/site -type f -exec chmod 644 {} +

Makul varsayılanlar (web sitesi örneği)

  • Kod dosyaları: 644, klasörler: 755
  • Gizli bilgi içeren dosyalar (.env, anahtarlar): 600 veya 640 (sadece sahibi ya da sahibi + web sunucusu grubu)
  • Uygulamanın yazması gereken klasörler (önbellek, yüklemeler): web sunucusunu çalıştıran kullanıcıya ait olsun, 755 veya 775

Neden 777 kullanmamalı?

777, sunucudaki her kullanıcının ve her sürecin o dosyayı değiştirebileceği anlamına gelir. Paylaşımlı sunucuda başka bir kullanıcı, ya da sitendeki başka bir uygulamanın açığından giren biri, dosyana kendi kodunu yazabilir. Doğru çözüm genellikle izni açmak değil, sahipliği düzeltmektir: dosya, ona yazması gereken kullanıcıya ait olmalı.

Diğer ipuçları

  • sudo ile oluşturduğun dosyalar root'a ait olur. Sonra normal kullanıcı veya web sunucusu yazamaz. ls -l ile sahibine bak.
  • umask yeni oluşturulan dosyaların varsayılan iznini belirler (022 → dosyalar 644, klasörler 755).
  • Bir betiği çalıştıramıyorsan: x izni var mı, ilk satırda #!/bin/bash gibi doğru yorumlayıcı var mı, dosya Windows satır sonlarıyla (\r\n) kaydedilmiş mi? (Sonuncusunda "bad interpreter" hatası alırsın, dos2unix ile düzeltilir.)
0

0 cevap

Henüz cevap yok. İlk cevabı sen yaz.

Cevap yaz

Cevap yazmak için giriş yapmalısın.

Konu bilgisi
  • Açılış10.11.2026
  • Son etkinlik1 saat önce
  • Cevap0
  • Görüntülenme0
  • Beğeni0
Yeni konu aç