Linux'ta her dosya ve dizinin kimin ne yapabileceğini belirleyen bir izin yapısı vardır. Bu yapıyı anlamak; web sunucusunun dosyalara erişebilmesi, güvenlik açıklarının önlenmesi ve "permission denied" hatalarının çözülmesi için kritiktir. Bu rehberde Linux dosya izinlerini, chmod ve chown komutlarıyla birlikte açıklıyoruz.

İlgili içerikler: Linux sunucu komutları · SSH ile sunucuya bağlanma · VPS güvenlik sertleştirme

Linux İzin Yapısı Nasıl Çalışır?

Her dosyanın izinleri üç kişi sınıfı için ayrı ayrı tanımlanır: sahip (owner), grup (group) ve diğerleri (others). Her sınıf için üç izin türü vardır: okuma (r), yazma (w) ve çalıştırma (x).

ls -l komutu izinleri -rwxr-xr-x biçiminde gösterir. İlk karakter dosya türüdür (- dosya, d dizin). Sonraki üçerli gruplar sırasıyla sahip, grup ve diğerlerinin izinlerini belirtir.

Sayısal (Oktal) İzin Gösterimi

İzinler sıklıkla sayılarla ifade edilir. Her izin türünün bir değeri vardır: okuma 4, yazma 2, çalıştırma 1. Bir sınıfın izni bu değerlerin toplamıdır.

SayıİzinlerAnlamı
7rwxOkuma + yazma + çalıştırma
6rw-Okuma + yazma
5r-xOkuma + çalıştırma
4r--Yalnızca okuma
0---İzin yok

Örneğin 755 izni: sahip için tam yetki (7), grup ve diğerleri için okuma+çalıştırma (5). 644 ise: sahip okuma+yazma (6), diğerleri yalnızca okuma (4).

chmod ile İzin Değiştirme

chmod komutu izinleri değiştirir. Hem sayısal hem sembolik kullanım mümkündür:

bash
# Sayısal: dizinlere 755, dosyalara 644 standart bir tercihtir
chmod 755 betik.sh
chmod 644 index.html

# Sembolik: sahibe çalıştırma izni ekle
chmod u+x betik.sh

# Bir dizin ağacının tamamına uygula (-R)
chmod -R 644 /var/www/site

chown ile Sahiplik Değiştirme

chown bir dosyanın sahibini ve grubunu değiştirir. Web sunucularında dosyaların doğru kullanıcıya ait olması, sitenin çalışması için şarttır:

bash
# Sahip ve grubu aynı anda değiştir
chown www-data:www-data /var/www/site

# Bir dizin ağacının tamamına uygula
chown -R www-data:www-data /var/www/site

Web Sunucusu İçin Doğru İzinler

Bir web sitesinde izinlerin hem güvenli hem işlevsel olması gerekir. Genel kabul gören yaklaşım şudur: dizinler 755, dosyalar 644, dosyaların sahibi web sunucusu kullanıcısı (www-data veya benzeri).

Sıkça Sorulan Sorular

755 ve 644 arasındaki fark nedir?

755 genelde dizinler ve çalıştırılabilir betikler içindir (çalıştırma izni gerekir). 644 ise normal dosyalar içindir — okunur ama çalıştırılmaz. Bu ayrım hem güvenli hem işlevseldir.

"Permission denied" hatasını nasıl çözerim?

Önce dosyanın sahibini ve iznini ls -l ile kontrol edin. Çoğu zaman sorun yanlış sahipliktir; chown ile doğru kullanıcıya atayın. İzin gerçekten eksikse chmod ile minimum gerekli izni verin.

Çalıştırma (x) izni dizinler için ne anlama gelir?

Dizinlerde x izni, o dizine "girebilme" (içeriğine erişebilme) anlamına gelir. Bu yüzden dizinler genelde 755 alır — içine girilebilmesi gerekir.