Dosya İzinleri ve Sahiplik: chmod ve chown
Linux'ta "kim, neyi yapabilir" sorusunun cevabı olan izin sistemi.
Linux, çok kullanıcılı bir sistem olarak tasarlandığı için (aynı bilgisayarda birden fazla kullanıcının güvenli şekilde çalışabilmesi için), her dosya ve klasörün "kimin ne yapabileceğini" belirleyen bir izin sistemi vardır. Bu makalede bu sistemi basitçe ele alıyoruz.
Üç Temel İzin Türü
Linux'ta bir dosya için üç temel izin türü vardır:
- r (read - okuma): Dosyanın içeriğini görüntüleyebilme.
- w (write - yazma): Dosyanın içeriğini değiştirebilme.
- x (execute - çalıştırma): Dosyayı bir program olarak çalıştırabilme (veya bir klasör için: o klasörün içine girebilme).
Üç Kullanıcı Grubu
Bu izinler, üç farklı kullanıcı grubu için AYRI AYRI tanımlanır:
- Sahip (owner/user): Dosyayı oluşturan veya dosyanın şu anki sahibi olan kullanıcı.
- Grup (group): Belirli bir kullanıcı grubuna ait olanlar.
- Diğerleri (others): Sistemdeki geri kalan herkes.
İzinleri Görüntüleme: ls -l
ls -l dosya.txt
-rw-r--r-- 1 ahmet kullanicilar 1024 Oca 15 10:30 dosya.txt
Baştaki -rw-r--r-- kısmı izinleri gösterir. Bunu üçlü gruplar hâlinde okuyabiliriz:
rw-→ Sahip (ahmet): okuma ve yazma yapabilir, çalıştıramaz.r--→ Grup: sadece okuyabilir.r--→ Diğerleri: sadece okuyabilir.
En baştaki tek karakter (-) dosyanın türünü belirtir — - normal dosya, d ise klasör (directory) anlamına gelir.
İzinleri Değiştirme: chmod
chmod (change mode) komutuyla izinleri değiştirebilirsin. En yaygın kullanım, izinleri sayısal (octal) bir kodla belirtmektir:
| Sayı | Anlamı |
|---|---|
| 4 | okuma (r) |
| 2 | yazma (w) |
| 1 | çalıştırma (x) |
Bu sayılar toplanarak kombinasyonlar oluşturulur (örneğin okuma+yazma = 4+2 = 6). Yaygın bir örnek:
chmod 755 script.sh
Bu, sırasıyla sahip-grup-diğerleri için izinleri belirler: 7 (sahip: 4+2+1 = okuma+yazma+çalıştırma), 5 (grup: 4+1 = okuma+çalıştırma), 5 (diğerleri: 4+1 = okuma+çalıştırma). Yani sahip her şeyi yapabilir, geri kalanlar sadece okuyup çalıştırabilir ama değiştiremez.
Sahipliği Değiştirme: chown
chown (change owner) komutuyla bir dosyanın sahibini değiştirebilirsin (genelde bu işlem için yönetici/root yetkisi gerekir):
sudo chown ayse dosya.txt # dosyanın sahibini "ayse" yap
sudo chown ayse:muhasebe dosya.txt # hem sahibini hem grubunu değiştir
Neden Bu Sistem Güvenlik Açısından Önemli?
Dosya izinleri, Linux'un temel güvenlik katmanlarından biridir. Örneğin:
- Şifre bilgilerinin tutulduğu bazı sistem dosyaları, sadece "root" (yönetici) tarafından okunabilecek şekilde ayarlanır — normal bir kullanıcı bu dosyayı görüntüleyemez bile.
- Yanlış yapılandırılmış izinler (örneğin bir dosyanın yanlışlıkla "herkes yazabilir" şeklinde ayarlanması) ciddi bir güvenlik açığına dönüşebilir — bu tür bir hata, kötü niyetli bir kullanıcının önemli bir sistem dosyasını değiştirmesine bile izin verebilir.
Bu yüzden, Web Güvenliği kütüphanemizdeki "Güvenlik Yanlış Yapılandırması" makalesinde bahsettiğimiz gibi, dosya izinlerinin doğru ayarlanması, temel ama kritik bir güvenlik pratiğidir.
Bu makale, Linux dosya izinlerine giriş niteliğinde, başlangıç seviyeli bir özetidir; SiberCrew ekibi tarafından hazırlanmış özgün içeriktir.