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

Linux terminalinde ls -l yazdığınızda dosyaların başında -rw-r--r-- veya drwxr-xr-x gibi 10 karakterlik bir dizi görürsünüz:

  1. İlk karakter: Dosya türünü belirtir (- normal dosya, d dizin/klasör).
  2. Sonraki 3 karakter: Dosya Sahibinin (Owner / User) yetkileri.
  3. Ortadaki 3 karakter: Dosyanın Grubunun (Group) yetkileri.
  4. Son 3 karakter: Diğer tüm Dünyanın (Others / Public) yetkileri.

Sayısal Yetki Değerleri (Oktal Sistem)

  • Okuma (Read - r): 4
  • Yazma (Write - w): 2
  • Çalıştırma (Execute - x): 1
  • Yetkisiz (-): 0

Toplama yapılarak izin kodları belirlenir:

  • 7 = 4 + 2 + 1 (Okuma + Yazma + Çalıştırma)
  • 6 = 4 + 2 + 0 (Okuma + Yazma)
  • 5 = 4 + 0 + 1 (Okuma + Çalıştırma)
  • 4 = 4 + 0 + 0 (Yalnızca Okuma)

Web Siteleri İçin Altın Standart İzinler

Web sunucularında (WordPress vb.) güvenlik açığı yaratmamak için standart kural şudur:

  • Tüm Dizinler/Klasörler: 755 (drwxr-xr-x)
  • Tüm Standart Dosyalar: 644 (-rw-r--r--)
  • Kritik Yapılandırma Dosyaları (wp-config.php): 600 veya 640
  • ASLA YAPILMAMASI GEREKEN: Hiçbir dosyaya veya klasöre chmod 777 vermeyin! 777 izni sunucudaki herkese yazma hakkı tanıyarak sitenizi hacklenmeye açık hale getirir.
# Klasörlere topluca 755 verme:
find /var/www/html/ -type d -exec chmod 755 {} \;

# Dosyalara topluca 644 verme:
find /var/www/html/ -type f -exec chmod 644 {} \;

Dosya Sahipliğini Değiştirme (chown)

Web sunucusunun dosyaları okuyup güncelleyebilmesi için dosyaların sahibi web sunucusu kullanıcısı olmalıdır:

# Ubuntu/Debian (www-data):
chown -R www-data:www-data /var/www/html/

# AlmaLinux/CentOS (nginx veya apache):
chown -R nginx:nginx /var/www/html/