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ı | İzinler | Anlamı |
|---|---|---|
| 7 | rwx | Okuma + yazma + çalıştırma |
| 6 | rw- | Okuma + yazma |
| 5 | r-x | Okuma + çalıştırma |
| 4 | r-- | 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:
# 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/sitechown 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:
# 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/siteWeb 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.