Konuyu Okuyanlar: 1 Ziyaretçi

Linux Kullanıcı ve İzin Yönetimi: chmod, chown, umask ve ACL Rehberi

Linux Kullanıcı ve İzin Yönetimi: chmod, chown, umask ve ACL Rehberi
Selam TurkTeam,

Linux'ta güvenliğin temeli izinlerdir. "Bu dosyayı kim okuyabilir, kim çalıştırabilir, kim değiştirebilir?" sorusunun cevabı; bir sunucunun ne kadar sağlam ya da ne kadar savunmasız olduğunu doğrudan belirler. Bu rehberde Linux izin modelini sıfırdan ele alıyor; chmod, chown, umask, özel izin bitleri (SUID/SGID/sticky) ve klasik modelin yetmediği yerde devreye giren ACL'yi uygulamalı olarak anlatıyoruz.

Konuda Anlatılacaklar
  1. Linux izin modeli: kullanıcı/grup/diğer ve rwx
  2. chmod: sembolik ve sayısal (oktal) kullanım
  3. chown ve chgrp: sahiplik yönetimi
  4. umask: varsayılan izinlerin belirlenmesi
  5. Özel bitler: SUID, SGID, sticky bit
  6. ACL: getfacl / setfacl ile ince ayar
  7. Sonuç, kaynakça ve yasal uyarı

1. İzin Modeli: Üç Sınıf, Üç Yetki
Her dosya ve dizinin bir sahibi (user), bir grubu (group) ve bir de diğerleri (others) sınıfı vardır. Her sınıf için üç yetki tanımlanır: okuma ®, yazma (w) ve çalıştırma (x). İzinleri görmek için:
Kod:
ls -l dosya.txt
Çıktı şuna benzer:
Kod:
-rw-r--r-- 1 ahmet ekip 1024 Oct 17 14:00 dosya.txt
Baştaki 10 karakteri çözelim: ilk karakter tür (- dosya, d dizin, l sembolik bağ), sonraki üçlü sahip (rw-), ortadaki üçlü grup (r--), son üçlü diğerleri (r--) izinleridir. Yani sahibi okuyup yazabilir, grup ve diğerleri yalnızca okuyabilir.

Dizinlerde x yetkisinin anlamı özeldir: bir dizine "girip" içindeki yollara erişebilmek için x gerekir; r ise yalnızca listeleme yetkisidir.

2. chmod: İzin Değiştirme
chmod'u iki biçimde kullanırsınız: sembolik ve sayısal (oktal).

Sembolik kullanım (u=user, g=group, o=other, a=all; +ekle, -kaldır, =eşitle):
Kod:
chmod u+x script.sh # sahibe çalıştırma ekle chmod go-w dosya.txt # grup ve diğerlerinden yazmayı kaldır chmod a=r dosya.txt # herkese yalnızca okuma

Sayısal (oktal) kullanım: r=4, w=2, x=1 değerlerinin toplamı her sınıf için bir rakam verir:
Kod:
chmod 644 dosya.txt # rw-r--r-- chmod 755 script.sh # rwxr-xr-x chmod 600 gizli.key # rw------- (yalnızca sahibi)
Dizinleri özyinelemeli değiştirmek için -R kullanın, ancak dikkatli olun:
Kod:
chmod -R 750 /opt/uygulama
[Resim: attachment.php?aid=250]

3. chown ve chgrp: Sahiplik
Bir dosyanın sahibini ve/veya grubunu değiştirmek için chown kullanılır (genelde root yetkisi gerekir):
Kod:
sudo chown ahmet dosya.txt # sahibi değiştir sudo chown ahmet:ekip dosya.txt # sahip ve grup sudo chgrp ekip dosya.txt # yalnızca grup sudo chown -R ahmet:ekip /srv/proje # özyinelemeli
Sahiplik, izinlerle birlikte düşünülmelidir: 600 izinli bir anahtar dosyası, yanlış kullanıcıya ait olursa koruması anlamını yitirir.

4. umask: Varsayılan İzinler
Yeni oluşturulan dosya ve dizinler, umask değerine göre izin alır. umask, verilmeyecek bitleri maskeler. Tipik varsayılan 022'dir:
Kod:
umask # mevcut değeri göster umask 027 # yeni dosyalara daha sıkı varsayılan
Hesaplama mantığı: dosyalarda taban 666, dizinlerde 777'dir ve umask bundan çıkarılır. 022 umask ile yeni dosya 644, yeni dizin 755 olur. 027 ile dosya 640, dizin 750 olur; yani "diğerleri" hiçbir erişim almaz. Kalıcı yapmak için ~/.bashrc veya /etc/profile içine umask satırı eklenir.

5. Özel Bitler: SUID, SGID, Sticky
Klasik rwx'in üstünde üç özel bit vardır ve güvenlik açısından kritiktir.
  • SUID (4): Çalıştırılabilir dosya, sahibinin yetkisiyle çalışır. Örnek: passwd komutu root SUID'lidir, böylece sıradan kullanıcı parolasını değiştirebilir.
  • SGID (2): Dosyada grup yetkisiyle çalıştırma; dizinde ise içinde oluşturulan dosyaların dizin grubunu devralmasını sağlar (ortak çalışma dizinleri için idealdir).
  • Sticky bit (1): Dizinde, bir kullanıcının yalnızca kendi dosyasını silebilmesini sağlar. /tmp dizini buna klasik örnektir.
Ayarlama:
Kod:
chmod u+s program # SUID chmod g+s paylasim/ # SGID dizin chmod +t /ortak/alan # sticky bit
Sistemdeki SUID dosyaları denetim için önemlidir; yanlış yapılandırılmış bir SUID, yetki yükseltmeye yol açabilir:
Kod:
find / -perm -4000 -type f 2>/dev/null
Bu komut root SUID'li ikilileri listeler; beklenmedik bir giriş varsa incelenmelidir.
[Resim: attachment.php?aid=251]
[Resim: attachment.php?aid=252]

6. ACL: getfacl ve setfacl
Klasik model yalnızca tek sahip, tek grup ve diğerlerini tanımlar. "Bu dosyaya Ayşe de yazsın ama başka kimse değil" gibi ince ihtiyaçlarda ACL (Access Control List) devreye girer.
Mevcut ACL'yi görme:
Kod:
getfacl dosya.txt
Belirli bir kullanıcıya izin verme:
Kod:
setfacl -m u:ayse:rw dosya.txt
Bir gruba izin ve varsayılan (yeni dosyalara miras) ACL:
Kod:
setfacl -m g:ekip:rx klasor/ setfacl -d -m g:ekip:rx klasor/
ACL kaldırma:
Kod:
setfacl -x u:ayse dosya.txt # tek kayıt setfacl -b dosya.txt # tüm ACL
ls -l çıktısında izinlerin sonundaki "+" işareti, o dosyada ek ACL kayıtları olduğunu gösterir. ACL güçlüdür ancak karmaşıklığı artırır; yalnızca klasik modelin yetmediği yerde kullanın.

7. İleri Seviye ve İyi Uygulamalar
  • En az ayrıcalık: Her zaman gereken en dar izni verin; 777'den kaçının, bu neredeyse her zaman hatalı bir çözümdür.
  • Anahtar ve sır dosyaları: SSH özel anahtarları 600 olmalı, aksi halde istemci bağlanmayı reddeder.
  • Düzenli denetim: Dünyaya yazılabilir dosyaları bulun:
    Kod:
    find / -perm -0002 -type f 2>/dev/null
  • Değişmezlik: Kritik dosyaları kazara değişikliğe karşı chattr +i ile değişmez yapabilirsiniz (ext4):
    Kod:
    sudo chattr +i /etc/onemli.conf

Sonuç
Linux izin yönetimi, karmaşık görünse de birkaç sağlam kavrama dayanır: üç sınıf, üç yetki, özel bitler ve gerektiğinde ACL. chmod/chown/umask üçlüsünü ve SUID/SGID/sticky mantığını iyi oturtmak, hem sistemlerinizi sertleştirmenizi hem de bir denetimde zayıf noktaları hızla görmenizi sağlar. "En az ayrıcalık" ilkesini her kararın merkezine koyun.

Kaynakça
Yasal Uyarı
Alıntı:İzin ve sahiplik değişiklikleri yalnızca kendi sistemlerinizde veya yönetim yetkiniz olan sistemlerde yapılmalıdır. Başkasının sistemine izinsiz müdahale Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.

Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).


Ek DosyalarEkran Görüntüleri
           
Cevapla



Hızlı Menü: