Pardus'ta Hard Linkler ve Sembolik (Soft) Linkler
GNU/Linux sistemlerinde dosya yönetimi oldukça esnek ve güçlüdür. Bu esnekliğin önemli bileşenlerinden biri de link (bağlantı) yapılarıdır. Pardus işletim sisteminde dosyalara farklı isimlerle erişmek, dosya organizasyonunu kolaylaştırmak ve yönetimi esnek hale getirmek için Hard Link (Sabit Bağlantı) ve Sembolik Link (Symbolic Link / Soft Link) kullanılır.
1. Link Nedir?
Linux'ta bir dosyanın ismi ile gerçek verisi birbirinden ayrıdır.
Dosya sistemi içerisinde:
Dosyanın gerçek verisi disk üzerinde saklanır.
Dosyaya ait bilgiler (izinler, boyut, tarih vb.) inode adı verilen yapılarda tutulur.
Dosya isimleri ise inode numarasına işaret eder.
Örneğin:
rapor.txt
Bu isim aslında aşağıdaki inode'u göstermektedir:
rapor.txt ---> inode 12345 ---> gerçek veri
Linux'taki linkler, aynı inode'a veya başka bir dosyaya işaret eden ek bağlantılardır.
2. Linux Dosya Sistemi ve Inode Kavramı
Link mantığını anlayabilmek için inode kavramının bilinmesi gerekir.
Bir inode içerisinde:
Dosya boyutu
Dosya sahibi
İzinler
Oluşturulma zamanı
Değiştirilme zamanı
Disk bloklarının adresleri
saklanır.
Ancak:
Dosya adı inode içerisinde tutulmaz.
Bir dosyanın inode numarasını görmek için:
ls -li
Örnek:
$ ls -li458796 rapor.txt
Buradaki:
458796
değeri inode numarasıdır.
3. Hard Link (Sabit Bağlantı) Nedir?
Hard Link, mevcut bir dosyanın inode'una yeni bir isim verilmesidir.
Yani:
Dosya Adı 1 --------\> inode ----> veriDosya Adı 2 --------/
Her iki isim de aynı dosyayı temsil eder.
Hard Link Oluşturma
Öncelikle bir dosya oluşturalım:
echo "Merhaba Pardus" > dosya1.txt
İçeriğini kontrol edelim:
cat dosya1.txt
Çıktı:
Merhaba Pardus
Şimdi hard link oluşturalım:
ln dosya1.txt dosya2.txt
Dosyaları listeleyelim:
ls -li
Örnek çıktı:
458796 -rw-r--r-- 2 kullanıcı kullanıcı 17 Haz 28 10:00 dosya1.txt458796 -rw-r--r-- 2 kullanıcı kullanıcı 17 Haz 28 10:00 dosya2.txt
Dikkat edilirse:
inode numarası aynıdır.
Link sayısı 2 olmuştur.
4. Hard Link'in Çalışma Mantığı
Dosyalardan herhangi birini düzenleyelim:
echo "Yeni satır" >> dosya2.txt
Şimdi:
cat dosya1.txt
çıktısı:
Merhaba PardusYeni satır
Çünkü her iki isim de aynı inode'u göstermektedir.
5. Hard Link Silinirse Ne Olur?
rm dosya1.txt
Şimdi:
cat dosya2.txt
dosya hala çalışır.
Sebep:
Dosyanın gerçek verisi silinmemiştir.
Sadece isimlerden biri kaldırılmıştır.
Veri ancak:
Son hard link de silinince
diskten kaldırılır.
Link Sayısını Görme
ls -l
Örnek:
-rw-r--r-- 2 kullanıcı kullanıcı 17 Haz 28 dosya1.txt
Buradaki:
2
link sayısını ifade eder.
6. Hard Link Kısıtlamaları
Aynı Dosya Sistemi İçinde Çalışır
Hard link farklı disk bölümleri arasında oluşturulamaz.
Örneğin:
ln /home/kullanici/dosya.txt /mnt/usb/dosya.txt
Hata:
Invalid cross-device link
Dizinler İçin Kullanılamaz
Normal kullanıcılar dizinlere hard link oluşturamaz.
ln /home/kullanici/belgeler yeni_belgeler
Hata:
hard link not allowed for directory
7. Symbolic Link (Sembolik Link) Nedir?
Sembolik link, başka bir dosyanın yolunu gösteren özel bir dosyadır.
Windows'taki "Kısayol" kavramına benzer.
Mantık:
sembolik_link|V/hedef/dosya.txt
8. Sembolik Link Oluşturma
Komut:
ln -s hedef_dosya link_ismi
Örnek:
ln -s dosya1.txt baglanti.txt
Listeleyelim:
ls -l
Çıktı:
lrwxrwxrwx 1 kullanıcı kullanıcı 11 Haz 28 10:00 baglanti.txt -> dosya1.txt
Burada:
l
harfi sembolik link olduğunu gösterir.
9. Sembolik Link Nasıl Çalışır?
cat baglanti.txt
çıktısı:
Merhaba Pardus
Çünkü:
baglanti.txt ---> dosya1.txt
10. Hedef Dosya Silinirse
rm dosya1.txt
Sonrasında:
cat baglanti.txt
çıktısı:
No such file or directory
Çünkü sembolik link sadece yolu göstermektedir.
Bu duruma:
Broken Symbolic Link(Kırık Sembolik Bağlantı)
adı verilir.
11. Kırık Linkleri Bulma
Sistemdeki bozuk linkleri aramak için:
find /home -xtype l
veya:
find . -xtype l
12. Hard Link ve Symbolic Link Karşılaştırması
| Özellik | Hard Link | Symbolic Link |
|---|---|---|
| Inode paylaşımı | Evet | Hayır |
| Farklı dosya sistemi | Hayır | Evet |
| Dizinlere uygulanabilir | Hayır | Evet |
| Hedef silinirse | Çalışmaya devam eder | Bozulur |
| Boyut | Gerçek dosya boyutu | Yol uzunluğu kadar |
| Windows kısayoluna benzer | Hayır | Evet |
13. Inode Karşılaştırma Uygulaması
Dosya oluşturalım:
touch test.txtln test.txt hard.txtln -s test.txt soft.txt
Kontrol:
ls -li
Örnek:
562147 test.txt562147 hard.txt562148 soft.txt
Görüldüğü gibi:
test.txtvehard.txtaynı inode'u kullanır.soft.txtfarklı inode'a sahiptir.
14. Gerçek Hayat Kullanım Senaryoları
Yazılım Sürümleri
/usr/bin/python -> /usr/bin/python3.13
Web Sunucuları
/var/www/html
ile farklı depolama alanları arasında bağlantı kurulabilir.
Konfigürasyon Dosyaları
Bir yapılandırma dosyasının farklı konumlarda görünmesi:
ln /etc/uygulama.conf ~/uygulama.conf
Log Yönetimi
ln -s /var/log/nginx/access.log access.log
15. Kullanışlı Komutlar
Dosyanın inode numarasını öğrenme:
ls -i dosya.txt
Ayrıntılı bilgi:
stat dosya.txt
Sembolik link hedefini öğrenme:
readlink baglanti.txt
Gerçek yolu gösterme:
realpath baglanti.txt
Kırık linkleri bulma:
find / -xtype l 2>/dev/null
16. Güvenlik Açısından Dikkat Edilmesi Gerekenler
Sembolik linkler yanlış yapılandırıldığında güvenlik riskleri oluşturabilir.
Özellikle:
/tmpdizininde çalışan betiklerRoot yetkili otomasyonlar
Yedekleme sistemleri
Sembolik link saldırılarına açık olabilir.
Örnek:
Symlink AttackTOCTOU (Time Of Check Time Of Use)
Bu nedenle sistem yöneticileri:
Dosya izinlerini dikkatli yapılandırmalıdır.
Geçici dizinlerde güvenli dosya oluşturma yöntemleri kullanmalıdır.
mktempgibi araçları tercih etmelidir.
Sonuç
Pardus ve diğer Linux dağıtımlarında hard link ve sembolik linkler, dosya yönetimini kolaylaştıran güçlü mekanizmalardır.
Hard Link, aynı inode'a farklı isimler verir.
Sembolik Link, başka bir dosyanın yolunu gösterir.
Sistem yönetimi, otomasyon ve yazılım geliştirme süreçlerinde yaygın olarak kullanılır.
Özellikle Linux sistem yöneticileri için bu kavramların iyi anlaşılması, dosya sistemi yönetiminde büyük avantaj sağlar.
Siber Güvenlik Açısından Hard Linkler ve Sembolik Linkler
Pardus ve diğer GNU/Linux sistemlerinde Hard Link ve Sembolik Link (Symbolic Link / Soft Link) yapıları yalnızca dosya yönetimi için değil, aynı zamanda siber güvenlik açısından da oldukça önemlidir. Bir sızma testi, olay müdahalesi veya sistem güvenliği denetimi sırasında link yapılarını doğru analiz etmek kritik öneme sahiptir.
1. Siber Güvenlikte Neden Önemlidir?
Saldırganlar ve sistem yöneticileri link mekanizmalarını farklı amaçlarla kullanabilir.
Saldırganlar İçin
Yetki yükseltme (Privilege Escalation)
Dosya gizleme
Log manipülasyonu
Güvenlik kontrollerini atlatma
Symlink saldırıları gerçekleştirme
Savunmacılar İçin
Olay analizi
Adli bilişim (Forensics)
Dosya bütünlüğü kontrolü
Yetkisiz değişikliklerin tespiti
Sistem sertleştirme (Hardening)
2. Symlink (Sembolik Link) Saldırıları
En yaygın Linux saldırılarından biri Symlink Attack olarak bilinir.
Senaryo:
Bir uygulama root yetkisiyle çalışıyor ve /tmp dizinine dosya yazıyor.
Örnek:
echo "Yedek oluşturuluyor" > /tmp/backup.log
Saldırgan:
ln -s /etc/shadow /tmp/backup.log
oluşturursa;
Root yetkili uygulama:
echo "test" > /tmp/backup.log
çalıştırdığında:
/tmp/backup.log
yerine:
/etc/shadow
dosyası değiştirilebilir.
Sonuç:
Sistem kullanıcıları zarar görebilir.
Kimlik doğrulama bozulabilir.
Yetki yükseltme gerçekleşebilir.
3. TOCTOU Saldırıları
Bu saldırı türü:
Time Of Check To Time Of Use
olarak adlandırılır.
Mantık:
Program dosyanın güvenli olduğunu kontrol eder.
Kontrol ile kullanım arasında saldırgan dosyayı symlink ile değiştirir.
Örnek:
if (access("/tmp/dosya", W_OK) == 0){fd = open("/tmp/dosya", O_WRONLY);}
Kontrol sonrasında:
rm /tmp/dosyaln -s /etc/passwd /tmp/dosya
oluşturulabilir.
Bu tür yarış durumu saldırıları (Race Condition) kritik güvenlik açıklarına neden olabilir.
4. Geçici Dizinler ve Riskler
Özellikle:
/tmp/var/tmp/dev/shm
dizinleri yüksek risk taşır.
Sebepleri:
Her kullanıcı yazabilir.
Çok sayıda uygulama kullanır.
Root süreçleri bu dizinlere erişebilir.
Güvenli yöntem:
mktemp
kullanılmasıdır.
Örnek:
TMPFILE=$(mktemp)
Bu yöntem rastgele isim üretir ve symlink saldırılarını büyük ölçüde engeller.
5. Hard Link Saldırıları
Hard linkler de bazı senaryolarda risk oluşturabilir.
Örnek:
Saldırgan kritik bir dosyaya hard link oluşturabilir.
ln /etc/passwd passwd_copy
Dosya silinse bile:
rm /etc/passwd
hard link var olduğu sürece veri disk üzerinde kalabilir.
Modern Linux çekirdekleri bunu kısıtlamaktadır.
Kontrol:
cat /proc/sys/fs/protected_hardlinks
Çıktı:
1
ise koruma etkindir.
6. Symlink Koruması
Modern Pardus sistemlerinde çekirdek korumaları bulunmaktadır.
Kontrol:
cat /proc/sys/fs/protected_symlinks
Aktif değilse:
sudo sysctl -w fs.protected_symlinks=1
Kalıcı hale getirmek için:
echo "fs.protected_symlinks = 1" | sudo tee -a /etc/sysctl.conf
7. Güvenlik Testlerinde Link Analizi
Bir sistem denetiminde aşağıdaki kontroller yapılmalıdır.
Kırık Linkler
find / -xtype l 2>/dev/null
Kötü amaçlı veya yanlış yapılandırılmış bağlantılar tespit edilebilir.
Dünya Yazılabilir Dizinlerdeki Linkler
find /tmp -type l -ls
find /var/tmp -type l -ls
Şüpheli Hard Linkler
find / -type f -links +1 2>/dev/null
Beklenmeyen çoklu bağlantılar incelenmelidir.
8. Olay Müdahalesi ve Adli Bilişim Açısından
Bir saldırı sonrasında saldırganlar:
Zararlı dosyaları gizlemek
Kalıcılık sağlamak (Persistence)
İzlerini saklamak
amacıyla symlink kullanabilir.
Örneğin:
/home/user/.config/update -> /tmp/backdoor.sh
veya:
/etc/cron.daily/update -> /tmp/malware.sh
Bu nedenle olay müdahalesinde:
find / -type l -exec ls -l {} \; 2>/dev/null
komutu sıkça kullanılır.
9. Pentest Sürecinde İncelenmesi Gereken Yerler
Özellikle aşağıdaki dizinler kontrol edilmelidir:
/tmp/var/tmp/dev/shm/etc/cron*/usr/local/bin/opt/home/*
10. Güvenlik Tavsiyeleri
✅ mktemp kullanın.
✅ Root betiklerinde symlink takibi yapmayın.
✅ Dünya yazılabilir dizinleri düzenli denetleyin.
✅ Çekirdek korumalarını etkinleştirin.
✅ SUID uygulamalarını inceleyin.
✅ Dosya bütünlük izleme araçları kullanın.
Örnek araçlar:
AIDE
Tripwire
Lynis
auditd
Sonuç
Siber güvenlik perspektifinden bakıldığında:
Sembolik linkler, yanlış kullanıldığında ciddi yetki yükseltme açıklarına yol açabilir.
Hard linkler, veri gizleme ve kalıcılık amacıyla kullanılabilir.
Sistem yöneticileri, özellikle
/tmpgibi ortak kullanılan dizinlerde symlink saldırılarına karşı dikkatli olmalıdır.Düzenli güvenlik denetimleri ve çekirdek korumaları, bu tür saldırıların büyük bölümünü engeller.
Bir Linux/Pardus sisteminde link mekanizmasını anlamak, hem saldırı yüzeyini azaltmak hem de olay müdahalesini kolaylaştırmak açısından önemli bir yetkinliktir.
Pardus ve diğer Linux sistemlerinin yönetiminde dosya mimarisini kavramak, laboratuvar bilgisayarları için yapılandırma hazırlarken veya yeni eğitim materyalleri kurgularken kritik bir temel oluşturur. Bu mimarinin en esnek araçlarından olan sert bağlar (hard links) ve sembolik bağlar (symbolic links), çalışma mantıkları açısından birbirinden oldukça farklıdır.
Dosya Sisteminin Kalbi: Inode Nedir?
Bağların nasıl çalıştığını tam olarak kavramak için öncelikle inode (index node) mimarisini anlamak gerekir. Linux'ta sistem bir dosyayı kaydettiğinde, onu iki ayrı parça olarak ele alır:
İsim (Directory Entry): Kullanıcının gördüğü ve etkileşime girdiği dosya adı (örneğin
sinav_notlari.pdf).Inode: Dosyanın diskteki fiziksel konumunu (blok adreslerini), boyutunu, oluşturulma tarihini, erişim izinlerini ve kime ait olduğunu tutan çekirdek veri yapısı.
Dosya adı, aslında sadece arka plandaki bir inode numarasına işaret eden bir referanstır.
Sert Bağlar (Hard Links)
Sert bağ, diskteki aynı inode'a işaret eden yeni bir dosya adıdır. Orijinal dosyayı fiziksel olarak kopyalamazsınız; sadece aynı veriye giden ikinci (veya üçüncü) bir resmi kapı açmış olursunuz.
Oluşturma: Terminal üzerinden
ln kaynak_dosya.txt sert_bag.txtkomutu ile oluşturulur.Mimarisi: İşletim sistemi gözünde orijinal dosya ile yeni oluşturulan sert bağ arasında hiçbir hiyerarşik fark yoktur. İkisi de tamamen aynı haklara ve aynı inode numarasına sahiptir.
Silinme Davranışı: Orijinal dosyayı (
kaynak_dosya.txt) silseniz dahi, veri diskten silinmez. Veriyesert_bag.txtüzerinden sorunsuz şekilde erişmeye devam edersiniz. Fiziksel silinme işlemi, ancak o inode'a işaret eden tüm sert bağlar ortadan kalktığında (inode bağlantı sayısı sıfıra indiğinde) gerçekleşir.
Kritik Sınırlamalar:
Sert bağlar farklı disk bölümleri (partition) veya farklı dosya sistemleri (örneğin
/ile/homefarklı disklerdeyse) arasında oluşturulamaz.Sistemde oluşabilecek sonsuz döngü (loop) riskleri nedeniyle dizinler (klasörler) için sert bağ oluşturulmasına işletim sistemi tarafından izin verilmez.
Sembolik Bağlar (Symbolic / Soft Links)
Sembolik bağ, Windows ortamındaki "Kısayol" kavramının Linux dünyasındaki karşılığıdır. Fiziksel veriye (inode'a) değil, orijinal dosyanın yoluna (path) işaret eden özel bir dosya türüdür. Kendi başına ayrı bir inode numarası vardır, ancak içerik olarak sadece hedef dosyanın nerede bulunduğunu söyler.
Oluşturma:
ln -s kaynak_dosya.txt sembolik_bag.txtkomutuyla oluşturulur.Arayüzdeki Görünümü: Pardus ETAP 23 gibi Cinnamon masaüstü ortamını temel alan sistemlerde, Nemo dosya yöneticisiyle gezinirken sembolik bağların simgelerinin üzerinde küçük bir ok işareti bulunur. Bu, dosyanın bir yönlendirici olduğunu gösterir.
Silinme Davranışı: Hedefteki orijinal dosyayı silerseniz, sembolik bağ "kırık bağ" (broken/dangling link) haline gelir. Tıklamaya veya okumaya çalıştığınızda sistem dosyanın bulunamadığını belirten bir hata verir.
Büyük Avantajları:
Farklı disk bölümleri ve hatta ağa bağlı farklı dosya sistemleri arasında sorunsuzca çalışır.
Dizinler (klasörler) için oluşturulabilir. Özellikle sunucu yapılandırmalarında büyük boyutlu klasörleri farklı disklere yönlendirmek için sıklıkla kullanılır.
Davranış Analizi ve Karşılaştırma
Aşağıdaki simülatör üzerinden, her iki bağ türünün dosya silinmesi durumunda sistemsel olarak nasıl bir tepki verdiğini ve inode bağlantılarının nasıl şekillendiğini inceleyebilirsiniz:
Sistem Yönetimi Notu: Terminalde
ls -lkomutu verdiğinizde, izinlerin en başında l harfi (örneğinlrwxrwxrwx) görüyorsanız ve satır sonunda->işareti varsa bu bir sembolik bağdır. Aynı çıktıda, izinler ile dosya sahibi arasındaki sayı sütunu ise o dosyanın kaç adet sert bağa (link count) sahip olduğunu gösterir.
Temel Farklar Özeti
| Özellik | Sert Bağ (Hard Link) | Sembolik Bağ (Symlink) |
| Hedef Referansı | Doğrudan İnode'a | Dosya Yoluna (Path) |
| Disk Bölümü Sınırı | Sadece aynı disk bölümünde | Farklı diskler arası çalışır |
| Dizin Desteği | Yapılamaz | Yapılabilir |
| Orijinal Dosya Silinirse | Veriye erişim devam eder | Bağ kırılır, erişim kopar |
| İnode Durumu | Kaynak dosya ile aynı inode | Kendine ait yeni inode |
Linux dosya bağları, standart bir kullanıcı için sadece pratik bir araç gibi görünse de, Red Team ve Blue Team perspektifinden bakıldığında sistem güvenliğinin en kritik ve istismara açık noktalarından birini oluşturur. Özellikle laboratuvar bilgisayarlarında yetki yükseltme (privilege escalation) senaryoları tasarlarken veya sızma testlerinde bu mimarinin zayıflıkları sıkça kullanılır.
İşte sert ve sembolik bağların siber güvenlik boyutuyla incelenmesi:
1. Sembolik Bağ Zafiyetleri (Symlink Attacks)
Saldırganlar, sistemdeki sembolik bağların hedeflerini manipüle ederek genellikle yetki yükseltme veya zararlı kod çalıştırma hedeflerine ulaşırlar.
Zamanlama Saldırıları (Race Conditions / TOCTOU - Time to Check to Time to Use): Özellikle
/tmpgibi herkesin yazabildiği dizinlerde geçici dosya oluşturan yazılımlar hedef alınır. Sistem, dosyanın varlığını kontrol ettikten (Time-of-Check) hemen sonra, dosya kullanılmadan (Time-of-Use) milisaniyeler içinde saldırgan o dosyayı silip,/etc/shadowgibi kritik bir dosyaya işaret eden bir sembolik bağ oluşturur. Root yetkisiyle çalışan program, farkında olmadan bu kritik dosyayı ezer veya değiştirir.Kırık Bağ İstismarı (Dangling Symlink Hijacking): Sistemde silinmiş bir dosyaya işaret eden "kırık" bir sembolik bağ varsa, saldırgan hedef dizinde aynı isimde zararlı bir dosya oluşturabilir. Sistemi yöneten kişi bu sembolik bağı çalıştırdığında aslında saldırganın kodunu (örneğin bir ters bağlantı - reverse shell) tetiklemiş olur.
2. Sert Bağ Zafiyetleri (Hard Link İstismarı)
Sert bağlar, doğrudan Inode'a bağlandığı için sistemde iz bırakmadan veri çalmak veya arka kapı (backdoor) bırakmak için çok daha gizli bir yöntemdir.
Veri Kalıcılığı ve Kritik Dosyaları Çalmak: Bir saldırgan sisteme düşük yetkilerle girdiğinde, okuma yetkisi olan ancak silinmemesi/değiştirilmemesi gereken bir log dosyasının veya yapılandırma dosyasının sert bağını kendi gizli dizinine oluşturabilir. Sistem yöneticisi orijinal log dosyasını silse veya log rotasyonu yapsa bile, Inode silinmediği için saldırgan oluşturduğu sert bağ üzerinden verilere erişmeye ve sistemi izlemeye devam eder.
SUID (Set Owner User ID) Korumasını Aşma: CTF yarışmalarında karşılaşılan klasik bir taktiktir. Bir saldırgan, root yetkisiyle çalışan SUID bitine sahip zafiyetli bir dosyanın (örneğin eski sürüm bir sistem aracı) sert bağını oluşturur. Sistem yöneticisi orijinal SUID dosyasını yamayıp güvenliğe alsa bile, saldırgan oluşturduğu gizli sert bağ üzerinden eski, zafiyetli Inode'u SUID yetkileriyle çalıştırmaya devam edip kök dizine erişebilir.
Blue Team Perspektifi: Sistem Sıkılaştırma (Hardening)
Pardus ETAP 23 (Cinnamon) gibi etkileşimli tahta veya öğrenci laboratuvarı sistemlerini yapılandırırken, bu zafiyetleri işletim sisteminin çekirdek (kernel) düzeyinde engellemek gerekir.
Çekirdek parametrelerini yöneten /etc/sysctl.conf dosyasına şu satırların eklenmesi hayati önem taşır:
fs.protected_symlinks = 1fs.protected_hardlinks = 1
protected_symlinks: Kullanıcıların, sahibi olmadıkları dizinlerde başkalarına ait dosyalara sembolik bağ oluşturmasını engeller./tmpdizini üzerinden yapılan TOCTOU saldırılarını büyük ölçüde bitirir.protected_hardlinks: Kullanıcıların, kendilerine ait olmayan veya en azından okuma/yazma yetkisi bulunmayan dosyalara sert bağ oluşturmasını yasaklar.
Bunun yanı sıra, Blue Team savunmasında sistemdeki tüm SUID yetkili dosyaları düzenli olarak taramak ve beklenmeyen Inode referanslarını tespit etmek gerekir.
Yorumlar