Linux tabanlı bir VDS sunucuda dosya ve klasör izinleri, güvenlik zincirinin en kritik halkalarından biridir. Yanlış tanımlanmış bir izin, verilerinizi saldırganlara açabilir veya sistemin bütünlüğünü bozabilir. İşte bu noktada chmod komutu, kullanıcıların hangi dosyayı okuyabileceğini, yazabileceğini ya da çalıştırabileceğini belirleyen anahtar rolü üstlenir.
CHMOD Temel Mantığı
Kullanıcı Grupları
Bir dosya ya da klasör için izinler üç farklı kullanıcı grubu üzerinden belirlenir
Sahip (Owner) → Dosyanın sahibi olan kullanıcı.
Grup (Group) → Dosyanın bağlı olduğu kullanıcı grubu.
Diğerleri (Others) → Sistemdeki diğer tüm kullanıcılar.

*CHMOD’un çalışma mantığı, sayısal değerlerle temsil edilen izinlere dayanır. Her izin türü bir sayı ile ifade edilir.
- r (okuma) = 4
- w (yazma) = 2
- x (çalıştırma) = 1
Her gruba okuma (r), yazma (w) ve çalıştırma (x) izinleri ayrı ayrı tanımlanır. Bu izinler sayısal kombinasyonlarla ifade edilir. Örneğin, 7 sayısı 4 (okuma) + 2 (yazma) + 1 (çalıştırma) toplamını temsil eder.
| İzinler | Değer | Anlamı |
|---|---|---|
| 0 | 000 | Hiçbir izin yok |
| 1 | 001 | Yalnızca çalıştırma |
| 2 | 010 | Yalnızca yazma |
| 4 | 100 | Yalnızca okuma |
| 5 | 101 | Okuma + çalıştırma |
| 6 | 110 | Okuma + yazma |
| 7 | 111 | Okuma + yazma + çalıştırma |
Chmod Kullanımı
Tüm İzinleri Kapatmak
Bir bash betiği hazırlayalım
nano myscript.sh

Dosya üzerindeki tüm yetkileri kaldırmak için kuralı uygulayalım.
chmod 000 myscript.sh

Bu ayar ile dosya üzerinde okuma, yazma veya çalıştırma yetkisi kimseye verilmez. Yalnızca sistem yöneticisi özel izinlerle müdahale edebilir.
Tüm Kullanıcıları Yetkilendirme
Tüm kullanıcıların dosyayı serbestçe kullanabilmesi için aşağıdaki betiği uygulayalım.
chmod 777 myscript.sh
Bu komut, dosyaya evrensel erişim sağlar. Artık herkes dosyayı okuyabilir, üzerinde değişiklik yapabilir ve çalıştırabilir. Terminalde dosyanın rengi de genellikle yeşil olarak görünür.
Sadece Sahip İçin Tam Yetkilendirme
Güvenlik açısından en sık kullanılan yöntemlerden biri olup dosya sahibine tam yetki tanımlayıp diğer kullanıcıların yalnızca okuma hakkına sahip olmasıdır
chmod 744 myscript.sh

- 7 → sahibi için okuma, yazma ve çalıştırma
- 4 → gruptakiler için sadece okuma
- 4 → diğer kullanıcılar için yalnızca okuma iznini ifade eder.
chmod Kullanım İpuçları
find Komutuyla chmodKullanımı
Linux’ta tek tek dosyalara izin vermek yerine, find komutu ile farklı dosyaları aynı anda yönetebilirsiniz.
Mesela bir klasörün içindeki tüm dosyaları 644, tüm klasörleri ise 755 yapmak için:
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
*Bu yöntem özellikle web sunucuları (Apache, Nginx) üzerinde en sık kullanılan güvenli yapılandırmadır.
Belirli Dosyalara İzin Atamak
Bazen sadece belli türde dosyalar özel izinler vermek için aşağıdaki komutu uygulayabilirsiniz.
find /scripts -name "*.sh" -exec chmod 700 {} \;
*Bu örnekte .sh dosyaları sadece sahibi tarafından çalıştırılabilir hale gelir. Özellikle cron görevleri için önemlidir.
Belirli Klasörlere Ayrı İzinler Vermek
Toplu izin değiştirmede en çok yapılan hata, dosyalar ve klasörleri ayırmadan chmod uygulamaktır.
Klasörlerin çalıştırılabilir (x) izni olması gerekirken, dosyalarda her zaman gerekli değildir.
# Klasörlere 755
find /project -type d -exec chmod 755 {} \;
# Dosyalara 644
find /project -type f -exec chmod 644 {} \;
*WordPress gibi CMS sistemlerinde oldukça önemlidir. Yanlış izinler, beyaz ekran hatalarına ya da güvenlik açıklarına yol açabilir.
Sık Sorulan Sorular
CHMOD ile CHOWN arasındaki fark nedir?
CHMOD dosya ve klasörlerin erişim izinlerini düzenlerken, CHOWN dosyanın sahibini veya ait olduğu kullanıcı grubunu değiştirir. Bu iki komut genellikle birlikte kullanılır çünkü hem izinlerin hem de sahipliğin doğru tanımlanması güvenlik açısından önemlidir.
Felaket kurtarma senaryolarında CHMOD’un önemi nedir?
Yanlış tanımlanmış izinler, kritik yedekleme dizinlerine veya log dosyalarına erişimi engelleyebilir. Böyle bir durumda, sistem çökmesi sonrasında gerekli veriye ulaşılamaması geri dönüş süresini ciddi şekilde uzatır. Daha da önemlisi, fidye yazılımları genellikle yanlış yapılandırılmış izinlerden faydalanarak yedek dosyaları şifreler veya siler. Bu nedenle, CHMOD izinlerinin doğru ayarlanması yalnızca erişilebilirliği garanti altına almakla kalmaz, aynı zamanda yedeklerin fidye yazılımı saldırılarına karşı korunmasında da hayati rol oynar.
Web sunucularında en güvenli CHMOD ayarları nelerdir?
Genellikle web kök dizinindeki dosyalar için 644, klasörler için 755 tercih edilir. Böylece dosya sahipleri üzerinde tam kontrol sağlarken, diğer kullanıcıların yalnızca okuma veya çalıştırma izni olur.
CHMOD ile Recursive (-R) parametresi nedir?
-R parametresi izinlerin tüm alt dizin ve dosyalara yayılmasını sağlar. Ancak yanlış kullanıldığında kritik dosyalara beklenmeyen erişim açılabilir. Bu yüzden özellikle /etc, /var gibi sistem dizinlerinde recursive kullanımından önce dikkatli analiz yapılmalıdır.

