溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

第三章 Linux基礎(chǔ)

發(fā)布時(shí)間:2020-06-16 06:58:32 來(lái)源:網(wǎng)絡(luò) 閱讀:951 作者:Petrelight 欄目:安全技術(shù)

在你掌握Kali Linux之前,你必須能很容易地操作通用的Linux系統(tǒng)。熟練掌握Linux將會(huì)對(duì)你很有幫助,因?yàn)榇蟛糠諻eb,Email和其他的因特網(wǎng)服務(wù)都運(yùn)行在Linux服務(wù)器上。

在本節(jié),我們將盡可能覆蓋Linux的基礎(chǔ),但我們假設(shè)你已經(jīng)了解計(jì)算機(jī)的一般知識(shí),包括CPU、RAM、主板和硬盤,還包括設(shè)備控制器和與其相關(guān)的連接器等。

3.1 Linux是什么?能做什么?

術(shù)語(yǔ)“Linux”通常用來(lái)指整個(gè)操作系統(tǒng),但實(shí)際上,Linux指的是操作系統(tǒng)內(nèi)核,由引導(dǎo)裝載器啟動(dòng),而引導(dǎo)裝載器由BIOS/UEFI自啟動(dòng)。內(nèi)核扮演的角色類似于管弦樂(lè)隊(duì)中的指揮——他確保硬件和軟件之間的協(xié)調(diào)。該角色包括管理硬件、進(jìn)程、用戶、權(quán)限和文件系統(tǒng)。內(nèi)核為系統(tǒng)上的所有其它程序提供了一個(gè)通用基礎(chǔ),通常運(yùn)行在Ring 0,也稱為內(nèi)核空間。

用戶空間:我們用術(shù)語(yǔ)“用戶空間”來(lái)指發(fā)生在內(nèi)核之外的所有組合在一起的事情。

在用戶空間中運(yùn)行的程序 有許多來(lái)自GNU項(xiàng)目的核心實(shí)用程序,其中大多數(shù)都是從命令行運(yùn)行的。你可以在腳本中使用它們來(lái)自動(dòng)化執(zhí)行許多任務(wù)。詳細(xì)信息請(qǐng)參見(jiàn)3.4節(jié)。

讓我們來(lái)快速看一下由Linux內(nèi)核處理的各種任務(wù)。

3.1.1 驅(qū)動(dòng)硬件

內(nèi)核的任務(wù)中首當(dāng)其沖的就是控制計(jì)算機(jī)的硬件。當(dāng)計(jì)算機(jī)開(kāi)機(jī)時(shí),或者當(dāng)設(shè)備插入或移除(例如,USB設(shè)備)時(shí),內(nèi)核檢測(cè)并配置它們。內(nèi)核還要通過(guò)簡(jiǎn)單的編程接口,讓其對(duì)上層軟件有效,從而應(yīng)用程序才能在不用關(guān)心設(shè)備細(xì)節(jié)(比如插入了哪一個(gè)擴(kuò)展插槽等)的情況下使用這些設(shè)備。編程接口相當(dāng)于提供了一個(gè)抽象層,舉個(gè)例子,這就允許視頻會(huì)議軟件可以在不用關(guān)心攝像頭的制造商和型號(hào)的情況下就能使用它。軟件能使用針對(duì)Linux的視頻(V4L)接口,內(nèi)核會(huì)把對(duì)于接口的調(diào)用轉(zhuǎn)換成所使用攝像頭所需的實(shí)際硬件命令。

內(nèi)核把所檢測(cè)到硬件的數(shù)據(jù)通過(guò)/proc/和/sys/虛擬文件系統(tǒng)導(dǎo)出。應(yīng)用程序通常通過(guò)創(chuàng)建/dev/文件來(lái)訪問(wèn)這些設(shè)備。具體的文件表示硬盤驅(qū)動(dòng)器(例如,/dev/sda),分區(qū)(/dev/sda1),鼠標(biāo)(/dev/input/mouse0),鍵盤(/dev/input/event0),聲卡(dev/snd/*),串口(/dev/ttyS*)和其它的組件。

有兩種類型的設(shè)備文件:塊和字符。前者具有一大塊數(shù)據(jù)的特征:其具有有限的大小,你能訪問(wèn)這塊數(shù)據(jù)中任何位置上的字節(jié)數(shù)據(jù)。后者的行為像一個(gè)一串字符,你能讀寫(xiě)這些字符,但你不能定位到給定的位置并任意改寫(xiě)它。要找出給定設(shè)備文件的類型,檢查命令ls –l輸出結(jié)查的第一個(gè)字符。對(duì)于塊設(shè)備,第一個(gè)字符是b,而對(duì)于字符設(shè)備,第一個(gè)字符是c:

第三章 Linux基礎(chǔ)第三章 Linux基礎(chǔ)

如你所料,磁盤驅(qū)動(dòng)器和分區(qū)使用塊設(shè)備,而鼠標(biāo)、鍵盤和串口使用字符設(shè)備。在這兩種情況下,編程接口都包括可以通過(guò)ioctl系統(tǒng)調(diào)用進(jìn)行調(diào)用的設(shè)備特定命令。

3.1.2 統(tǒng)一文件系統(tǒng)

文件系統(tǒng)是內(nèi)核突出的一方面。類UNIX系統(tǒng)把所用的文件存儲(chǔ)都合并到單一的分層中,這就能讓用戶和應(yīng)用程序通過(guò)已知的所在層次的位置來(lái)訪問(wèn)數(shù)據(jù)。

這個(gè)分層樹(shù)的起點(diǎn)叫做根,用字符”/”表示。這個(gè)目錄可以包含命名的子目錄。例如,/的home子目錄叫做/home/。相應(yīng)地,這個(gè)子目錄也可以包含其它的子目錄,以此類推。每個(gè)目錄還能包含用于數(shù)據(jù)存儲(chǔ)的文件。因此,/home/buxy/Desktop/hello.txt表示一個(gè)文件名為hello.txt,存儲(chǔ)在根目錄下home子目錄下的buxy目錄下的Desktop子目錄中文件。內(nèi)核會(huì)在命名系統(tǒng)和磁盤上存儲(chǔ)位置之間進(jìn)行轉(zhuǎn)換。

不像其它系統(tǒng),Linux只處理這么一個(gè)層次結(jié)構(gòu),而且它還能把多個(gè)磁盤的數(shù)據(jù)集成到一起。這些磁盤中的一塊會(huì)成為根,其它的磁盤會(huì)掛載在這引層次結(jié)構(gòu)中的目錄中(掛載的命令叫mount)。這樣,在掛載點(diǎn)下,這些磁盤就可以使用了。這就允許把用戶的主目錄(通常存儲(chǔ)在/home/中)存儲(chǔ)在一個(gè)獨(dú)立的硬盤中,這個(gè)硬盤包含了buxy目錄(還有其它用戶的目錄)。一旦你把這個(gè)硬盤掛載在/home/中,這些目錄就可以通過(guò)常規(guī)的方式進(jìn)行訪問(wèn)了,比如前面的例子/home/buxy/Desktop/hello.txt。

對(duì)于存儲(chǔ)在硬盤上的數(shù)據(jù),有多種文件系統(tǒng)格式與之相對(duì)應(yīng)。最為廣泛使用的是ext2,ext3,ext4文件系統(tǒng)格式,當(dāng)然還有其它的。例如,VFAT是歷史上由DOS和Windows操作系統(tǒng)使用的文件系統(tǒng)。Linux對(duì)VFAT文件系統(tǒng)的支持允許硬盤在Kali下與在Windows中一樣可以訪問(wèn)。無(wú)論如何,在你可以掛載一個(gè)硬盤之前,你必須準(zhǔn)備一個(gè)文件系統(tǒng),這個(gè)操作就是格式化。比如命令mkfs.ext3(mkfs代表Make FileSystem)就把硬盤格式化成ext3文件系統(tǒng)格式。這些命令要求一個(gè)表示將要進(jìn)行格式化的分區(qū)的設(shè)備文件參數(shù)(比如,/dev/sda1,第一塊硬盤的第一個(gè)分區(qū))。這個(gè)操作對(duì)于數(shù)據(jù)來(lái)講是毀滅性的,因此一般只運(yùn)行一次,除非你想擦除文件系統(tǒng)重新開(kāi)始。

還用諸如NFS之類的網(wǎng)絡(luò)文件系統(tǒng),它們不把數(shù)據(jù)存儲(chǔ)在本地硬盤,作為替換,數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸?shù)椒?wù)器,并按需存儲(chǔ)和取回這些數(shù)據(jù)。得益于文件系統(tǒng)抽象,你不用擔(dān)心這些磁盤是如何連接的,因此這些文件仍然按常規(guī)的層次結(jié)構(gòu)進(jìn)行訪問(wèn)。

3.1.3 進(jìn)程管理

進(jìn)程是程序運(yùn)行的實(shí)例,它需要內(nèi)存在存儲(chǔ)程序本身及其操作的數(shù)據(jù)。內(nèi)核負(fù)責(zé)創(chuàng)建和跟蹤進(jìn)程。當(dāng)程序運(yùn)行時(shí),內(nèi)核首先留出一些內(nèi)存,將可執(zhí)行代碼從文件系統(tǒng)加載到內(nèi)存中,然后開(kāi)始運(yùn)行代碼。內(nèi)核保存關(guān)于此進(jìn)程的相關(guān)信息,其中最明顯的是一個(gè)名為進(jìn)程標(biāo)識(shí)符(PID)的標(biāo)識(shí)號(hào)。

和大多數(shù)現(xiàn)代操作系統(tǒng)一樣,那些擁有類Unix內(nèi)核的操作系統(tǒng),包括Linux,能夠處理多個(gè)任務(wù)。換句話說(shuō),它們?cè)试S系統(tǒng)同時(shí)運(yùn)行多個(gè)進(jìn)程。實(shí)際上,在任何時(shí)候都只有一個(gè)正在運(yùn)行的進(jìn)程,但是內(nèi)核將CPU時(shí)間劃分成小塊,然后依次運(yùn)行每個(gè)進(jìn)程。由于這些時(shí)間片非常短(毫秒范圍內(nèi)),制造了多個(gè)進(jìn)程并行運(yùn)行的假像,這些進(jìn)程只在屬于它們自己的時(shí)間片內(nèi)處于活動(dòng)狀態(tài),其它時(shí)間都處于空閑狀態(tài)。內(nèi)核的工作是調(diào)整其調(diào)度機(jī)制以保持這些并行運(yùn)行的狀態(tài),同時(shí)最大化全局系統(tǒng)性能。如果時(shí)間片太長(zhǎng),則應(yīng)用程序可能不會(huì)出現(xiàn)所需的響應(yīng)。太短,系統(tǒng)會(huì)因?yàn)轭l繁切換任務(wù)而浪費(fèi)時(shí)間。這些決策可以通過(guò)進(jìn)程優(yōu)先級(jí)來(lái)細(xì)化,高優(yōu)先級(jí)的進(jìn)程將運(yùn)行更長(zhǎng)的周期,并且比低優(yōu)先級(jí)的進(jìn)程更頻繁地進(jìn)行時(shí)間片的劃分。

多處理器系統(tǒng):如上所述的限制,一次只運(yùn)行一具進(jìn)程,并不總是適用的:實(shí)際的限制是每個(gè)處理器核心只能有一個(gè)正在運(yùn)行的進(jìn)程。多處理器、多核或超線程系統(tǒng)允許多個(gè)進(jìn)程并行運(yùn)行。然而,同樣的時(shí)間切片系統(tǒng)被用來(lái)處理活動(dòng)進(jìn)程數(shù)量比有效處理器核多的情況。這并不常風(fēng):一個(gè)基本的系統(tǒng),即使是一個(gè)大部分空閑的系統(tǒng),通常也總有數(shù)十個(gè)正在運(yùn)行的進(jìn)程。

內(nèi)核允許運(yùn)行同一程序的多個(gè)獨(dú)立實(shí)例,但每個(gè)實(shí)例只允許訪問(wèn)自己的時(shí)間片和內(nèi)存。它們的數(shù)據(jù)也是獨(dú)立的。

3.1.4 權(quán)限管理

類Unix的系統(tǒng)支持多用戶和組,并允許權(quán)限控制。大多數(shù)情況下,進(jìn)程由啟動(dòng)它的用戶來(lái)標(biāo)識(shí)。這一進(jìn)程只允許干啟動(dòng)它的用戶所擁有權(quán)限能干的事。例如,打開(kāi)一個(gè)文件需要內(nèi)核根據(jù)訪問(wèn)權(quán)限檢查進(jìn)程標(biāo)識(shí)(更多細(xì)節(jié),請(qǐng)參見(jiàn)3.4.4節(jié))。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI