這篇文章主要講解了“Linux的內核和文件權限介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Linux的內核和文件權限介紹”吧!
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站制作、成都網(wǎng)站設計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的深州網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
什么是 Linux ?
如果你以前從未接觸過Linux,可能就不清楚為什么會有這么多不同的Linux發(fā)行版。在查看Linux軟件包時,你肯定被發(fā)行版、LiveCD和GNU之類的術語搞暈過。初次進入Linux世界會讓人覺得不那么得心應手。在開始學習命令和腳本之前,本章將為你稍稍揭開Linux系統(tǒng)的神秘面紗。首先,Linux可劃分為以下四部分:
? Linux內核
? GNU工具鏈
? GUI桌面環(huán)境
? 應用軟件 ...
|--------------------------| | APPS | 應用軟件 |--------------------------| | | GUI桌面環(huán)境 | GUI |-------------| | | GNU | GNU工具鏈 |--------------------------| | kernel | Linux內核 |--------------------------| | hardware | 計算機硬件 ----------------------------
一. Linux 內核
Linux系統(tǒng)的核心是內核。內核控制著計算機系統(tǒng)上的所有硬件和軟件,在必要時分配硬件,并根據(jù)需要執(zhí)行軟件。
系統(tǒng)內存管理
應用程序管理
硬件設備管理
文件系統(tǒng)管理
1. 系統(tǒng)內存管理
操作系統(tǒng)內核的主要功能之一就是內存管理。內核不僅管理服務器上的可用物理內存,還可以創(chuàng)建和管理虛擬內存(即實際并不存在的內存)
內核通過硬盤上的存儲空間來實現(xiàn)虛擬內存,這塊區(qū)域稱為交換空間(swap space)。內核不斷地在交換空間和實際的物理內存之間反復交換虛擬內存中的內容。這使得系統(tǒng)以為它擁有比物理內存更多的可用內存
Linux系統(tǒng)內存映射
|---------| ----------- | | | 物理內存 | | | /---------- | | --------- | 虛擬內存 | —— | 內核 | | | --------- | | \---------- | | | 交換空間 | |---------| -----------
2. 應用程序管理
Linux操作系統(tǒng)將運行中的程序稱為進程。進程可以在前臺運行,將輸出顯示在屏幕上,也可以在后臺運行,隱藏到幕后。內核控制著Linux系統(tǒng)如何管理運行在系統(tǒng)上的所有進程。
內核創(chuàng)建了***個進程(稱為init進程)來啟動系統(tǒng)上所有其他進程。當內核啟動時,它會將init進程加載到虛擬內存中。內核在啟動任何其他進程時,都會在虛擬內存中給新進程分配一塊專有區(qū)域來存儲該進程用到的數(shù)據(jù)和代碼。
Linux操作系統(tǒng)有5個啟動運行級
運行級為1時,只啟動基本的系統(tǒng)進程以及一個控制臺終端進程。我們稱之為單用戶模式。單用戶模式通常用來在系統(tǒng)有問題時進行緊急的文件系統(tǒng)維護。顯然,在這種模式下,僅有一個人(通常是系統(tǒng)管理員)能登錄到系統(tǒng)上操作數(shù)據(jù)。
標準的啟動運行級是3。在這個運行級上,大多數(shù)應用軟件,比如網(wǎng)絡支持程序,都會啟動。
Linux中常見的運行級是5。在這個運行級上系統(tǒng)會啟動圖形化的X Window系統(tǒng),允許用戶通過圖形化桌面窗口登錄系統(tǒng)。
3. 硬件設備管理
內核的另一職責是管理硬件設備。任何Linux系統(tǒng)需要與之通信的設備,都需要在內核代碼中加入其驅動程序代碼。驅動程序代碼相當于應用程序和硬件設備的中間人,允許內核與設備之間交換數(shù)據(jù)。在Linux內核中有兩種方法用于插入設備驅動代碼:
編譯進內核的設備驅動代碼
可插入內核的設備驅動模塊
以前,插入設備驅動代碼的唯一途徑是重新編譯內核。每次給系統(tǒng)添加新設備,都要重新編譯一遍內核代碼。隨著Linux內核支持的硬件設備越來越多,這個過程變得越來越低效。不過好在Linux開發(fā)人員設計出了一種更好的將驅動代碼插入運行中的內核的方法。
開發(fā)人員提出了內核模塊的概念。它允許將驅動代碼插入到運行中的內核而無需重新編譯內核。同時,當設備不再使用時也可將內核模塊從內核中移走。這種方式極大地簡化和擴展了硬件設備在Linux上的使用。
Linux系統(tǒng)將硬件設備當成特殊的文件,稱為設備文件。設備文件有3種分類:
字符型設備文件
字符型設備文件是指處理數(shù)據(jù)時每次只能處理一個字符的設備。大多數(shù)類型的調制解調器和終端都是作為字符型設備文件創(chuàng)建的。
塊設備文件
塊設備文件是指處理數(shù)據(jù)時每次能處理大塊數(shù)據(jù)的設備,比如硬盤。
網(wǎng)絡設備文件
網(wǎng)絡設備文件是指采用數(shù)據(jù)包發(fā)送和接收數(shù)據(jù)的設備,包括各種網(wǎng)卡和一個特殊的回環(huán)設備。這個回環(huán)設備允許Linux系統(tǒng)使用常見的網(wǎng)絡編程協(xié)議同自身通信。
Linux為系統(tǒng)上的每個設備都創(chuàng)建一種稱為節(jié)點的特殊文件。與設備的所有通信都通過設備節(jié)點完成。每個節(jié)點都有唯一的數(shù)值對供Linux內核標識它。數(shù)值對包括一個主設備號和一個次設備號。類的設備被劃分到同樣的主設備號下。次設備號用于標識主設備組下的某個特定設備。
4. 文件系統(tǒng)管理
不同于其他一些操作系統(tǒng),Linux內核支持通過不同類型的文件系統(tǒng)從硬盤中讀寫數(shù)據(jù)。除
了自有的諸多文件系統(tǒng)外,Linux還支持從其他操作系統(tǒng)(比如Microsoft Windows)采用的文件
系統(tǒng)中讀寫數(shù)據(jù)。內核必須在編譯時就加入對所有可能用到的文件系統(tǒng)的支持。表1-1列出了
Linux系統(tǒng)用來讀寫數(shù)據(jù)的標準文件系統(tǒng)。
ext | Linux擴展文件系統(tǒng),最早的Linux文件系統(tǒng) ext2 | 第二擴展文件系統(tǒng),在ext的基礎上提供了更多的功能 ext3 | 第三擴展文件系統(tǒng),支持日志功能 ext4 | 第四擴展文件系統(tǒng),支持高級日志功能 hpfs | OS/2高性能文件系統(tǒng) jfs | IBM日志文件系統(tǒng) iso9660 | ISO 9660文件系統(tǒng)(CD-ROM) minix | MINIX文件系統(tǒng) msdos | 微軟的FAT16 ncp | Netware文件系統(tǒng) nfs | 網(wǎng)絡文件系統(tǒng) ntfs | 支持Microsoft NT文件系統(tǒng) proc | 訪問系統(tǒng)信息 ReiserFS | 高級Linux文件系統(tǒng),能提供更好的性能和硬盤恢復功能 smb | 支持網(wǎng)絡訪問的Samba SMB文件系統(tǒng) sysv | 較早期的Unix文件系統(tǒng) ufs | BSD文件系統(tǒng) umsdos | 建立在msdos上的類Unix文件系統(tǒng) vfat | Windows 95文件系統(tǒng)(FAT32) XFS | 高性能64位日志文件系統(tǒng)
Linux服務器所訪問的所有硬盤都必須格式化成表1-1所列文件系統(tǒng)類型中的一種。
Linux內核采用虛擬文件系統(tǒng)(Virtual File System,VFS)作為和每個文件系統(tǒng)交互的接口。這為Linux內核同任何類型文件系統(tǒng)通信提供了一個標準接口。當每個文件系統(tǒng)都被掛載和使用時,VFS將信息都緩存在內存中。
2. GNU工具鏈
GNU組織(GNU是GNU’s Not Unix的縮寫)開發(fā)了一套完整的Unix工具,但沒有可以運行它們的內核系統(tǒng)。這些工具是在名為開源軟件(open source software,OSS)的軟件理念下開發(fā)的。
開源軟件理念允許程序員開發(fā)軟件,并將其免費發(fā)布。任何人都可以使用、修改該軟件,或將該軟件集成進自己的系統(tǒng),無需支付任何授權費用。將Linus的Linux內核和GNU操作系統(tǒng)工具整合起來,就產生了一款完整的、功能豐富的免費操作系統(tǒng)。
盡管通常將Linux內核和GNU工具的結合體稱為Linux, 但你也會在互聯(lián)網(wǎng)上看到一些Linux純粹主義者將其稱為GNU/Linux系統(tǒng),藉此向GNU組織所作的貢獻致意
核心GNU工具
GNU coreutils軟件包由三部分構成:
用以處理文件的工具
用以操作文本的工具
用以管理進程的工具
Shell
GNU/Linux shell是一種特殊的交互式工具。它為用戶提供了啟動程序、管理文件系統(tǒng)中的文件以及運行在Linux系統(tǒng)上的進程的途徑。 shell的核心是命令行提示符。命令行提示符是shell負責交互的部分。它允許你輸入文本命令,然后解釋命令,并在內核中執(zhí)行。
我們在命令行中輸入的命令都是GNU工具鏈提供,而非Linux內核
所有Linux發(fā)行版默認的shell都是bash shell。bash shell由GNU項目開發(fā),被當作標準Unix shell——Bourne shell(以創(chuàng)建者的名字命名)的替代品。
Linux中常見的幾種不同 shell
bash | 由GNU項目開發(fā),被當作標準shellash | 運行在內存受限環(huán)境中簡單的輕量級shell,但與bash shell完全兼容korn | 與Bourne shell兼容的編程shell,但支持如關聯(lián)數(shù)組和浮點運算等一些高級的編程特性tcsh | 將C語言中的一些元素引入到shell腳本中的shellzsh | 結合了bash、tcsh和korn的特性,同時提供高級編程特性、共享歷史文件和主題化提示符的高級shell
3. Linux 桌面環(huán)境
在Linux的早期(20世紀90年代初期),能用的只有一個簡單的Linux操作系統(tǒng)文本界面。這個文本界面允許系統(tǒng)管理員運行程序,控制程序的執(zhí)行,以及在系統(tǒng)中移動文件。
隨著Microsoft Windows的普及,電腦用戶已經(jīng)不再滿足于對著老式的文本界面工作了。這推動了OSS社區(qū)的更多開發(fā)活動,Linux圖形化桌面環(huán)境應運而生。
X Window系統(tǒng)
有兩個基本要素決定了視頻環(huán)境:顯卡和顯示器。要在電腦上顯示絢麗的畫面,Linux軟件就得知道如何與這兩者互通。X Window系統(tǒng)是圖形顯示的核心部分。
X Window系統(tǒng),是直接和PC上的顯卡及顯示器打交道的底層程序。它控制著Linux程序如何在電腦上顯示出漂亮的窗口和圖形
現(xiàn)在流行的桌面環(huán)境有 Unity GNOME Cinnamon Xfce 等
Linux 發(fā)行版
已經(jīng)了解了構成完整Linux系統(tǒng)所需要的4個關鍵部件,那你可能在考慮要怎樣才能把它們組成一個Linux系統(tǒng)。幸運的是,已經(jīng)有人為你做好這些了
核心 Linux 發(fā)行版
核心Linux發(fā)行版含有內核、一個或多個圖形化桌面環(huán)境以及預編譯好的幾乎所有能見到的Linux應用。它提供了一站式的完整Linux安裝
Slackware | 最早的Linux發(fā)行版中的一員,在Linux極客中比較流行 Redhat | 主要用于Internet服務器的商業(yè)發(fā)行版 Gentoo | 為高級Linux用戶設計的發(fā)行版,僅包含Linux源代碼 openSUSE | 用于商用和家用的發(fā)行版 Debian | 在Linux專家和商用Linux產品中流行的發(fā)行版
系統(tǒng)目錄
|—— bin # 二進制目錄,存放用戶級的GNU工具(bash命令) |—— boot # 啟動目錄,存放用于系統(tǒng)引導時使用的各種文件 |—— dev # 設備目錄,存放硬件設備,創(chuàng)建設備節(jié)點 |—— etc # 系統(tǒng)配置文件目錄,存放系統(tǒng)管理和配置文件 |—— home # 普通用戶的主目錄 |—— lib # 庫目錄,存放系統(tǒng)和應用程序的動態(tài)鏈接庫 |—— lost+found # 這個目錄平時是空的,系統(tǒng)非正常關機而留下“無家可歸”的文件 |—— media # 媒體目錄,可移動媒體設備的常用掛載點 |—— mnt # 掛載目錄,另一個可移動媒體設備的常用掛載點 |—— opt # 可選目錄,常用于存放第三方軟件包和數(shù)據(jù)文件 |—— proc # 進程目錄,存放現(xiàn)有硬件及當前進程的相關信息,是系統(tǒng)內存的映射??芍苯釉L問這個目錄來獲取系統(tǒng)信息 |—— root # 超級用戶的主目錄 |—— run # 運行目錄,存放系統(tǒng)運作時的運行時數(shù)據(jù) |—— sbin # 系統(tǒng)二進制目錄,存放許多GNU管理員級工具 |—— srv # 服務目錄,存放本地服務的相關文件 |—— sys # 系統(tǒng)目錄,存放系統(tǒng)硬件信息的相關文件 |—— tmp # 臨時目錄,可以在該目錄中創(chuàng)建和刪除臨時工作文件,重啟后清空 |—— usr # 用戶二進制目錄,大量用戶級的GNU工具和數(shù)據(jù)文件都存儲在這里 | |—— bin # 包含系統(tǒng)安裝的可執(zhí)行程序。通常,這個目錄會包含許多程序 | |—— games # | |—— include # 寫程序需要使用到的一些頭文件 | |—— lib # 包含由/usr/bin 目錄中的程序所用的共享庫 | |—— local # 是非系統(tǒng)發(fā)行版自帶,卻打算讓系統(tǒng)使用的程序的安裝目錄。 通常,由源碼編譯的程序會安裝在/usr/local/bin 目錄下 | |—— sbin # 包含許多系統(tǒng)管理程序 | |—— share # 存放幫助文檔和共享文件 | |—— src # |—— var # 可變目錄,用以存放經(jīng)常變化的文件,比如日志文件
文件權限-權限符
命令行執(zhí)行: ls -l
drwxr-xr-x # 文件類型 屬主權限 成員權限 其他用戶權限 d rwx r-x r-x |—— 文件類型 | |—— - # 文件 | |—— d # 文件夾 | |—— l # 鏈接 | |—— c # 字符型設備 | |—— b # 塊設備 | |—— n # 網(wǎng)絡設備 | |—— r # 可讀權限 |—— w # 可寫權限 |—— x # 可執(zhí)行權限
文件系統(tǒng)
ext
Linux操作系統(tǒng)中引入的最早的文件系統(tǒng)叫作擴展文件系統(tǒng) (extended filesystem,簡記為ext)。它為Linux提供了一個基本的類Unix文件系統(tǒng):使用虛擬目錄來操作硬件設備,在物理設備上按定長的塊來存儲數(shù)據(jù)。
ext文件系統(tǒng)采用名為索引節(jié)點的系統(tǒng)來存放虛擬目錄中所存儲文件的信息。索引節(jié)點系統(tǒng)在每個物理設備中創(chuàng)建一個單獨的表(稱為索引節(jié)點表)來存儲這些文件的信息。存儲在虛擬目錄中的每一個文件在索引節(jié)點表中都有一個條目。ext文件系統(tǒng)名稱中的extended部分來自其跟蹤的每個文件的額外數(shù)據(jù)
- 文件名 - 文件大小 - 文件的屬主 - 文件的屬組 - 文件的訪問權限 - 指向存有文件數(shù)據(jù)的每個硬盤塊的指針
Linux通過唯一的數(shù)值(稱作索引節(jié)點號)來引用索引節(jié)點表中的每個索引節(jié)點,這個值是創(chuàng)建文件時由文件系統(tǒng)分配的。文件系統(tǒng)通過索引節(jié)點號而不是文件全名及路徑來標識文件。
ext2
最早的ext文件系統(tǒng)有不少限制,比如文件大小不得超過2 GB。在Linux出現(xiàn)后不久,ext文件系統(tǒng)就升級到了第二代擴展文件系統(tǒng),叫作ext2
日志文件系統(tǒng)
日志文件系統(tǒng)為Linux系統(tǒng)增加了一層安全性。它不再使用之前先將數(shù)據(jù)直接寫入存儲設備再更新索引節(jié)點表的做法,而是先將文件的更改寫入到臨時文件(稱作日志,journal)中
在數(shù)據(jù)成功寫到存儲設備和索引節(jié)點表之后,再刪除對應的日志條目。如果系統(tǒng)在數(shù)據(jù)被寫入存儲設備之前崩潰或斷電了,日志文件系統(tǒng)下次會讀取日志文件并處理上次留下的未寫入的數(shù)據(jù)
ext3
2001年,ext3文件系統(tǒng)被引入Linux內核中,直到最近都是幾乎所有Linux發(fā)行版默認的文件系統(tǒng)。它采用和ext2文件系統(tǒng)相同的索引節(jié)點表結構,但給每個存儲設備增加了一個日志文件,以將準備寫入存儲設備的數(shù)據(jù)先記入日志。
ext4
ext4文件系統(tǒng)在 2008 年受到Linux內核官方支持,現(xiàn)在已是大多數(shù)流行的Linux發(fā)行版采用的默認文件系統(tǒng)
除了支持數(shù)據(jù)壓縮和加密,ext4文件系統(tǒng)還支持一個稱作區(qū)段(extent)的特性。區(qū)段在存儲設備上按塊分配空間,但在索引節(jié)點表中只保存起始塊的位置。由于無需列出所有用來存儲文件中數(shù)據(jù)的數(shù)據(jù)塊,它可以在索引節(jié)點表中節(jié)省一些空間。
ext4還引入了塊預分配技術(block preallocation)。如果你想在存儲設備上給一個你知道要變大的文件預留空間,ext4文件系統(tǒng)可以為文件分配所有需要用到的塊,而不僅僅是那些現(xiàn)在已經(jīng)用到的塊。ext4文件系統(tǒng)用 0 填滿預留的數(shù)據(jù)塊,不會將它們分配給其他文件
Linux 中的 LVM
Linux LVM是由Heinz Mauelshagen開發(fā)的,于1998年發(fā)布到了Linux社區(qū)。它允許你在Linux上用簡單的命令行命令管理一個完整的邏輯卷管理環(huán)境
LVM1
最初的LVM包于1998年發(fā)布,只能用于Linux內核2.4版本。它僅提供了基本的邏
LVM2
LVM的更新版本,可用于Linux內核2.6版本。它在標準的LVM1功能外提供了額外的功能。
快照
最初的Linux LVM允許你在邏輯卷在線的狀態(tài)下將其復制到另一個設備。這個功能叫作快照。在備份由于高可靠性需求而無法鎖定的重要數(shù)據(jù)時,快照功能非常給力。傳統(tǒng)的備份方法在將文件復制到備份媒體上時通常要將文件鎖定??煺赵试S你在復制的同時,保證運行關鍵任務的Web服務器或數(shù)據(jù)庫服務器繼續(xù)工作。遺憾的是,LVM1只允許你創(chuàng)建只讀快照。一旦創(chuàng)建了快照,就不能再寫入東西了
LVM2允許你創(chuàng)建在線邏輯卷的可讀寫快照。有了可讀寫的快照,就可以刪除原先的邏輯卷,然后將快照作為替代掛載上。這個功能對快速故障轉移或涉及修改數(shù)據(jù)的程序試驗(如果失敗,需要恢復修改過的數(shù)據(jù))非常有用。
條帶化
LVM2提供的另一個引人注目的功能是條帶化(striping)。有了條帶化,可跨多個物理硬盤創(chuàng)建邏輯卷。當Linux LVM將文件寫入邏輯卷時,文件中的數(shù)據(jù)塊會被分散到多個硬盤上。每個后繼數(shù)據(jù)塊會被寫到下一個硬盤上。條帶化有助于提高硬盤的性能,因為Linux可以將一個文件的多個數(shù)據(jù)塊同時寫入多個硬盤,而無需等待單個硬盤移動讀寫磁頭到多個不同位置。這個改進同樣適用于讀取順序訪問的文件,因為LVM可同時從多個硬盤讀取數(shù)據(jù)。
鏡像
通過LVM安裝文件系統(tǒng)并不意味著文件系統(tǒng)就不會再出問題。和物理分區(qū)一樣,LVM邏輯卷也容易受到斷電和磁盤故障的影響。一旦文件系統(tǒng)損壞,就有可能再也無法恢復。
LVM快照功能提供了一些安慰,你可以隨時創(chuàng)建邏輯卷的備份副本,但對有些環(huán)境來說可能還不夠。對于涉及大量數(shù)據(jù)變動的系統(tǒng),比如數(shù)據(jù)庫服務器,自上次快照之后可能要存儲成百上千條記錄。
這個問題的一個解決辦法就是LVM鏡像。鏡像是一個實時更新的邏輯卷的完整副本。當你創(chuàng)建鏡像邏輯卷時,LVM會將原始邏輯卷同步到鏡像副本中。根據(jù)原始邏輯卷的大小,這可能需要一些時間才能完成。
一旦原始同步完成,LVM會為文件系統(tǒng)的每次寫操作執(zhí)行兩次寫入——一次寫入到主邏輯卷,一次寫入到鏡像副本??梢韵氲?這個過程會降低系統(tǒng)的寫入性能。就算原始邏輯卷因為某些原因損壞了,你手頭也已經(jīng)有了一個完整的***副本!
感謝各位的閱讀,以上就是“Linux的內核和文件權限介紹”的內容了,經(jīng)過本文的學習后,相信大家對Linux的內核和文件權限介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!