Diğer tüm cevaplara ek olarak, aşağıdaki önemli özellikleri de belirtmek istiyorum:
Softlink gerçek bir referanstır, yani bir yol adı içeren küçük bir dosyadır. Bir softline çözümleniyor uygulamayı saydam olur: Bir süreç bir dosya açarsa, ki /this/path/here
işaret eden bir sembolik olan /that/other/path
o açıklığın tüm elleçleme /that/other/path
OS tarafından yapılır. Ayrıca, /that/other/path
bir sembolik bağlantı olması halinde , bu durum OS tarafından da ele alınmaktadır. Aslında, işletim sistemi başka bir şey bulana (örneğin normal bir dosya) veya birçok girişe ulaşana kadar SYMLOOP_MAX
(bkz. sysconf(3)
) Sembolik zincirini takip eder , bu durumda OS (daha doğrusu: uygun sistem çağrısı) bir hata verir ve ayarlar errno
için ELOOP
. Dolayısıyla, benzer bir dairesel referans xyz -> xyz
işlemi durdurmaz. (Linux sistemleri path_resolution(7)
için tüm detayları görün.)
Bir işlemin bir yol adının bir sembolik bağlantı olup olmadığını kontrol lstat(2)
edebileceğini ve dosya özniteliklerini (inode tablosunda depolanan) lchown(2)
ve diğerleri arasında ( symlink(7)
tüm öyküye bakın ) değiştirebileceğini kontrol edebileceğini unutmayın .
Şimdi, izin açısından, sembolik bağlantıların daima 777 numaralı izinlere sahip olduğunu göreceksiniz ( rwxrwxrwx
sembolik notasyonda). Bu, yine de, gerçek dosyaya erişerek diğer izinlerin atlanabilmesi gerçeğinden kaynaklanmaktadır. Tersine, bir sembolik link için 777, sembolik bir dosyayı ilk etapta erişilebilir değilse, erişilebilir bir dosya yapmaz. Örneğin, 640 numaralı izinlere sahip bir dosyaya işaret eden 777 numaralı izinlere sahip bir halka, dosyayı "diğer" için (genel halka açık) erişilebilir kılmaz. Başka bir deyişle, bir dosyaya xyz
bir link üzerinden erişilebilir ve eğer doğrudan erişilebilir ise, yani dolaysız olarak erişilebilir. Bu nedenle, sembolik bağlantının izinlerinin hiçbir şekilde güvenlik etkisi yoktur.
Hardlinks ve symlinks (aka softlinks) arasındaki gözle görülür ana farklardan biri, symlinlerin dosya sistemleri arasında çalışması, hardlinks bir dosya sistemi ile sınırlı kalmasıdır. Yani, A bölümündeki bir dosya B bölümünden sembolize edilebilir, ancak oradan sabit olamaz. Bu, bir hardlinkin aslında bir dosya adı ve inode numarasından oluşan bir dizindeki bir girdi olduğu ve inode numaralarının sadece her dosya sistemi için benzersiz olduğu gerçeğinden açıktır.
Hardlink terimi aslında biraz yanıltıcıdır. Sembolik bağlantıların kaynağı ve varış yeri açıkça ayırt edilebilir olsa da (sembolik bağlantı inode tablosunda kendi girişine sahipse), bu, hardlink'ler için doğru değildir. Bir dosya için bir hardlink oluşturursanız, orijinal giriş ve hardlink ilk önce ne olduğuna göre ayırt edilemez. (Aynı inode'a başvurdukları için, sahip, izinler, zaman damgaları vb. Gibi dosya özniteliklerini paylaşırlar.) Bu, her bir dizin girişinin aslında bir hardlink olduğu ve bir dosyanın hardlink edilmesinin sadece bir saniye oluşturmak anlamına geldiğini ifade eder ( veya üçüncü veya dördüncü ...) hardlink. Aslında, her bir inode, bu inode'a verilen hardlinks sayısı için bir sayaç saklar.
Son olarak, sıradan kullanıcıların hardlink dizinlerini almayabileceğini unutmayın. Bunun nedeni, çok dikkatli bir şekilde yapılması gerekmesidir: İstenmeyen bir kullanıcı, tüm olağan araçların (gibi fsck
) ve işletim sisteminin kendisinin başa çıkmaya hazır olmadığı katı bir şekilde hiyerarşik dosya ağacına döngü ekleyebilir.