我想確保我對此的理解是正確的:
- 建立硬連結會建立另一個指向相同 inode 的 dentry
- 建立符號連結就是建立一個全新的檔案物件/索引節點,它指向另一個索引節點的目錄項目。檔案系統以特殊方式處理該檔案(將某些操作重新導向到另一個 inode 的 dentry)
答案1
對於硬連結正確,但對於符號連結不正確。符號連結的內容只是一個字串。例如,這允許符號連結指向目前未安裝的檔案系統。符號連結只是文字;當核心遇到一個時,它本質上會將符號連結插入到它正在尋找的路徑中,將其分解為斜杠分隔的片段並.
根據..
需要進行查找。符號連結不提供額外的權限:來自符號連結的路徑元素所引起的遍歷遵循相同的權限約束,就像應用程式已指定這些路徑元素一樣。符號連結有自己的索引節點(或至少看起來是這樣的- 在幕後,某些檔案系統不允許符號連結具有多個硬連結並將符號連結直接儲存在包含它們的目錄中,但它仍然報告索引節點函數的編號lstat
)。
在系統級別,如何處理符號連結取決於操作類型。作用於目錄條目的動作(例如重新命名、刪除)將符號連結視為任何其他檔案。作用於檔案內容的操作(例如open
,chdir
)遵循符號連結並作用於目標(如果符號連結鏈以損壞的連結結尾,則報告錯誤)。對於作用於檔案元資料(即索引節點)的操作,這取決於:對於某些操作,有一對函數(例如stat
/ lstat
),對於其他操作,則遵循符號連結(例如chmod
,utimes
在Linux 上沒有符號連結變體)。