Linux Dosya İzinleri: chmod Rehberi
Linux'ta dosya izinleri, sistemin en temel güvenlik mekanizmalarından biridir. Her dosya ve dizin için üç grup kullanıcı (sahip, grup, diğerleri) ve üç tür izin (okuma, yazma, çalıştırma) tanımlanır.
İzin Yapısı
$ ls -la /etc/passwd
-rw-r--r-- 1 root root 2847 May 20 12:00 /etc/passwd
- rw- r-- r--
│ │ │ │
│ │ │ └── Diğerleri (others): sadece okuma
│ │ └────── Grup (group): sadece okuma
│ └────────── Sahip (owner): okuma + yazma
└──────────── Dosya tipi: - = dosya, d = dizin, l = link
İzin Tipleri
| Sembol | Sayı | Dosyada | Dizinde |
|---|---|---|---|
r |
4 | Okuma | Listeleyebilme |
w |
2 | Yazma | Dosya oluşturma/silme |
x |
1 | Çalıştırma | Dizine girme (cd) |
- |
0 | İzin yok | İzin yok |
Octal (Sayısal) Notasyon
Her grup için izinler toplanır:
rwx= 4+2+1 = 7rw-= 4+2+0 = 6r-x= 4+0+1 = 5r--= 4+0+0 = 4---= 0+0+0 = 0
Yaygın İzin Kombinasyonları
chmod 755 dosya.sh # rwxr-xr-x — çalıştırılabilir, herkes okuyabilir
chmod 644 dosya.txt # rw-r--r-- — dosya varsayılanı
chmod 700 gizli.sh # rwx------ — sadece sahip erişebilir
chmod 600 id_rsa # rw------- — SSH private key
chmod 777 ortak/ # rwxrwxrwx — tehlikeli! herkese tam yetki
chmod 000 yasak.txt # --------- — hiç kimse erişemez
Bu sayısal değerleri ezberlemek yerine chmod Hesaplayıcı ile okuma/yazma/çalıştırma kutucuklarını işaretleyerek doğru octal değeri anında üretebilirsiniz.
Sembolik Notasyon
chmod u+x dosya.sh # sahibe çalıştırma ekle
chmod g-w dosya.txt # gruptan yazma al
chmod o+r dosya.log # diğerlerine okuma ekle
chmod a+x script.sh # herkese çalıştırma ekle (all)
chmod u=rw,g=r,o=r file # tam atama
chmod +x script.sh # kısayol: herkese çalıştırma
Özel İzinler
SUID (Set User ID)
chmod 4755 program # s görünür: -rwsr-xr-x
# Çalıştırıldığında sahipinin yetkileriyle çalışır
# Örnek: /usr/bin/passwd (root yetkileriyle)
SGID (Set Group ID)
chmod 2755 dizin/ # -rwxr-sr-x
# Dizinde oluşturulan dosyalar dizinin grubunu miras alır
Sticky Bit
chmod 1777 /tmp # drwxrwxrwt
# Kullanıcılar sadece kendi dosyalarını silebilir
Yaygın Güvenlik Hataları
# ❌ YANLIŞ — production'da asla yapma
chmod 777 /var/www/html
chmod 777 config.php
# ✅ DOĞRU
chmod 755 /var/www/html # web dizini
chmod 644 /var/www/html/*.php # PHP dosyaları
chmod 600 /var/www/.env # hassas config
chown — Sahip Değiştirme
chown kullanici dosya.txt # sahip değiştir
chown kullanici:grup dosya.txt # sahip ve grup değiştir
chown -R www-data:www-data /var/www/html # recursive
Pratik Örnekler
Web Sunucu Güvenliği
# Nginx/Apache için doğru izinler
find /var/www/html -type d -exec chmod 755 {} \; # dizinler
find /var/www/html -type f -exec chmod 644 {} \; # dosyalar
chmod 600 /var/www/html/.env # hassas dosya
SSH Güvenliği
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 644 ~/.ssh/authorized_keys
Script İzinleri
chmod +x deploy.sh # çalıştırılabilir yap
chmod 750 admin.sh # sadece sahip ve grup çalıştırabilir
umask
umask yeni oluşturulan dosyaların varsayılan izinlerini belirler:
umask # mevcut değeri göster (genelde 022)
umask 027 # değiştir
# 022 → dosyalar: 644, dizinler: 755
# 027 → dosyalar: 640, dizinler: 750
chmod Hesaplama Aracı
Sayısal izinleri hesaplamak için MagmaNex'in chmod Hesaplayıcı aracını kullanabilirsiniz. Checkbox'ları işaretleyerek anında octal değeri ve ls çıktısını görürsünüz.
Özet
| Senaryo | İzin | Octal |
|---|---|---|
| Web dosyası | rw-r--r-- | 644 |
| Web dizini | rwxr-xr-x | 755 |
| Script | rwxr-xr-x | 755 |
| SSH key | rw------- | 600 |
| Config | rw-r----- | 640 |
| Gizli dosya | rwx------ | 700 |
Linux izin sistemi başlangıçta karmaşık görünse de pratikte birkaç kombinasyonu ezberlemek yeterlidir. Güvenlik için her zaman minimum yetki ilkesini uygulayın.

