FTP Dosya İzinleri Nasıl Olmalı? (chmod 755, 644 Ne Anlama Geliyor?)
Web sitenizi FTP ile yönetiyorsanız, er ya da geç şu uyarılardan biriyle karşılaşırsınız: "Permission denied", "500 Internal Server Error" ya da daha kötüsü, sitenizin hacklendiğine dair bir mail. Bu sorunların büyük çoğunluğunun arkasında tek bir konu vardır: yanlış yapılandırılmış dosya izinleri.
Pek çok kullanıcı "çalışmıyor" diyerek hızlıca bütün klasörlere 777 izni veriyor. Bu, evin anahtarını kapının önündeki paspasın altına koymak gibidir — evet, sorununuzu çözer, ama aynı zamanda kötü niyetli herkese kapıyı açar. Bu yazıda FTP izinlerinin nasıl çalıştığını, hangi dosyaya hangi iznin verilmesi gerektiğini ve sık yapılan hataları anlatacağız.
İzinler Neden Bu Kadar Önemli?
Linux tabanlı sunucularda her dosya ve klasör, kimin neye erişebileceğini belirleyen bir izin setine sahiptir. Yanlış izinler iki tür soruna yol açar:
- Eksik izin verirseniz: Siteniz çalışmaz. PHP betikleri hata verir, yükleme klasörleri çalışmaz, eklentiler kurulmaz.
- Fazla izin verirseniz: Sitenize giren bir saldırgan, sunucudaki diğer dosyaları da değiştirebilir, zararlı kod yerleştirebilir
- Doğru izin yapılandırması, çalışan bir site ile güvenli bir site arasındaki dengeyi sağlar.
İzin Sistemi Nasıl Çalışır?
Linux dosya sisteminde her dosyanın üç farklı kullanıcı sınıfı için izni vardır:
- Owner (Sahip): Dosyayı oluşturan kullanıcı
- Group (Grup): Sahibin ait olduğu kullanıcı grubu
- Other (Diğer): Yukarıdakilerin dışındaki herkes
Her sınıf için üç farklı izin tipi tanımlanır:
| İzin | Sembol | Sayısal Değer | Anlamı |
|---|---|---|---|
| Read | r | 4 | Okuma izni |
| Write | w | 2 | Yazma/değiştirme izni |
| Execute | x | 1 | Çalıştırma izni (klasörlerde içine girme) |
Bu sayıların toplamı, o sınıfın iznini belirler. Örneğin:
- 7 = 4 + 2 + 1 = okuma + yazma + çalıştırma (tam izin)
- 6 = 4 + 2 = okuma + yazma
- 5 = 4 + 1 = okuma + çalıştırma
- 4 = sadece okuma
Üç sınıf için bu sayıları yan yana yazdığımızda, sık duyduğunuz 755, 644, 777 gibi izin kodları ortaya çıkar.
Örnek: chmod 755 izni şu anlama gelir:
- Owner: 7 (okuma + yazma + çalıştırma)
- Group: 5 (okuma + çalıştırma)
- Other: 5 (okuma + çalıştırma)
Sembolik gösterimde ise aynı izin rwxr-xr-x şeklinde görünür. FileZilla gibi FTP istemcilerinde her iki gösterimi de görebilirsiniz.
Hangi Dosyaya Hangi İzin Verilmeli?
İşte yazının en kritik kısmı. Pratikte kullanabileceğiniz değerler:
Klasörler: 755
Klasörlerin içine girilebilmesi için execute (x) iznine ihtiyaç vardır. Bu yüzden klasörlere genellikle 755 verilir. Yani sahibi tam yetkili, diğerleri sadece görüntüleyebilir.
Normal Dosyalar: 644
HTML, CSS, JS, görseller, PHP dosyaları gibi standart web dosyaları için 644 idealdir. Sahibi okuyup yazabilir, diğer herkes sadece okuyabilir. Bu, web sunucusunun dosyayı kullanıcıya servis etmesi için yeterlidir.
Hassas Yapılandırma Dosyaları: 600 veya 400
wp-config.php, .env, veritabanı bağlantı bilgileri içeren dosyalar gibi hassas veriler barındıran dosyalar için 600 (sadece sahibi okuyup yazabilir) ya da 400 (sadece sahibi okuyabilir) tercih edilmelidir. Bu dosyalar genellikle web sunucusu tarafından doğrudan kullanıcıya servis edilmez, içeriği bir PHP süreci tarafından okunur. Dolayısıyla "other" kullanıcılara izin vermek gereksiz bir risktir.
Yükleme Klasörleri (uploads, cache, tmp): 755
WordPress'in wp-content/uploads klasörü gibi, web sunucusunun dosya yazması gereken klasörler için kesinlikle 777 vermeyin. Doğru ayarlanmış bir sunucuda 755 yeterlidir, çünkü web sunucusu zaten dosyaların sahibidir. Eğer 755 ile çalışmıyorsa, sorun izinlerde değil, dosya sahipliğindedir — hosting sağlayıcınızla konuşmalısınız.
CGI / Shell Scriptleri: 755
Çalıştırılması gereken betikler için execute iznine ihtiyaç vardır, bu yüzden 755 kullanılır.
Pratik Özet Tablosu
| Dosya Tipi | Önerilen İzin |
|---|---|
| Klasörler | 755 |
| Normal dosyalar | 644 |
| Hassas yapılandırma (wp-config, .env) | 600 |
| Yükleme klasörleri | 755 |
| CGI/Shell scriptleri | 755 |
| .htaccess | 644 |
777'den Neden Kaçınmalısınız?
777, "dünyadaki herkes bu dosyada her şeyi yapabilir" demektir. Birisi sunucunuza herhangi bir yolla sızdığında, 777 izinli klasörlere zararlı PHP dosyaları yükleyebilir, mevcut dosyalarınızı silebilir ya da değiştirebilir. Paylaşımlı hostinglerde başka kullanıcılar bile bu klasörlere müdahale edebilir.
Bir geliştirici olarak şu kuralı asla unutmayın: 777 bir çözüm değil, sorunun bir başka biçimidir. Eğer 755 veya 644 ile çalışmayan bir yapı kurduysanız, dosya sahipliğini (chown) kontrol edin ya da hosting desteğine danışın.
FileZilla ile İzin Nasıl Değiştirilir?
FileZilla, en yaygın kullanılan ücretsiz FTP istemcisidir. İzin değiştirmek için:
- Sunucuya bağlanın.
- İzin değiştirmek istediğiniz dosya veya klasöre sağ tıklayın.
- Açılan menüden "File permissions..." (Dosya izinleri) seçeneğini tıklayın.
- Açılan pencerede ya checkboxları işaretleyerek ya da en alttaki "Numeric value" kutusuna 755 gibi sayısal bir değer yazarak izni belirleyin.
- Klasör üzerinde değişiklik yapıyorsanız, "Recurse into subdirectories" seçeneği ile alt dizinlere de uygulayabilirsiniz — ama dikkat: alt klasörlere uygulanacak iznin sadece klasörler ya da sadece dosyalar için olduğunu belirtmeyi unutmayın.
Sık Yapılan Hatalar
1. Recursive 777 uygulamak. "Hızlı çözüm" diye bütün siteye 777 vermek, sitenizi internet üzerinde herkese erişime açık hale getirirsiniz.
2. Klasör ve dosyalara aynı izni vermek. Klasörlerin 755, dosyaların 644 olması gerekir. "Hepsine 755 verdim" demek, dosyalarınızı gereksiz yere çalıştırılabilir yapar, bu da güvenlik riski oluşturur. FileZilla'da recursive izin değiştirirken "Apply to directories only" ve "Apply to files only" seçeneklerini ayrı ayrı kullanmalısınız.
3. wp-config.php'yi 644 bırakmak. WordPress sitelerinde en kritik dosyalardan biridir, mutlaka 600 yapılmalıdır.
4. Sahiplik (ownership) sorununu izinlerle çözmeye çalışmak. Dosya sahibi yanlışsa, 777 vererek değil, doğru kullanıcıya devrederek (chown) çözmelisiniz.
Linux ve Windows Hosting Farkı
Şunu da bilmek gerekir: yukarıda anlattığım her şey Linux tabanlı hostingler için geçerli. Windows sunucularda (IIS) chmod kavramı çalışmaz. Windows'ta izinler ACL (Access Control List) üzerinden, genellikle hosting kontrol paneli aracılığıyla yönetilir. Eğer Plesk ya da cPanel kullanıyorsanız, kontrol panelinin dosya yöneticisinden de izin değiştirebilirsiniz.
Standart bir kurulumda klasörler 755, dosyalar 644, hassas yapılandırma dosyaları 600 olmalıdır. 777'ye ihtiyacınız olduğunu düşündüğünüz her durumda, aslında çözmeniz gereken farklı bir sorun vardır.
Bu basit kurallara uyarsanız, hem siteniz sorunsuz çalışır hem de yıllar boyunca sürebilecek güvenlik açıklarını baştan kapatmış olursunuz.
Sunucupark Destek