Linux Sunucularda Dosya İzinleri, SUID/SGID, ACL ve Güvenlik Rehberi

Linux Sunucularda Dosya İzinleri, SUID/SGID, ACL ve Güvenlik Rehberi - Corelux
1 Nis 2026
Paylaş:

Linux Sunucularda Dosya İzinleri, SUID/SGID, ACL ve Güvenlik Rehberi

Son Güncelleme: Mart 2026

Dosya izinleri ve erişim kontrolleri, bir sunucunun güvenliğinin temel taşlarından biridir. Bu makalede SUID/SGID, sticky bit, ACL (Access Control List) ve pratik güvenlik uygulamalarını örneklerle, komutlarla ve çözüm adımlarıyla ele alacağız.

İçindekiler

Temel Kavramlar

Linux dosya izinleri üç ana öğeden oluşur: okuma (r), yazma (w) ve çalıştırma (x). Bu izinler kullanıcı (owner), grup (group) ve diğerleri (others) için ayrı ayrı tanımlanır. İzinler hem rwx biçiminde sembolik olarak hem de sayısal (ör. 755) olarak ifade edilebilir.

Önemli terimler:

  • UID/GID: Kullanıcı (User) ve grup (Group) kimlik numaraları.
  • SUID: Dosya çalıştırıldığında programın sahibi (owner) haklarıyla çalışmasını sağlar.
  • SGID: Benzer şekilde grup haklarıyla çalıştırır veya dizin üzerinde grup mirasını belirler.
  • Sticky bit: Paylaşılan dizinlerde sadece dosya sahibi veya root tarafından silinebilmesini sağlar (ör. /tmp).

SUID, SGID ve Sticky Bit Nedir?

Bu bölümde her birinin ne yaptığı, hangi durumlarda risk oluşturduğu ve nasıl okunup ayarlandığını örneklerle göstereceğiz.

SUID (Set User ID)

SUID, bayraklı bir dosya çalıştırıldığında o dosyanın sahibi (owner) kimliğini geçici olarak alır. Örneğin /usr/bin/passwd programı kullanıcı şifrelerini değiştirmek için root haklarına ihtiyaç duyar; bu yüzden SUID ile işaretlenmiştir.

# SUID örneği: sahibini root yapan dosya
-rwsr-xr-x 1 root root 43000 Apr  1 12:00 /usr/bin/passwd

SGID (Set Group ID)

SGID dosyalarda çalıştırıldığında işlemi dosyanın grubunun kimliğinde başlatır; dizinlerde ise yeni oluşturulan dosyaların grup mirasını belirler.

# SGID örneği: dizin üzerindeki SGID, yeni dosyaların grubunu miras almasını sağlar
drwxr-sr-x 2 root www-data 4096 Mar  1 08:00 /var/www/shared

Sticky Bit

Sticky bit, paylaşılan dizinlerde (örneğin /tmp) kullanıcıların birbirinin dosyalarını silmesini engeller. Sticky bit aktif dizinlerde dosya yalnızca sahibi veya root tarafından silinebilir.

# Sticky bit örneği
drwxrwxrwt 10 root root 4096 Mar  1 08:00 /tmp

ACL (Access Control List) Nedir ve Ne Zaman Kullanılır?

ACL (Erişim Kontrol Listesi), temel rwx izinlerinin yetersiz kaldığı durumlarda dosya ve dizinlere daha ince taneli (granular) izinler tanımlamaya yarar. Özellikle çok kullanıcılı veya çok servisli ortamlarda fayda sağlar.

Örnek komutlar:

# ACL kontrolü
getfacl /var/www/proje

# ACL ekleme: user alice için okuma-yazma izinleri
setfacl -m u:alice:rwX /var/www/proje

# ACL çıkarma
setfacl -x u:alice /var/www/proje

Güvenlik Riskleri ve İnceleme (Bulgu Bulma Komutları)

Yanlış yapılandırılmış izinler, özellikle SUID/SGID içeren dosyalar kötü niyetli kullanıcılar tarafından sömürülebilir. Bu bölümde hızlı tarama ve bulgu komutları veriyoruz.

Sunucuda SUID/SGID dosyalarını bulma

# SUID dosyaları
find / -perm -4000 -type f -exec ls -l {} \; 2>/dev/null

# SGID dosyaları
find / -perm -2000 -type f -exec ls -l {} \; 2>/dev/null

# Sticky bit set edilmiş dizinleri bulma
find / -perm -1000 -type d -exec ls -ld {} \; 2>/dev/null

Bulunan sonuçları değerlendirirken şunlara dikkat edin:

  • Beklenen SUID/SGID: /usr/bin/passwd, /usr/bin/sudo gibi sistem programları normaldir.
  • Şüpheli dosyalar: /tmp, /var/www gibi dizinlerde kullanıcı tarafından yüklenmiş, SUID/SGID içeren ikili (binary) dosyalar risklidir.

İzinleri toplu analiz etme

# world-writeable (diğerleri için yazılabilir) dosya/dizinleri bulma
find / -xdev -type d -perm -0002 -ls 2>/dev/null

# web kökünde (ör. /var/www) tehlikeli izinleri bulma
find /var/www -type f \( -perm -o+w -o -perm -g+w \) -ls

İzin Düzeltme, Sert Kurallar ve Otomasyon

İzinleri düzeltilmesi ve standartlaştırılması için uygulanabilir kurallar ve örnek komutlar:

  • Web kökünü sabitle: Web içerikleri için tipik izinler 755 (dizin) ve 644 (dosya) olmalıdır.
  • SUID/SGID onaylama: Sadece gerekli sistem programlarında izin bırakılmalıdır.
  • ACL kullanımı: Grup bazlı ayrıcalık gerekiyorsa ACL tercih edin, ama yönetimi ve dökümantasyonu unutmayın.
# Web kökü için örnek düzeltme
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;

# SUID/SGID kaldırma (şüpheli dosya)
chmod u-s /path/to/suspicious
chmod g-s /path/to/suspicious

# World-writeable dosya/dizinleri düzeltme
find / -xdev -type d -perm -0002 -exec chmod o-w {} \; 2>/dev/null

Otomasyon ve izleme

İzin değişikliklerini izlemek için basit bir cron tabanlı veya izleme aracı kullanabilirsiniz. Örnek basit izleme komutu:

# sudo crontab -e içine eklenebilecek günlük SUID listesi kaydı
0 3 * * * find / -perm -4000 -type f -exec ls -l {} \; > /var/log/suid-list-$(date +\%F).log 2>/dev/null

Daha gelişmiş izleme için SIEM/Log yönetimi çözümleri (ör. ELK, Graylog) veya dosya bütünlüğü denetleyicileri (AIDE, Tripwire) kullanılmalıdır.

Pratik Uygulama Senaryoları

Gerçek dünya senaryoları ile hangi izinlerin nasıl uygulanacağını görelim.

1) Paylaşılan Web Hosting (çok kullanıcılı)

  • Sorun: Aynı sunucuda birden fazla kullanıcı/vhost var; kullanıcıların birbirinin dosyalarını değiştirmemesi gerekiyor.
  • Çözüm: Kullanıcı başına ayrı Linux kullanıcı hesabı, umask ve grup izolasyonu. Gerekirse ACL ile izinleri ince granularde ayarlayın.
# Kullanıcılar arası izolasyon için örnek: home dizinlerinde chmod
chmod 750 /home/alice
setfacl -m u:bob:0 /home/alice  # izin verme (gerekiyorsa)

2) CI/CD ve Ortak Paylaşılan Dizinin Yönetimi

  • Sorun: CI süreçleri otomatik olarak dosya oluşturarak grup sahipliğini bozuyor.
  • Çözüm: Dizine SGID uygulayın, böylece yeni dosyalar belirtilen grubu miras alır; ayrıca doğru umask belirleyin.
# SGID uygulama
chown -R deploy:ci-group /srv/builds
chmod g+s /srv/builds
# umask örneği: 002 ile grup yazılabilir bırakılır
echo 'umask 002' >> /etc/profile.d/ci.sh

3) WordPress veya CMS Güvenliği

  • Sorun: web uygulaması klasöründe dosya izinleri gevşek olduğunda saldırganlar dosya yükleyip SUID/SGID ekleyebilir.
  • Çözüm: PHP çalıştırma modeline göre uygun izinleri ayarlayın (ör. PHP-FPM ile pool user olarak çalıştırma), wp-config.php için 600 gibi sıkı izinler verin.
# WordPress için önerilen örnek izinler
chmod 640 /var/www/site/wp-config.php
chown www-data:www-data /var/www/site -R
find /var/www/site -type d -exec chmod 755 {} \;
find /var/www/site -type f -exec chmod 644 {} \;
Bayrak Anlamı Tipik Kullanım Risk
SUID Program çalıştırıldığında sahibi haklarını devralır /usr/bin/passwd Kötü amaçlı binary ile root ayrıcalığı sağlanabilir
SGID Program/group haklarıyla çalışır; dizinlerde grup mirası sağlar Paylaşılan proje dizinleri Grup izinleri üzerinden yetki sızıntısı
Sticky Paylaşılan dizinde sadece dosya sahibi/root silebilir /tmp Yanlış yapılandırılmışsa beklenmeyen dosya silinmeleri

Sıkça Sorulan Sorular

SUID nedir, her SUID dosyasını silmeli miyim?

SUID (Set User ID), çalıştırıldığında dosyanın sahibinin kimliğiyle işlem yapmanıza izin verir. Her SUID dosyası silinmemelidir; sistem programları için gereklidir. Ancak kullanıcı tarafından yüklenen veya beklenmeyen SUID dosyaları incelenip kaldırılmalıdır.

SGID dizin hangi durumda kullanılmalı?

Bir proje üzerinde birden fazla kullanıcının aynı grup altında dosya oluşturmasını istediğinizde SGID faydalıdır. Bu sayede yeni dosyalar dizinin grup sahibini miras alır ve grup erişimi korunur.

ACL yerine klasik izinler yeterli mi?

Basit senaryolarda klasik rwx izinleri yeterlidir. Birden fazla kullanıcı/grup için ince yetkilendirme gerekiyorsa ACL kullanın. Ancak ACL yönetimini dökümante edin ve düzenli olarak kontrol edin.

World-writable (diğerlerine yazma) izinli dosyalar tehlikeli midir?

Evet. Sunucuda diğerlerine yazma (o+w) izni verilen dizin veya dosyalar kötü niyetli dosya eklenmesine açıktır. Bu tür izinler yalnızca gerektiğinde ve kontrollü alanlarda kullanılmalıdır.

İzin değişikliklerini geri almak için en iyi yöntem nedir?

Değişiklikleri geri almak için konfigürasyon yönetimi (Ansible, Puppet) veya yedekler kullanın. Basit ortamlarda komut dizileri ile standart izinleri yeniden uygulamak mümkündür; üretim ortamında otomasyon tercih edilmelidir.

Sonuç

Doğru dosya izinleri ve erişim kontrolü, sunucu güvenliğinin vazgeçilmez parçalarıdır. SUID/SGID ve sticky bit gibi bayrakların nerede ve neden kullanıldığını bilmek, ACL ile gerektiğinde hassas izinler tanımlamak ve düzenli tarama/izleme pratikleri uygulamak kritik önem taşır.

Corelux olarak güvenli ve yönetilebilir hosting çözümleri sunuyoruz. İzin yönetimi ve güvenlik konularında profesyonel destek almak isterseniz Hosting, Sanal Sunucu veya performans gereksinimleriniz için Kiralık Sunucu sayfalarımızı inceleyebilirsiniz.

Uygulamalarınıza özel tavsiye ve sunucu konfigürasyonu için Corelux destek ekibiyle iletişime geçin; yanlış izin konfigürasyonlarıyla oluşabilecek güvenlik açıklarını proaktif şekilde kapatalım.

Yazar

Boran BAR

Chat on WhatsApp