Linux 文件系統結構介紹

2018-12-26

https://www.blackmoreops.com/2015/06/18/linux-file-system-hierarchy-v2-0/


微信圖片_20181226163450.jpg


Linux中的(de)文件是什(shén)麽?它的(de)文件系統又是什(shén)麽?那些配置文件又在哪裏?我下(xià)載好的(de)程序保存在哪裏了(le)?在 Linux 中文件系統是标準結構的(de)嗎?好了(le),上圖簡明(míng)地闡釋了(le)Linux


的(de)文件系統的(de)層次關系。當你苦于尋找配置文件或者二進制文件的(de)時(shí)候,這(zhè)便顯得(de)十分(fēn)有用(yòng)了(le)。我在下(xià)方添加了(le)一些解釋以及例子,不過“篇幅較長(cháng),可(kě)以有空再看”。


另外一種情況便是當你在系統中獲取配置以及二進制文件時(shí),出現了(le)不一緻性問題,如果你是在一個(gè)大(dà)型組織中,或者隻是一個(gè)終端用(yòng)戶,這(zhè)也(yě)有可(kě)能會破壞你的(de)系統(比如,二


進制文件運行在舊(jiù)的(de)庫文件上了(le))。若然你在你的(de)Linux系統上做(zuò)安全審計的(de)話(huà)

https://www.blackmoreops.com/2015/02/15/in-light-of-recent-linux-exploits-linux-security-audit-is-a-must/

你将會發現它很容易遭到各種攻擊。所以,保持一個(gè)清潔的(de)操作系統(無論是Windows還(hái)是Linux)都顯得(de)十分(fēn)重要。


Linux的(de)文件是什(shén)麽?


對(duì)于UNIX系統來(lái)說(同樣适用(yòng)于Linux),以下(xià)便是對(duì)文件簡單的(de)描述:


在UNIX系統中,一切皆爲文件;若非文件,則爲進程


這(zhè)種定義是比較正确的(de),因爲有些特殊的(de)文件不僅僅是普通(tōng)文件(比如命名管道和(hé)套接字),不過爲了(le)讓事情變的(de)簡單,“一切皆爲文件”也(yě)是一個(gè)可(kě)以讓人(rén)接受的(de)說法。Linux


系統也(yě)像UNIX系統一樣,将文件和(hé)目錄視如同物(wù),因爲目錄隻是一個(gè)包含了(le)其他(tā)文件名的(de)文件而已。程序、服務、文本、圖片等等,都是文件。對(duì)于系統來(lái)說,輸入和(hé)輸出設備,


基本上所有的(de)設備,都被當做(zuò)是文件。


題圖版本曆史:


微信圖片_20181226163455.png


下(xià)載鏈接


以下(xià)是大(dà)圖的(de)下(xià)載地址。如果你需要其他(tā)格式,請跟原作者聯系,他(tā)會嘗試制作并且上傳到某個(gè)地方以供下(xià)載


大(dà)圖 (PNG 格式)  – 2480×1755 px – 184KB


最大(dà)圖 (PDF 格式)  – 9919x7019 px – 1686KB


注意: PDF格式文件是打印的(de)最好選擇,因爲它畫(huà)質很高(gāo)。


Linux 文件系統描述


爲了(le)有序地管理(lǐ)那些文件,人(rén)們習(xí)慣把這(zhè)些文件當做(zuò)是硬盤上的(de)有序的(de)樹狀結構,正如我們熟悉的(de)'MS-DOS'(磁盤操作系統)就是一個(gè)例子。大(dà)的(de)分(fēn)枝包括更多(duō)的(de)分(fēn)枝,分(fēn)枝的(de)末梢


是樹的(de)葉子或者普通(tōng)的(de)文件。現在我們将會以這(zhè)樹形圖爲例,但晚點我們會發現爲什(shén)麽這(zhè)不是一個(gè)完全準确的(de)一幅圖。


微信圖片_20181226163458.jpg

微信圖片_20181226163500.jpg

微信圖片_20181226163501.jpg


Linux的(de)文件類型


大(dà)多(duō)數文件僅僅是普通(tōng)文件,他(tā)們被稱爲regular文件;他(tā)們包含普通(tōng)數據,比如,文本、可(kě)執行文件、或者程序、程序的(de)輸入或輸出等等


雖然你可(kě)以認爲“在Linux中,一切你看到的(de)皆爲文件”這(zhè)個(gè)觀點相當保險,但這(zhè)裏仍有著(zhe)一些例外。


目錄:由其他(tā)文件組成的(de)文件


特殊文件:用(yòng)于輸入和(hé)輸出的(de)途徑。大(dà)多(duō)數特殊文件都儲存在/dev中,我們将會在後面討(tǎo)論這(zhè)個(gè)問題。


鏈接文件:讓文件或者目錄出現在系統文件樹結構上多(duō)個(gè)地方的(de)機制。我們将詳細地討(tǎo)論這(zhè)個(gè)鏈接文件。


(域)套接字:特殊的(de)文件類型,和(hé)TCP/IP協議(yì)中的(de)套接字有點像,提供進程間網絡通(tōng)訊,并受文件系統的(de)訪問控制機制保護。


命名管道 : 或多(duō)或少有點像sockets(套接字),提供一個(gè)進程間的(de)通(tōng)信機制,而不用(yòng)網絡套接字協議(yì)。


現實中的(de)文件系統


對(duì)于大(dà)多(duō)數用(yòng)戶和(hé)常規系統管理(lǐ)任務而言,“文件和(hé)目錄是一個(gè)有序的(de)類樹結構”是可(kě)以接受的(de)。然而,對(duì)于電腦(nǎo)而言,它是不會理(lǐ)解什(shén)麽是樹,或者什(shén)麽是樹結構。


每個(gè)分(fēn)區(qū)都有它自己的(de)文件系統。想象一下(xià),如果把那些文件系統想成一個(gè)整體,我們可(kě)以構思一個(gè)關于整個(gè)系統的(de)樹結構,不過這(zhè)并沒有這(zhè)麽簡單。在文件系統中,一個(gè)文件代


表著(zhe)一個(gè)inode(索引節點),這(zhè)是一種包含著(zhe)構建文件的(de)實際數據信息的(de)序列号:這(zhè)些數據表示文件是屬于誰的(de),還(hái)有它在硬盤中的(de)位置。


每個(gè)分(fēn)區(qū)都有一套屬于他(tā)們自己的(de)inode,在一個(gè)系統的(de)不同分(fēn)區(qū)中,可(kě)以存在有相同inode的(de)文件。


每個(gè)inode都表示著(zhe)一種在硬盤上的(de)數據結構,保存著(zhe)文件的(de)屬性,包括文件數據的(de)物(wù)理(lǐ)地址。當硬盤被格式化(huà)并用(yòng)來(lái)存儲數據時(shí)(通(tōng)常發生在初始系統安裝過程,或者是在一個(gè)已


經存在的(de)系統中添加額外的(de)硬盤),每個(gè)分(fēn)區(qū)都會創建固定數量的(de)inode。這(zhè)個(gè)值表示這(zhè)個(gè)分(fēn)區(qū)能夠同時(shí)存儲各類文件的(de)最大(dà)數量。我們通(tōng)常用(yòng)一個(gè)inode去映射2-8k的(de)數據塊。當


一個(gè)新的(de)文件生成後,它就會獲得(de)一個(gè)空閑的(de)inode。在這(zhè)個(gè)inode裏面存儲著(zhe)以下(xià)信息:


文件屬主和(hé)組屬主


文件類型(常規文件,目錄文件......)


文件權限


創建、最近一次讀文件和(hé)修改文件的(de)時(shí)間


inode裏該信息被修改的(de)時(shí)間


文件的(de)鏈接數(詳見下(xià)一章(zhāng))


文件大(dà)小


文件數據的(de)實際地址


唯一不在inode的(de)信息是文件名和(hé)目錄。它們存儲在特殊的(de)目錄文件。通(tōng)過比較文件名和(hé)inode的(de)數目,系統能夠構造出一個(gè)便于用(yòng)戶理(lǐ)解的(de)樹結構。用(yòng)戶可(kě)以通(tōng)過ls -i查看inode


的(de)數目。在硬盤上,inodes有他(tā)們獨立的(de)空間。


您的(de)項目需求咨詢熱(rè)線:0760-88610046(國家高(gāo)新技術企業)

*請認真填寫需求,我們會在24小時(shí)内與您取得(de)聯系。