標籤:linux 檔案系統
對於初次接觸Linux的人來說,與window相比而言,最大的不同之處就是檔案啦。一般的檔案大家都是很容易理解的,例如:Word文檔,txt文檔這都屬於常規檔案吧,但是在Linux環境下,裝置也成了檔案,使得初次接觸Linux的人來說或多有些困惑吧,不過慢慢就習慣了。所以說,在Linux中,一切都是檔案。也就是說,在Linux中,所有的東西都可以被看成檔案,所有的操作都可以歸結到對檔案的操作,這樣就使得Linux作業系統可以像處理普通檔案一樣來使用所有東西(磁碟檔案,串口,鍵盤,顯示器,印表機以及其他的裝置)。
一、Linux檔案系統結構
無論學習什麼東西,起初都會引入結構之類的話語來總領全體,使得對整個體系有了明了的認識與影像。而檔案結構是檔案存放在磁碟等存放裝置中的組織方式,主要體現在對檔案和目錄的組織上。Linux檔案系統是以目錄和檔案的層次來安排的(windows也是如此),目錄或者檔案都是擁有其屬性(檔案類型,長度,所有者,存取權限等)的,尤其是設定的目錄和檔案許可權,以便提高其訪問的安全性。
其檔案結構呈現一種多級樹形結構,通過這種樹形結構使用者可以瀏覽整個系統下已經擁有許可權的目錄及檔案。一般Linux系統安裝完了後,會有形成固定的目錄結構,其不同的目錄存放著不同類別的檔案,以此完成一些特定的任務。Linux根目錄下包含的目錄及其用途如下:
二、檔案類型
[[email protected] tmp]$ ls -altotal 120drwxrwxrwt. 27 root root 4096 Nov 2 06:26 .dr-xr-xr-x. 22 root root 4096 Oct 19 01:45 ..drwx------. 2 root root 4096 Oct 12 01:31 .esd-0drwx------. 2 xcbeyond xcbeyond 4096 Nov 2 05:23 .esd-500drwxrwxrwt. 2 root root 4096 Nov 2 05:23 .ICE-unixdrwx------. 2 xcbeyond xcbeyond 4096 Jul 20 07:02 keyring-B651jsdrwx------. 2 root root 4096 Oct 12 01:31 keyring-dKrzCBdrwx------. 2 xcbeyond xcbeyond 4096 Oct 7 05:45 keyring-G6gJe4drwx------. 2 xcbeyond xcbeyond 4096 Nov 2 05:23 keyring-JaMrno(省略……)
從上述樣本中,可以看到列出的檔案資訊中包含有檔案類型、檔案屬性、使用者名稱、使用者所在組、檔案大小、修改日期、檔案名稱等。其中第一列資訊(drwxrwxrwt)是比較重要的,也即是接下來著重說明的內容。
第一列資訊包含了10個字元,分為4組:
①第一組(第1位):檔案類型
1
不同的字元代表不同的檔案類型,如:d代表目錄檔案。
Linux檔案類型符號見下表:
②第二組(第2-4位):檔案所有者(user)許可權
③第三組(第5-7位):檔案所有者的同組使用者(group)許可權
④第四組(第8-10位):其他組使用者(許可權
※許可權分為:讀、寫、執行三種
1、普通檔案
普通檔案是電腦使用者用來存放的資料、程式等資訊檔,一般被長期存放在存放裝置(硬碟)中。普通檔案一般又分為文字檔和二進位檔案。
2、目錄檔案
目錄檔案是檔案系統中一個目錄所包含的目錄項組成的檔案,其只允許系統進行修改,使用者進程可以讀取目錄檔案,但不能對它們進行修改,只有核心才可以寫目錄檔案。
3、裝置檔案
裝置檔案是用於為作業系統與I/O裝置提供連結的一種檔案,分為字元裝置檔案和塊裝置檔案,其對應於字元裝置和塊裝置。Linux把對裝置的I/O作為普通檔案的讀取/寫入,操作核心提供了對裝置處理和對文本處理的統一介面。每一種I/O裝置對應一個裝置檔案,存放在/dev目錄下,如:行式印表機對應於檔案/dev/lp。目前在最新的Linux發行版本中,一般不用使用者建立裝置檔案,因為這些檔案是和核心相關聯的。
在裝置檔案中有一個極其特殊的檔案是/dev/null,學習shell指令碼時,就會知道了,又本叫做“無底洞檔案”,一般用於寫入一些不想在console控制顯示的message。
(1)字元裝置(Character Device):這是一個順序的資料流裝置,對這種裝置的讀寫是按照字元進行的,而且這些字元是連續地形成一個資料流。字元裝置不具有緩衝區,所以對這種裝置的讀寫是即時的。
(2)塊裝置(Block Device):這是一種具有一定結構的隨機存取裝置,對這種裝置的讀取是按照塊進行的,它使用緩衝區來儲存暫時的資料,待時機成熟後,從緩衝一次性寫入裝置或從裝置中一次性讀出放入緩衝區,如磁碟和檔案系統等。
[[email protected] dev]$ pwd/dev ※ /dev目錄[[email protected] dev]$ ls -altotal 4drwxr-xr-x. 18 root root 3920 Nov 3 06:28 .dr-xr-xr-x. 22 root root 4096 Nov 3 06:28 ..crw-rw----. 1 root video 10, 175 Nov 3 06:28 agpgartdrwxr-xr-x. 2 root root 640 Nov 3 06:28 block ※目錄drwxr-xr-x. 2 root root 100 Nov 3 06:28 bsgdrwxr-xr-x. 3 root root 60 Nov 3 06:28 buslrwxrwxrwx. 1 root root 3 Nov 3 06:28 cdrom -> sr0 ※link檔案lrwxrwxrwx. 1 root root 3 Nov 3 06:28 cdrom1 -> sr1lrwxrwxrwx. 1 root root 3 Nov 3 06:28 cdrw -> sr0lrwxrwxrwx. 1 root root 3 Nov 3 06:28 cdrw1 -> sr1drwxr-xr-x. 2 root root 3020 Nov 3 06:28 charcrw-------. 1 root root 5, 1 Nov 3 06:28 console ※字元裝置檔案lrwxrwxrwx. 1 root root 11 Nov 3 06:28 core -> /proc/kcoredrwxr-xr-x. 3 root root 80 Nov 3 06:28 cpucrw-rw----. 1 root root 10, 61 Nov 3 06:28 cpu_dma_latencycrw-rw----. 1 root root 10, 62 Nov 3 06:28 crashdrwxr-xr-x. 5 root root 100 Nov 3 06:28 diskcrw-rw----+ 1 root audio 14, 9 Nov 3 06:28 dmmidilrwxrwxrwx. 1 root root 3 Nov 3 06:28 dvd -> sr0lrwxrwxrwx. 1 root root 3 Nov 3 06:28 dvd1 -> sr1lrwxrwxrwx. 1 root root 3 Nov 3 06:28 dvdrw -> sr0lrwxrwxrwx. 1 root root 3 Nov 3 06:28 dvdrw1 -> sr1lrwxrwxrwx. 1 root root 3 Nov 3 06:28 fb -> fb0crw-rw----. 1 root root 29, 0 Nov 3 06:28 fb0lrwxrwxrwx. 1 root root 13 Nov 3 06:28 fd -> /proc/self/fdcrw-rw-rw-. 1 root root 1, 7 Nov 3 06:28 fullcrw-rw-rw-. 1 root root 10, 229 Nov 3 06:28 fusecrw-rw----. 1 root root 250, 0 Nov 3 06:28 hidraw0crw-rw----. 1 root root 10, 228 Nov 3 06:28 hpetdrwxr-xr-x. 2 root root 40 Nov 3 06:28 hugepagescrw-------. 1 root root 229, 0 Nov 3 06:28 hvc0drwxr-xr-x. 4 root root 260 Nov 3 06:28 inputcrw-rw----. 1 root root 1, 11 Nov 3 06:28 kmsgsrw-rw-rw-. 1 root root 0 Nov 3 06:28 logbrw-rw----. 1 root disk 7, 0 Nov 3 06:28 loop0 ※塊裝置檔案brw-rw----. 1 root disk 7, 1 Nov 3 06:28 loop1brw-rw----. 1 root disk 7, 2 Nov 3 06:28 loop2brw-rw----. 1 root disk 7, 3 Nov 3 06:28 loop3
4、連結檔案
連結檔案又稱為符號連結檔案,類似於window下的捷徑檔案,它提供了共用檔案的一種方法,在連結檔案中不是通過檔案名稱實現檔案分享權限設定,而是通過連結檔案所包含的指向檔案的指標來實現對檔案的訪問。普通使用者可以建立連結檔案,並通過其指標方式訪問其所指向的那個檔案。根據連結化物件不同,連結檔案可以分為永久連結檔案和符號連結檔案。
5、管道檔案
管道檔案主要用於進程間傳遞資料,它是Linux進程間的一種通訊機制。管道是將某一個進程資料寫入管道的一端,另一個進程從管道另一端讀取資料。管道檔案也可以分為匿名管道和具名管道兩種。
6、通訊端檔案
通訊端(Socket)檔案主要用於在不同電腦的進程間的通訊。通訊端是作業系統核心中的一個資料結構,它是網路中的節點進行相互連信的通道。通訊端有3種類型:流式通訊端、資料通訊端和原始通訊端。流式通訊端也是TCP通訊端(連線導向的通訊端),資料通訊端也就是UDP通訊端(不需連線的通訊端),原始通訊端通常用“SOCK_RAW”表示。
三、檔案存取權限
檔案存取權限是指檔案系統為了進行安全管理需要在對檔案操作時進行的使用者身份認證。合法許可權的使用者進行操作,而沒有許可權的使用者就不能對其檔案進行操作。由於Linux系統是一個典型的多使用者作業系統,不同的使用者處於不同的地位。為了保護系統的安全性,Linux系統對不同使用者訪問相同檔案做了不同存取權限的設定,即不同使用者對於相同檔案具有不同的讀、寫、執行的許可權差異。
使用者在登入Linux系統時,系統會自動分配一個UID,來區分不同使用者的權限等級,root使用者具有最高的使用者權限,其UID=0。
Linux檔案系統及操作