Rehberler Uzun Okuma Chmod

Linux izinleri nasıl çalışır?

Dosya sistemi, sahiplik ve erişim kontrolü.

7 Mart 2026 18 dk okuma
Paylaş
X in

Giriş

Linux'ta her dosya ve dizin sahip (user), grup (group) ve diğerleri (others) için okuma (r), yazma (w), çalıştırma (x) izinleri taşır. Bu model 1970'lerden beri Unix güvenliğinin temelidir.

Dosya sistemi hiyerarşisi tek kök (/) altında organize edilir. ext4, XFS ve Btrfs yaygın dosya sistemleridir; her biri farklı journaling ve ölçekleme özellikleri sunar.

Bu rehberde izin notasyonu, sembolik/octal chmod, chown, ACL ve setuid/setgid/sticky bit konularını ele alıyoruz.

Dosya Sistemi Yapısı

FHS (Filesystem Hierarchy Standard) /bin, /etc, /var, /home gibi dizinlerin amacını tanımlar. /etc yapılandırma, /var değişken veri, /home kullanıcı dizinleridir.

inode dosya meta verisini tutar; dosya adı değil inode numarası dosya sisteminin temel birimidir. df -i ile inode tükenmesi kontrol edilir.

  • ext4: genel amaçlı, journaling
  • XFS: büyük dosyalar
  • Btrfs: snapshot, subvolume
  • tmpfs: RAM tabanlı geçici
ls -li /etc/passwd
df -hT
df -i

Temel İzin Modeli

ls -l çıktısında -rw-r--r-- 1 user group 4096 date file formatı görülür. İlk karakter dosya tipi (-, d, l), sonraki 9 karakter izinlerdir.

Dizinlerde x izni içeriğe girme (traverse) anlamına gelir; dosyalarda çalıştırma. r olmadan x tek başına dizin listeleme vermez.

ls -l /var/log
chmod u+x script.sh
chmod 644 file.txt
chmod 755 directory/

chmod ve chown

Sembolik chmod u+x, g-w, o=r ve octal 755, 644 notasyonları eşdeğerdir. chown user:group file sahipliği değiştirir; -R recursive uygular.

chgrp yalnızca grup değiştirir. Üretimde yanlış chown web sunucusu erişimini kırar; dikkatli kullanın.

chmod 750 /var/www/app
chown -R www-data:www-data /var/www/app/static
chown deploy:www-data /var/www/app

Özel İzinler

setuid (4): çalıştırıldığında dosya sahibinin kimliğiyle çalışır (ör. passwd). setgid (2): grup kimliğiyle. sticky bit (1): dizinde yalnızca sahip silebilir (/tmp).

Octal 4755 setuid + 755 demektir. Güvenlik riski taşıyan setuid binary'leri düzenli denetleyin: find / -perm -4000.

chmod u+s /usr/bin/passwd
chmod 1777 /tmp
find / -perm -4000 -type f 2>/dev/null

ACL (Access Control Lists)

Geleneksel izinler tek sahip ve tek grup ile sınırlıdır. ACL ek kullanıcı/grup izinleri tanımlar: setfacl -m u:alice:rwx file.

getfacl file ACL'leri listeler. default ACL dizinlerde yeni dosyalara miras kalır. ls -l'de + işareti ACL varlığını gösterir.

Web dizinlerinde minimum izin prensibi uygulayın: dosyalar 644, dizinler 755, hassas config 600.

Pratik Senaryolar

Web sunucusu: static 755/644, uygulama kodu deploy kullanıcısı, socket www-data grubu. SSH key 600, authorized_keys 600.

Paylaşımlı proje dizini: setgid + ortak grup ile yeni dosyalar gruba ait olur. ACL ile bireysel erişim eklenir.

chmod 660 /run/uwsgi/app.sock
chgrp www-data /run/uwsgi/app.sock
setfacl -m g:developers:rwx /srv/project

Sonuç

Linux izin modeli basit görünür ama üretimde karmaşık senaryolar ortaya çıkar. Octal notasyonu öğrenin, ACL ile esneklik ekleyin, setuid binary'leri denetleyin.

Otomasyon (Ansible, cloud-init) ile izinleri kod olarak yönetin; manuel chmod hatalarını önleyin.