19. Kısım - Inode’lar, Sembolik Bağlantılar ve Diğer Kısayollar #
GİRİŞ #
Bugünkü konumuz, dosyaların nasıl depolandığıyla ilgili teknik detaylara bir göz atmamızı sağlıyor.
Linux, birçok farklı “dosya sistemini” destekler – ancak bir sunucuda genellikle ext3, ext4 ve belki de btrfs ile uğraşırsınız. Ancak bugün bu dosya sistemleriyle değil, onların üzerinde yer alan Linux Sanal Dosya Sistemi (VFS) ile ilgileneceğiz.
VFS, Linux’un önemli bir parçasıdır ve bunu ve çevresindeki kavramları anlamak, bir sistemi güvenle yönetmek açısından oldukça faydalıdır.
BUGÜNKÜ GÖREVLERİNİZ #
- Bir sabit bağlantı (hard link) oluşturun
- Bir sembolik bağlantı (soft link) oluşturun
- Alias (takma ad) oluşturun
DAHA DERİNE İNMEK #
Linux, dosya adları ile diskteki veriler arasında ekstra bir katmana sahiptir - bu katman inode olarak adlandırılır. Bir inode, sayısal bir değerdir ve bunu iki şekilde görebilirsiniz:
ls
komutunun -i
parametresiyle:
ls -li /etc/hosts
35356766 -rw------- 1 root root 260 Nov 25 04:59 /etc/hosts
veya stat
komutuyla:
stat /etc/hosts
File: `/etc/hosts'
Size: 260 Blocks: 8 IO Block: 4096 regular file
Device: 2ch/44d Inode: 35356766 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-11-28 13:09:10.000000000 +0400
Modify: 2012-11-25 04:59:55.000000000 +0400
Change: 2012-11-25 04:59:55.000000000 +0400
Her dosya adı bir inode’a işaret eder ve inode, diskteki gerçek veriye işaret eder. Bu nedenle, birden fazla dosya adı aynı inode’a işaret edebilir ve böylece aynı içeriğe sahip olabilir. Bu yönteme “sabit bağlantı” (hard link) denir. İzinler, sahiplik ve tarih gibi bilgiler, dosya adı düzeyinde değil, inode düzeyinde tutulur. Bu fark çoğu zaman teorik olsa da önemli durumlarda fark yaratabilir.
İKİ ÇEŞİT BAĞLANTI #
Aşağıdaki adımlarla sabit ve sembolik bağlantıları nasıl oluşturacağınızı öğrenin:
Öncelikle, ana dizininize geçin:
cd
Sonra, ln
komutunu kullanarak bir sabit bağlantı oluşturun:
ln /etc/passwd link1
Ardından, bir sembolik bağlantı (symlink) oluşturun:
ln -s /etc/passwd link2
ls -li
komutuyla oluşturulan dosyaları görüntüleyin ve less
veya cat
komutlarıyla içeriği inceleyin.
Symlink’lerin izinleri genellikle her şeye izin verir gibi görünür, ancak önemli olan, bağlandıkları dosyanın izinleridir.
Her iki bağlantı türü de Linux’ta yaygın olarak kullanılır, ancak symlink’ler özellikle yaygındır. Örneğin:
ls -ltr /etc/rc2.d/*
Bu dizin, makineniz “çalışma seviyesi 2” (normal çalışma durumu) moduna geçtiğinde başlatılacak betikleri içerir. Ancak çoğu aslında /etc/init.d dizinindeki gerçek betiklere sembolik bağlantıdır.
Ayrıca, aşağıdaki gibi bir yapı da sık karşılaşılan bir durumdur:
prog
prog-v3
prog-v4
Burada “prog” programı, başlangıçta v3 sürümüne bağlanmış bir symlink’tir, ancak artık v4’e işaret etmektedir (ve gerektiğinde tekrar v3’e yönlendirilebilir).
Sağlanan kaynaklardan daha fazla bilgi edinin ve sunucunuzda test ederek bağlantı türleri arasındaki farkları anlamaya çalışın. Özellikle, sembolik bağlantılarla sabit bağlantılar veya basit dosyalar arasındaki izin ve dosya boyutu farklarına dikkat edin.
FARKLAR #
Sabit bağlantılar:
- Sadece dosyalara bağlanır, dizinlere bağlanmaz.
- Farklı diskler veya bölümler üzerinde dosyaya bağlanamaz.
- Dosya taşınsa bile bağlantı çalışmaya devam eder.
- Inode ve fiziksel disk konumlarına işaret eder.
Sembolik (yumuşak) bağlantılar:
- Dizinlere de bağlanabilir.
- Farklı diskler veya bölümler üzerindeki dosyalara bağlanabilir.
- Orijinal dosya silinse bile bağlantı kalır.
- Ancak, dosya taşınırsa bağlantı artık çalışmaz.
- Fiziksel konumlara değil, soyut dosya/dizin adlarına işaret eder.
- Kendine ait bir inode’u vardır.
EKSTRA #
KAYNAKLAR #
- Sabit ve yumuşak bağlantılar
- Linux inode’ları açıklandı
- Linux’ta inode’lar hakkında bilmek istediğiniz her şey