搜尋
首頁運維linux運維linux硬連結為何不能連結目錄

原因:引入了對目錄的硬連接就有可能在目錄中引入循環,在目錄遍歷的時候系統就會陷入無限循環當中,這樣導致無法定位到訪問目錄。 Linux的目錄結構是一棵以「/目錄」為根節點的樹,如果允許自訂硬連接,則很有可能會破壞這個結構,甚至形成循環;而一旦形成循環,對於需要遍歷目錄樹的命令,是致命的。所以為了避免對目錄樹結構的破壞,linux不允許使用者自訂硬連接在目錄上。

linux硬連結為何不能連結目錄

本教學操作環境:linux7.3系統、Dell G3電腦。

LINUX的硬連結不能連結到目錄是因為引入了對目錄的硬連結就有可能在目錄中引入循環,在目錄遍歷的時候系統就會陷入無限循環當中,這樣導致無法定位到訪問目錄。

linux系統中,每個文件(目錄也是文件)都對應著一個inode結構,其中inode資料結構中包含了文件類型(目錄,普通文件,符號連接文件等等)的信息,也是說作業系統在遍歷目錄時可以判斷出符號連接,既然可以判斷出符號連接當然就可以採取一些措施來防範進入過大的循環了,系統在連續遇到8個符號連接後就停止遍歷,這就是為什麼對目錄符號連接不會進入死循環的原因了。但對於硬連接,由於作業系統中採用的資料結構和演算法限制,目前是不能防範這種死循環的。

linux硬連結的本質

在探討問題之前,先來談談硬連結的本質。

硬連結其實就是目錄的inode所指向的block的內容。目錄的block中的每一筆記錄,都是一個硬連接。目錄本身是Linux中文件的一種(目錄文件,符號為d),而「目錄文件」的文件內容,就是一條條的硬連接。

舉例(注意圖片中目錄連接數的變化):

linux硬連結為何不能連結目錄

#tmp目錄連接數變化前後圖示如下(紅線表示連接數來源):

linux硬連結為何不能連結目錄

透過上面的例子可以發現,一個目錄剛被建立時的硬連結數就為2,其中一個來自於父目錄,另一個來自於自身的“.”。如果再為目錄建立一個子目錄,那麼硬連結數就會 1變成3,這是因為多了一個來自於子目錄的「..」的連結。

到這裡或許有人會問,不是說硬連結不能用目錄麼?上面的示範又是怎麼回事?

這裡需要澄清一個概念,“硬連接不能用於目錄”,是說不能由使用者自訂目錄的硬連接,而只能由作業系統來維護。實際上目錄和硬連接是不可分隔、互為一體的。 「硬連線」本身,其實就是目錄維護其子檔名&子目錄名的方式。

自訂硬連結的惡夢:循環

#談完了硬連結的本質,就可以回到今天的主題了:為什麼不允許使用者自訂目錄的硬連線?

我們知道Linux的目錄結構是一棵以「/目錄」為根節點的樹,如果允許自訂硬連接,則很有可能會破壞這個結構,甚至形成循環,例如下面的命令如果可以執行成功的話:

linux硬連結為何不能連結目錄

linux硬連結為何不能連結目錄

一旦形成循環,對於需要遍歷目錄樹的命令,是致命的(例如從上向下遍歷的du指令,從下往上遍歷的pwd指令)。所以為了避免對目錄樹結構的破壞,linux不允許使用者自訂硬連接在目錄上。軟連接之所以沒有這個限制,是因為軟連接檔案有一個專門的檔案類型,可供系統識別,而「硬連接檔案」和系統的正常檔案沒有任何不同,無法進行判斷。

相關推薦:《Linux影片教學

以上是linux硬連結為何不能連結目錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Linux維護模式:了解目的Linux維護模式:了解目的Apr 28, 2025 am 12:01 AM

維護模式用於系統維護和修復,允許管理員在簡化環境中工作。 1.系統修復:修復損壞的文件系統和啟動加載器。 2.密碼重置:重置root用戶密碼。 3.軟件包管理:安裝、更新或刪除軟件包。通過修改GRUB配置或使用特定鍵進入維護模式,執行維護任務後可安全退出。

Linux操作:網絡和網絡配置Linux操作:網絡和網絡配置Apr 27, 2025 am 12:09 AM

Linux網絡配置可以通過以下步驟完成:1.配置網絡接口,使用ip命令臨時設置或編輯配置文件持久化設置。 2.設置靜態IP,適合需要固定IP的設備。 3.管理防火牆,使用iptables或firewalld工具來控製網絡流量。

Linux中的維護模式:系統管理員指南Linux中的維護模式:系統管理員指南Apr 26, 2025 am 12:20 AM

維護模式在Linux系統管理中扮演關鍵角色,幫助進行系統修復、升級和配置變更。 1.進入維護模式可以通過GRUB菜單選擇或使用命令“sudosystemctlisolaterescue.target”。 2.在維護模式下,可以執行文件系統修復和系統更新等操作。 3.高級用法包括重置root密碼等任務。 4.常見錯誤如無法進入維護模式或掛載文件系統,可通過檢查GRUB配置和使用fsck命令修復。

Linux中的維護模式:何時以及為什麼使用它Linux中的維護模式:何時以及為什麼使用它Apr 25, 2025 am 12:15 AM

使用Linux維護模式的時機和原因:1)系統啟動問題時,2)進行重大系統更新或升級時,3)執行文件系統維護時。維護模式提供安全、控制的環境,確保操作的安全性和效率,減少對用戶的影響,並增強系統的安全性。

Linux:基本命令和操作Linux:基本命令和操作Apr 24, 2025 am 12:20 AM

Linux中不可或缺的命令包括:1.ls:列出目錄內容;2.cd:改變工作目錄;3.mkdir:創建新目錄;4.rm:刪除文件或目錄;5.cp:複製文件或目錄;6.mv:移動或重命名文件或目錄。這些命令通過與內核交互執行操作,幫助用戶高效管理文件和系統。

Linux操作:管理文件,目錄和權限Linux操作:管理文件,目錄和權限Apr 23, 2025 am 12:19 AM

在Linux中,文件和目錄管理使用ls、cd、mkdir、rm、cp、mv命令,權限管理使用chmod、chown、chgrp命令。 1.文件和目錄管理命令如ls-l列出詳細信息,mkdir-p遞歸創建目錄。 2.權限管理命令如chmod755file設置文件權限,chownuserfile改變文件所有者,chgrpgroupfile改變文件所屬組。這些命令基於文件系統結構和用戶、組系統,通過系統調用和元數據實現操作和控制。

Linux中的維護模式是什麼?解釋了Linux中的維護模式是什麼?解釋了Apr 22, 2025 am 12:06 AM

MaintenancemodeInuxisAspecialBootenvironmentforforcalsystemmaintenancetasks.itallowsadMinistratorStoperFormTaskSlikerSettingPassingPassingPasswords,RepairingFilesystems,andRecoveringFrombootFailuresFailuresFailuresInamInimAlenimalenimalenrenmentrent.ToEnterMainterMainterMaintErmaintErmaintEncemememodeBoode,Interlecttheboo

Linux:深入研究其基本部分Linux:深入研究其基本部分Apr 21, 2025 am 12:03 AM

Linux的核心組件包括內核、文件系統、Shell、用戶空間與內核空間、設備驅動程序以及性能優化和最佳實踐。 1)內核是系統的核心,管理硬件、內存和進程。 2)文件系統組織數據,支持多種類型如ext4、Btrfs和XFS。 3)Shell是用戶與系統交互的命令中心,支持腳本編寫。 4)用戶空間與內核空間分離,確保系統穩定性。 5)設備驅動程序連接硬件與操作系統。 6)性能優化包括調整系統配置和遵循最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器