嵌入式 Linux入 門第二課, linux 文件系統(tǒng)、文件類型及權(quán)限管理。 ...... 矜辰所致
前言
在上文我們說過:在Linux中一切接文件。 既然所有東西都是文件,那么如何區(qū)分不同的東西?
本文我們就來學(xué)習(xí)說明一下 Linux 文件系統(tǒng) 以及對文件的權(quán)限管理 。
在文章中我們會使用一些 shell 命令進(jìn)行操作,雖然系列文章還沒有講到 Shell 命令,但是作為嵌入式工程師,多多少少也得知道是什么一個東西,就像 Windows 有 CMD 命令一樣,玩 RT-Thread 的時候也會使用到 Shell 命令,即便這些你都不知道,在下一篇 Linux 入門會記錄說明一些常用的 Linux Shell 命令,本文的命令也可以作為學(xué)習(xí)了解。
嵌入式 Linux 入門系列博文:
嵌入式 Linux 入門(一、Linux 基本介紹及文件結(jié)構(gòu))
.
我是矜辰所致,全網(wǎng)同名,盡量用心寫好每一系列文章,不浮夸,不將就,認(rèn)真對待學(xué)知識的我們,矜辰所致,金石為開!
一、Linux 文件屬性
我們進(jìn)入到 ubuntu 系統(tǒng),打開終端,默認(rèn)是進(jìn)入到我們自己的用戶目錄下面,我們使用 ls -l (查看該目錄下所有文件的詳細(xì)信息)命令,查看文件詳情,如下圖:
在上面圖片中的目錄詳情,我們先整體來說明一下各部分的含義:
我們主要需要了解文件權(quán)限的含義:
文件類型后面的9個字符以3個為一組,第一組表示“文件所有者的權(quán)限”,第二組表示“用戶組的權(quán)限”,第三組表示“其他非本用戶組的權(quán)限”。(用戶和用戶組的知識,本文后面會有對應(yīng)的說明。)
每組都是 rwx 的組合,其中 r 代表可讀,w 代表可寫,x 代表可執(zhí)行,- 代表沒有這個權(quán)限。
1.1 Linux 文件類型
在Linux 中,一共有7種文件類型,如下表格:
字母 | 類型 | 說明 |
---|---|---|
- | 普通文件 | 普通文件包括 文檔圖片音樂等;純文本文件(ASCII)、二進(jìn)制文件(binary)、數(shù)據(jù)格式的文件(data)、各種壓縮文件 |
d | 目錄文件 | 目錄,可用 cd 命令進(jìn)入 |
c | 字符設(shè)備文件 | linux 驅(qū)動里面的字符設(shè)備驅(qū)動,比如 串行設(shè)備,音頻設(shè)備,鍵盤、鼠標(biāo)等等 |
b | 塊設(shè)備文件 | 存儲設(shè)備驅(qū)動,比如硬盤,U盤等 |
p | 管道文件 | FIFO也是一種特殊的文件類型,它主要目的是解決多個程序同時存取一個文件所造成的錯誤 |
l | 鏈接文件 | 類似Windows下面的快捷方式 |
s | 套接字文件 | 這類文件通常用在網(wǎng)絡(luò)數(shù)據(jù)連接。可以啟動一個程序來監(jiān)聽客戶端的要求,客戶端就可以通過套接字來進(jìn)行數(shù)據(jù)通信 |
我們在上面文章的一些圖片中已經(jīng)看到過 普通文件,和目錄文件。
那么我們通過上一篇文章嵌入式 Linux 入門(一、Linux 基本介紹及文件結(jié)構(gòu))應(yīng)該可以知道,在目錄 /dev 中應(yīng)該有很多與設(shè)備有關(guān)的文件,如下圖:
字符設(shè)備,塊設(shè)備,還有連接文件都看到了。
還有一點可以說明一下, 我們后面學(xué)習(xí) Linux 驅(qū)動開發(fā)基本都是與 字符設(shè)備文件 和塊設(shè)備文件 打交道。
文件類型這個基本的知識,也好理解,沒有什么復(fù)雜的,我們知道了就可以。
1.2 Linux 文件權(quán)限及修改
在上面我們講過文件的 3 種讀寫權(quán)限:讀(r)、寫(w)和執(zhí)行(x)。
除了用 r、w 和 x 表示以外,我們也可以使用二進(jìn)制數(shù)表示,三種權(quán)限就可以使用 3 位二進(jìn)制數(shù)來表示,一種權(quán)限對應(yīng)一個二進(jìn)制位,如果該位為1就表示具備此權(quán)限,如果該位為 0就表示沒不具備此權(quán)限:
那么組合一下,所有的文件共有 8 種不同的權(quán)限組合:
在Linux 系統(tǒng)中,使用命令“chmod”修改一個文件的權(quán)限。
我們經(jīng)常看到前輩們使用的一條指令為 : chmod 777 xxxx(文件名字),意思就是把這個文件的權(quán)限全面開放,對于初學(xué)者來說,首先記住這條指令就可以了。
但是要記住,系統(tǒng)本身的文件,千萬不要瞎修改,可以在自己的賬戶下隨便新建一個文件作為測試,自己修改看看。
比如,我們做個簡單的測試,如下圖:
在我們以后使用 Linux 的時候,經(jīng)常會遇到權(quán)限不夠的問題,我們一般都會在命令前加上一個 sudo ,比如下圖測試:
上圖中,我用自己的 qzh 賬戶嘗試在根目錄 “/” 創(chuàng)建文件 test,給出權(quán)限不夠的提示。只有 root用戶才能在根目錄“/”下創(chuàng)建文件 , 所以使用了 sudo 命令暫時獲取管理員用戶權(quán)限。
當(dāng)然接下來的刪除,也是需要 sudo 命令的:
上面sudo 這個命令以后需要經(jīng)常使用,需要記住。
二、Linux 用戶系統(tǒng)
在上文說明 Linux 文件的設(shè)備類型的時候,有提到用戶權(quán)限,用戶組權(quán)限,和其他用戶權(quán)限。
那么我們需要明白什么是用戶? 什么是用戶組?
2.1 Linux 的用戶
Linux系統(tǒng)是一個多用戶多任務(wù)的分時操作系統(tǒng),任何一個要使用系統(tǒng)資源的用戶,
都必須首先向系統(tǒng)管理員申請一個賬號,然后以這個賬號的身份進(jìn)入系統(tǒng)。
用戶的賬號一方面可以幫助系統(tǒng)管理員對使用系統(tǒng)的用戶進(jìn)行跟蹤,并控制他們對系統(tǒng)資源的訪問;
另一方面也可以幫助用戶組織文件,并為用戶提供安全性保護(hù)。
每個用戶賬號都擁有一個唯一的用戶名和各自的口令。
用戶在登錄時鍵入正確的用戶名和口令后,就能夠進(jìn)入系統(tǒng)和自己的主目錄。
其實在我們使用 Windows 系統(tǒng)的時候,也有用戶的概念,只是日常應(yīng)用很少創(chuàng)建多個用戶,切換來切換去,可能相對多的時候,也只是右鍵 “以管理員身份運行” 某個程序。
在安裝 Ubuntu系統(tǒng)的時候被要求創(chuàng)建一個賬戶,當(dāng)我們創(chuàng)建好賬號以后,系統(tǒng)會在目錄/home 下以該用戶名創(chuàng)建一個文件夾,所有與該用戶有關(guān)的文件都會被存儲在這個文件文件夾中。同樣的,創(chuàng)建其它用戶賬號的時候也會在目錄/home 下生成一個文件夾來存儲該用戶的文件,如下圖:
Linux 的用戶分類:
Linux 用戶類型分為以下 3類:
- 管理員:root 用戶,系統(tǒng)管理員,具有所有權(quán)限。
- 系統(tǒng)用戶:管理系統(tǒng)運行服務(wù),系統(tǒng)中系統(tǒng)服務(wù)由不同用戶運行,更加安全,默認(rèn)被限制登錄系統(tǒng)。
- 普通用戶:用于日常工作而不能管理系統(tǒng)的普通用戶,只有一部分權(quán)限。
在我們使用的 Ubuntu 中,上面的 qzh 用戶屬于普通用戶,但是他是按照系統(tǒng)時候創(chuàng)建的用戶,其權(quán)限比后面創(chuàng)建的用戶大一點,但是沒有 root 用戶權(quán)限大。
這個地方初次創(chuàng)建的用戶,比后面創(chuàng)建的普通用戶的區(qū)別暫時沒有必要研究,因為后期我們在使用過程中基本都是在初次創(chuàng)建的用戶下面,遇到權(quán)限問題可以臨時獲取管理員,這里做個了解即可。
UID
每個用戶都有一個 ID 號,稱為 UID,操作系統(tǒng)通過 UID 來識別是哪個用戶,用戶相關(guān)信息可以在文件 /etc/passwd 查看到 :
每行用戶信息都以 “:” 作為分隔符,劃分為7個字段,每個字段所表示的含義如下:
用戶名:密碼:UID:GID:描述性信息:主目錄:默認(rèn)Shell
每一行都是一個用戶的信息,意思如下圖解釋:
上面第二個密碼“x” ,在以前版本的 linux 系統(tǒng)中存放著加密后的用戶口令,雖然這個字段存放的只是用戶口令的加密串,但是由于 /etc/passwd 文件對所有用戶都可讀,所以這仍是一個安全隱患。因此,現(xiàn)在許多Linux 版本都使用了shadow技術(shù),把真正加密后的用戶口令存放到 /etc/shadow 文件中,而在 /etc/passwd 文件的口令字段中只存放一個特殊的字符,例如用“x”或者“*”來表示。
那么結(jié)合這個文件,我們可以再次說明一下 Linux 系統(tǒng)中的幾個用戶 UID:
超級用戶 UID 0 :
系統(tǒng)用戶 UID 1-999 :
普通用戶 UID 1000以上:
特殊的來賓賬號:
nobody這個的帳號UID為65534,這個用戶的權(quán)限會進(jìn)一步的受到限制,一般用于實現(xiàn)來賓帳號。
系統(tǒng)是根據(jù) UID 來認(rèn)定用戶的權(quán)限而不是名字。如果把自己創(chuàng)建的用戶 UID 改成 0 ,那么系統(tǒng)登錄會把用戶視為管理員用戶。
2.2 Linux 的用戶組
什么是用戶組?
用戶組是具有相同特征用戶的邏輯集合, 有時我們需要讓多個用戶具有相同的權(quán)限,比如查看、修改某一個文件的權(quán)限,一種方法是分別對多個用戶進(jìn)行文件訪問授權(quán)。
如果有10個用戶的話,就需要授權(quán)10次,顯然這種方法不太合理;另一種方法是 建立一個組,讓這個組具有查看、修改此文件的權(quán)限,然后將所有需要訪問此文件的用戶放入這個組中,那么所有用戶就具有了和組一樣的權(quán)限,這就是用戶組。
將用戶分組是Linux 系統(tǒng)中對用戶進(jìn)行管理及控制訪問權(quán)限的一種手段,通過定義用戶組,在很大程度上簡化了管理工作。
每個用戶都有一個用戶組,系統(tǒng)可以對一個用戶組中的所有用戶進(jìn)行集中管理。不同Linux 系統(tǒng)對用戶組的規(guī)定有所不同,如Linux下的用戶屬于與它同名的用戶組,這個用戶組在創(chuàng)建用戶時同時創(chuàng)建。每個用戶在被創(chuàng)建時均會創(chuàng)建一個默認(rèn)組(其GID與UID相同,叫作基本組或初始組),而后加入的組叫作擴展組或附加組。
GID
GID 是用戶組的編號,可以將多個用戶加入到某個組中,方便指派任務(wù)或工作。 和 UID 一樣也是有一個對應(yīng)的文件保存信息,用戶組名和GID相關(guān)信息可以在文件 /etc/group 查看到:
每行的用戶組的信息都以 “:” 作為分割符,劃分為4個字段,每個字段所表示的含義如下:
組名:密碼:GID:該用戶組中的用戶列表
每一行都是一個用戶組的信息,組中的用戶列表只包括附加用戶,如果該組是某個用戶的初始組,則這個用戶不會出現(xiàn)在這個用戶列表中,如下圖:
2.3 文件歸屬者修改命令
相對于修改權(quán)限來說,修改歸屬者沒那么常用,簡單了解一下。
使用命令“chown”修改一個文件的所屬者和所屬:
chown [參數(shù)] [用戶名.< 組名 >] [文件名/目錄]
chown [-cfhvR] [--help] [--version] user[:group] file...
簡單測試如圖:
一些常用的指令我們下一篇講 Shell 命令的時候都會有說明。
三、Linux 文件系統(tǒng)簡介
實際上,還需要說明一個文件系統(tǒng)的概念可以說明,文件系統(tǒng)用來組織計算機的文件和資料的系統(tǒng)。
此部分對于初學(xué)者,了解一下就好,后面如果真的遇到文件類型的問題再看一篇才好理解。
操作系統(tǒng)就是處理各種數(shù)據(jù)的,這些數(shù)據(jù)在硬盤上就是二進(jìn)制,我們想要看懂這些數(shù)據(jù),要有一個翻譯器,將這些二進(jìn)制的數(shù)據(jù)還原為人類能看懂的文件形式,這個工作就是由文件系統(tǒng)來完成的,文件系統(tǒng)的目的就是實現(xiàn)數(shù)據(jù)的查詢和存儲。
由于使用場合、使用環(huán)境的不同,Linux有多種文件系統(tǒng),不同的文件系統(tǒng)支持不同的體系。文件系統(tǒng)是管理數(shù)據(jù)的,而可以存儲數(shù)據(jù)的物理設(shè)備有硬盤、U 盤、SD卡、NAND FLASH、NOR FLASH、網(wǎng)絡(luò)存儲設(shè)備等。不同的存儲設(shè)備其物理結(jié)構(gòu)不同,不同的物理結(jié)構(gòu)就需要不同的文件系統(tǒng)去管理,比如管理 NAND FLASH 的話使用 YAFFS 文件系統(tǒng),管理硬盤、SD 卡的話就是 ext 文件系統(tǒng)等等。
比如在我們使用 windows 的時候,格式化一個 U 盤,就需要選擇文件系統(tǒng),如下圖:
3.1 Linux文件系統(tǒng)類型
和 Windows 類似,在 Windows 下有 FAT32、NTFS 和exFAT 這樣的文件系統(tǒng),在Linux下又有哪些文件系統(tǒng)呢,Linux 下的文件系統(tǒng)主要有 ext2、ext3、ext4 等文件系統(tǒng)。
Linux 還支持其他的 UNIX文件系統(tǒng),比如XFS、JFS、UFS 等,也支持Windows的 FAT文件系統(tǒng)和網(wǎng)絡(luò)文件系統(tǒng) NFS等。
-
ext2
具有極快的速度和極小的CPU占用率,可用于硬盤和移動存儲設(shè)備,ext2是Linux早期的文件系統(tǒng),但是隨著技術(shù)的發(fā)展 ext2文件系統(tǒng)已經(jīng)不推薦使用了。
-
ext3
增加日志功能,可回溯追蹤,完全兼容 ext2文件系統(tǒng),ext3支持大文件;
-
ext4
ext4 相比與ext3提供了更佳的性能和可靠性,并且功能更豐富,ext4 向下兼容 ext3 和 ext2,因此可以將 ext2 和 ext3 掛載為 ext4。
日志式文件系統(tǒng),支持1EB(1024*1024TB),最大單文件16TB,支持連續(xù)寫入可減少文件碎片。
在終端中輸入如下命令可查詢當(dāng)前磁盤掛載的文件系統(tǒng):
df -T –h
比如查詢我安裝的 Ubuntu 使用的哪個版本的文件系統(tǒng)如下圖:
上圖中最后一個項目是“掛載點”,在 Linux 下創(chuàng)建一個分區(qū)并且格式化好以后我們要將其“掛載”到一個目錄下才能訪問這個分區(qū),這個我們后期會有對應(yīng)介紹。
結(jié)語
本文我們認(rèn)識了 Linux 的 7 種文件類型,知道如何查看文件類型,以及對文件的權(quán)限管理方式。
然后還任何了一下 Linux 的用戶系統(tǒng),知道了 用戶 與 用戶組的概念,記住兩個概念 UID 和 GID: 用戶ID 和 用戶組 ID。
然后知道了通過兩個文件 /etc/passwd 和 /etc/group 可以查看當(dāng)前系統(tǒng)下所有用戶 和用戶組的信息。
最后還簡單的介紹了一下 Linux 的文件系統(tǒng)。
這些都是 Linux 的基礎(chǔ)知識,內(nèi)容簡單不難理解,但是是學(xué)習(xí)嵌入式 Linux 入門的必須要知道了解的內(nèi)容,在下一篇文章,我們開始學(xué)習(xí)常用的 Shell 命令。
本文就到這里,謝謝大家!
審核編輯:湯梓紅
-
嵌入式
+關(guān)注
關(guān)注
5138文章
19524瀏覽量
314703 -
Linux
+關(guān)注
關(guān)注
87文章
11456瀏覽量
212743 -
文件系統(tǒng)
+關(guān)注
關(guān)注
0文章
293瀏覽量
20278 -
Shell
+關(guān)注
關(guān)注
1文章
371瀏覽量
23955
發(fā)布評論請先 登錄
嵌入式Linux文件系統(tǒng)管理

嵌入式文件系統(tǒng)概述
適合嵌入式Linux應(yīng)用的文件系統(tǒng)—— JFFS
適合嵌入式Linux應(yīng)用的文件系統(tǒng)—— JFFS
構(gòu)造嵌入式Linux的文件系統(tǒng)
嵌入式Linux文件系統(tǒng)的研究與應(yīng)用
詳解嵌入式linux文件類型

學(xué)習(xí)嵌入式linux系統(tǒng)開發(fā),文件類型一定要分清
嵌入式linux系統(tǒng)開發(fā)幾大文件類型
嵌入式linux系統(tǒng)開發(fā)文件類型
你知道嵌入式linux文件類型?

Linux嵌入式文件系統(tǒng)如何構(gòu)建
嵌入式Linux系統(tǒng)移植-(Linux文件系統(tǒng))

評論