<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式Linux入門(二、Linux文件系統、文件類型及權限管理)

矜辰所致 ? 來源:矜辰所致 ? 作者:矜辰所致 ? 2023-06-20 11:44 ? 次閱讀
嵌入式 Linux入 門第二課, linux 文件系統、文件類型及權限管理。  ...... 矜辰所致

前言

在上文我們說過:在Linux中一切接文件。 既然所有東西都是文件,那么如何區分不同的東西?

本文我們就來學習說明一下 Linux 文件系統 以及對文件的權限管理 。

在文章中我們會使用一些 shell 命令進行操作,雖然系列文章還沒有講到 Shell 命令,但是作為嵌入式工程師,多多少少也得知道是什么一個東西,就像 Windows 有 CMD 命令一樣,玩 RT-Thread 的時候也會使用到 Shell 命令,即便這些你都不知道,在下一篇 Linux 入門會記錄說明一些常用的 Linux Shell 命令,本文的命令也可以作為學習了解。

嵌入式 Linux 入門系列博文:

嵌入式 Linux 入門(一、Linux 基本介紹及文件結構)

.

我是矜辰所致,全網同名,盡量用心寫好每一系列文章,不浮夸,不將就,認真對待學知識的我們,矜辰所致,金石為開!

一、Linux 文件屬性

我們進入到 ubuntu 系統,打開終端,默認是進入到我們自己的用戶目錄下面,我們使用 ls -l (查看該目錄下所有文件的詳細信息)命令,查看文件詳情,如下圖:

圖片.png

在上面圖片中的目錄詳情,我們先整體來說明一下各部分的含義:

圖片.png

我們主要需要了解文件權限的含義:

文件類型后面的9個字符以3個為一組,第一組表示“文件所有者的權限”,第二組表示“用戶組的權限”,第三組表示“其他非本用戶組的權限”。(用戶和用戶組的知識,本文后面會有對應的說明。)

每組都是 rwx 的組合,其中 r 代表可讀,w 代表可寫,x 代表可執行,- 代表沒有這個權限。

圖片.png

1.1 Linux 文件類型

在Linux 中,一共有7種文件類型,如下表格:

字母 類型 說明
- 普通文件 普通文件包括 文檔圖片音樂等;純文本文件(ASCII)、二進制文件(binary)、數據格式的文件(data)、各種壓縮文件
d 目錄文件 目錄,可用 cd 命令進入
c 字符設備文件 linux 驅動里面的字符設備驅動,比如 串行設備,音頻設備,鍵盤、鼠標等等
b 塊設備文件 存儲設備驅動,比如硬盤,U盤等
p 管道文件 FIFO也是一種特殊的文件類型,它主要目的是解決多個程序同時存取一個文件所造成的錯誤
l 鏈接文件 類似Windows下面的快捷方式
s 套接字文件 這類文件通常用在網絡數據連接??梢詥右粋€程序來監聽客戶端的要求,客戶端就可以通過套接字來進行數據通信

我們在上面文章的一些圖片中已經看到過 普通文件,和目錄文件。

那么我們通過上一篇文章嵌入式 Linux 入門(一、Linux 基本介紹及文件結構)應該可以知道,在目錄 /dev 中應該有很多與設備有關的文件,如下圖:

圖片.png

字符設備,塊設備,還有連接文件都看到了。

還有一點可以說明一下, 我們后面學習 Linux 驅動開發基本都是與 字符設備文件 和塊設備文件 打交道。

文件類型這個基本的知識,也好理解,沒有什么復雜的,我們知道了就可以。

1.2 Linux 文件權限及修改

在上面我們講過文件的 3 種讀寫權限:讀(r)、寫(w)和執行(x)。

除了用 r、w 和 x 表示以外,我們也可以使用二進制數表示,三種權限就可以使用 3 位二進制數來表示,一種權限對應一個二進制位,如果該位為1就表示具備此權限,如果該位為 0就表示沒不具備此權限:

圖片.png

那么組合一下,所有的文件共有 8 種不同的權限組合:

圖片.png

在Linux 系統中,使用命令“chmod”修改一個文件的權限。

我們經??吹角拜厒兪褂玫囊粭l指令為 : chmod 777 xxxx(文件名字),意思就是把這個文件的權限全面開放,對于初學者來說,首先記住這條指令就可以了。

但是要記住,系統本身的文件,千萬不要瞎修改,可以在自己的賬戶下隨便新建一個文件作為測試,自己修改看看。

比如,我們做個簡單的測試,如下圖:

圖片.png

在我們以后使用 Linux 的時候,經常會遇到權限不夠的問題,我們一般都會在命令前加上一個 sudo ,比如下圖測試:

圖片.png

上圖中,我用自己的 qzh 賬戶嘗試在根目錄 “/” 創建文件 test,給出權限不夠的提示。只有 root用戶才能在根目錄“/”下創建文件 , 所以使用了 sudo 命令暫時獲取管理員用戶權限。

當然接下來的刪除,也是需要 sudo 命令的:

圖片.png

上面sudo 這個命令以后需要經常使用,需要記住。

二、Linux 用戶系統

在上文說明 Linux 文件的設備類型的時候,有提到用戶權限,用戶組權限,和其他用戶權限。

那么我們需要明白什么是用戶? 什么是用戶組?

2.1 Linux 的用戶

Linux系統是一個多用戶多任務的分時操作系統,任何一個要使用系統資源的用戶,
都必須首先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。

用戶的賬號一方面可以幫助系統管理員對使用系統的用戶進行跟蹤,并控制他們對系統資源的訪問;
另一方面也可以幫助用戶組織文件,并為用戶提供安全性保護。

每個用戶賬號都擁有一個唯一的用戶名和各自的口令。

用戶在登錄時鍵入正確的用戶名和口令后,就能夠進入系統和自己的主目錄。

其實在我們使用 Windows 系統的時候,也有用戶的概念,只是日常應用很少創建多個用戶,切換來切換去,可能相對多的時候,也只是右鍵 “以管理員身份運行” 某個程序。

在安裝 Ubuntu系統的時候被要求創建一個賬戶,當我們創建好賬號以后,系統會在目錄/home 下以該用戶名創建一個文件夾,所有與該用戶有關的文件都會被存儲在這個文件文件夾中。同樣的,創建其它用戶賬號的時候也會在目錄/home 下生成一個文件夾來存儲該用戶的文件,如下圖:

圖片.png

Linux 的用戶分類:

Linux 用戶類型分為以下 3類:

  • 管理員:root 用戶,系統管理員,具有所有權限。
  • 系統用戶:管理系統運行服務,系統中系統服務由不同用戶運行,更加安全,默認被限制登錄系統。
  • 普通用戶:用于日常工作而不能管理系統的普通用戶,只有一部分權限。

在我們使用的 Ubuntu 中,上面的 qzh 用戶屬于普通用戶,但是他是按照系統時候創建的用戶,其權限比后面創建的用戶大一點,但是沒有 root 用戶權限大。

這個地方初次創建的用戶,比后面創建的普通用戶的區別暫時沒有必要研究,因為后期我們在使用過程中基本都是在初次創建的用戶下面,遇到權限問題可以臨時獲取管理員,這里做個了解即可。

UID

每個用戶都有一個 ID 號,稱為 UID,操作系統通過 UID 來識別是哪個用戶,用戶相關信息可以在文件 /etc/passwd 查看到 :

圖片.png

每行用戶信息都以 “:” 作為分隔符,劃分為7個字段,每個字段所表示的含義如下:

用戶名:密碼:UID:GID:描述性信息:主目錄:默認Shell

每一行都是一個用戶的信息,意思如下圖解釋:

圖片.png

上面第二個密碼“x” ,在以前版本的 linux 系統中存放著加密后的用戶口令,雖然這個字段存放的只是用戶口令的加密串,但是由于 /etc/passwd 文件對所有用戶都可讀,所以這仍是一個安全隱患。因此,現在許多Linux 版本都使用了shadow技術,把真正加密后的用戶口令存放到 /etc/shadow 文件中,而在 /etc/passwd 文件的口令字段中只存放一個特殊的字符,例如用“x”或者“*”來表示。

那么結合這個文件,我們可以再次說明一下 Linux 系統中的幾個用戶 UID:

超級用戶 UID 0 :

圖片.png

系統用戶 UID 1-999 :

圖片.png

普通用戶 UID 1000以上:

圖片.png

特殊的來賓賬號:

圖片.png

nobody這個的帳號UID為65534,這個用戶的權限會進一步的受到限制,一般用于實現來賓帳號。

系統是根據 UID 來認定用戶的權限而不是名字。如果把自己創建的用戶 UID 改成 0 ,那么系統登錄會把用戶視為管理員用戶。

2.2 Linux 的用戶組

什么是用戶組?

用戶組是具有相同特征用戶的邏輯集合, 有時我們需要讓多個用戶具有相同的權限,比如查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問授權。

如果有10個用戶的話,就需要授權10次,顯然這種方法不太合理;另一種方法是 建立一個組,讓這個組具有查看、修改此文件的權限,然后將所有需要訪問此文件的用戶放入這個組中,那么所有用戶就具有了和組一樣的權限,這就是用戶組。

將用戶分組是Linux 系統中對用戶進行管理及控制訪問權限的一種手段,通過定義用戶組,在很大程度上簡化了管理工作。

每個用戶都有一個用戶組,系統可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統對用戶組的規定有所不同,如Linux下的用戶屬于與它同名的用戶組,這個用戶組在創建用戶時同時創建。每個用戶在被創建時均會創建一個默認組(其GID與UID相同,叫作基本組或初始組),而后加入的組叫作擴展組或附加組。

GID

GID 是用戶組的編號,可以將多個用戶加入到某個組中,方便指派任務或工作。 和 UID 一樣也是有一個對應的文件保存信息,用戶組名和GID相關信息可以在文件 /etc/group 查看到:

圖片.png

每行的用戶組的信息都以 “:” 作為分割符,劃分為4個字段,每個字段所表示的含義如下:

組名:密碼:GID:該用戶組中的用戶列表

每一行都是一個用戶組的信息,組中的用戶列表只包括附加用戶,如果該組是某個用戶的初始組,則這個用戶不會出現在這個用戶列表中,如下圖:

圖片.png

2.3 文件歸屬者修改命令

相對于修改權限來說,修改歸屬者沒那么常用,簡單了解一下。

使用命令“chown”修改一個文件的所屬者和所屬:

chown  [參數]  [用戶名.< 組名 >]  [文件名/目錄] 
chown [-cfhvR] [--help] [--version] user[:group] file...

簡單測試如圖:

圖片.png

一些常用的指令我們下一篇講 Shell 命令的時候都會有說明。

三、Linux 文件系統簡介

實際上,還需要說明一個文件系統的概念可以說明,文件系統用來組織計算機的文件和資料的系統。

此部分對于初學者,了解一下就好,后面如果真的遇到文件類型的問題再看一篇才好理解。

操作系統就是處理各種數據的,這些數據在硬盤上就是二進制,我們想要看懂這些數據,要有一個翻譯器,將這些二進制的數據還原為人類能看懂的文件形式,這個工作就是由文件系統來完成的,文件系統的目的就是實現數據的查詢和存儲。

由于使用場合、使用環境的不同,Linux有多種文件系統,不同的文件系統支持不同的體系。文件系統是管理數據的,而可以存儲數據的物理設備有硬盤、U 盤、SD卡、NAND FLASH、NOR FLASH、網絡存儲設備等。不同的存儲設備其物理結構不同,不同的物理結構就需要不同的文件系統去管理,比如管理 NAND FLASH 的話使用 YAFFS 文件系統,管理硬盤、SD 卡的話就是 ext 文件系統等等。

比如在我們使用 windows 的時候,格式化一個 U 盤,就需要選擇文件系統,如下圖:

圖片.png

3.1 Linux文件系統類型

和 Windows 類似,在 Windows 下有 FAT32、NTFS 和exFAT 這樣的文件系統,在Linux下又有哪些文件系統呢,Linux 下的文件系統主要有 ext2、ext3、ext4 等文件系統。

Linux 還支持其他的 UNIX文件系統,比如XFS、JFS、UFS 等,也支持Windows的 FAT文件系統和網絡文件系統 NFS等。

  • ext2

    具有極快的速度和極小的CPU占用率,可用于硬盤和移動存儲設備,ext2是Linux早期的文件系統,但是隨著技術的發展 ext2文件系統已經不推薦使用了。

  • ext3

    增加日志功能,可回溯追蹤,完全兼容 ext2文件系統,ext3支持大文件;

  • ext4

    ext4 相比與ext3提供了更佳的性能和可靠性,并且功能更豐富,ext4 向下兼容 ext3 和 ext2,因此可以將 ext2 和 ext3 掛載為 ext4。

    日志式文件系統,支持1EB(1024*1024TB),最大單文件16TB,支持連續寫入可減少文件碎片。

在終端中輸入如下命令可查詢當前磁盤掛載的文件系統:

df   -T –h

比如查詢我安裝的 Ubuntu 使用的哪個版本的文件系統如下圖:

圖片.png

上圖中最后一個項目是“掛載點”,在 Linux 下創建一個分區并且格式化好以后我們要將其“掛載”到一個目錄下才能訪問這個分區,這個我們后期會有對應介紹。

結語

本文我們認識了 Linux 的 7 種文件類型,知道如何查看文件類型,以及對文件的權限管理方式。

然后還任何了一下 Linux 的用戶系統,知道了 用戶 與 用戶組的概念,記住兩個概念 UID 和 GID: 用戶ID 和 用戶組 ID。

然后知道了通過兩個文件 /etc/passwd 和 /etc/group 可以查看當前系統下所有用戶 和用戶組的信息。

最后還簡單的介紹了一下 Linux 的文件系統。

這些都是 Linux 的基礎知識,內容簡單不難理解,但是是學習嵌入式 Linux 入門的必須要知道了解的內容,在下一篇文章,我們開始學習常用的 Shell 命令。

本文就到這里,謝謝大家!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    4993

    文章

    18357

    瀏覽量

    289923
  • Linux
    +關注

    關注

    87

    文章

    11001

    瀏覽量

    206847
  • 文件系統
    +關注

    關注

    0

    文章

    272

    瀏覽量

    19707
  • Shell
    +關注

    關注

    1

    文章

    358

    瀏覽量

    22928
收藏 人收藏

    評論

    相關推薦

    詳細講解嵌入式Linux支持的多種文件系統

    Linux支持多種文件系統類型,在嵌入式開發中上常用有:ROMFS、JFFS2、NFS、CRAMFS、YAFFS、UBIFS等。 JFFS文件系統
    的頭像 發表于 12-19 07:24 ?4666次閱讀

    嵌入式Linux文件系統怎么制作?

    嵌入式Linux操作系統越中文件系統作為操作系統的重要組成部分,用于控制對數據文件及設備的存取
    發表于 04-06 07:39

    嵌入式文件系統概述

    的組織形式?!?b class='flag-5'>文件系統為操作系統提供了必要的用于創建文件、刪除文件、讀文件和寫文件相應的
    發表于 11-05 06:29

    Linux快速入門文件類型文件屬性

    嵌入式Linux應用程序開發詳解》第一章 Linux 快速入門1.3.1 文件類型文件屬性1
    發表于 12-17 07:58

    Linux文件系統課程

    本章學習目標理解什么是文件系統了解文件系統工作原理理解Fedora Core Linux文件系統的結構掌握Fedora Core Linux
    發表于 04-10 17:07 ?0次下載

    構造嵌入式Linux文件系統

    文件系統Linux 系統最基本的資源。本文介紹了一種嵌入式Linux 文件系統的構造過程,較為
    發表于 08-07 09:11 ?10次下載

    嵌入式Linux文件系統的研究與應用

    隨著嵌入式系統的發展,使用Linux操作系統搭建的嵌入式平臺得到了越來越廣泛的應用。文件系統
    發表于 08-13 08:59 ?16次下載

    詳解嵌入式linux文件類型

    學習嵌入式linux系統開發,對于linux文件類型需要有很深的理解。Linux
    發表于 06-11 16:29 ?900次閱讀
    詳解<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>文件類型</b>

    學習嵌入式linux系統開發,文件類型一定要分清

    學習嵌入式linux系統開發,對于linux文件類型需要有很深的理解。Linux
    發表于 07-05 07:01 ?740次閱讀

    嵌入式linux系統開發幾大文件類型

      同學們學習嵌入式linux系統開發的熱情日益旺盛,而對于linux文件類型需要有很深的理解。Linu
    發表于 08-06 16:28 ?259次閱讀

    嵌入式linux系統開發文件類型

      隨著計算機嵌入式系統開發的不斷普及,越來越多的人開始學習計算機嵌入式系統開發,學習嵌入式linux
    發表于 08-27 11:31 ?311次閱讀

    你知道嵌入式linux文件類型?

    學習嵌入式linux系統開發,對于linux文件類型需要有很深的理解。Linux
    發表于 05-04 17:09 ?607次閱讀
    你知道<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>文件類型</b>?

    Linux嵌入式文件系統如何構建

    Linux支持多種文件系統,同樣,嵌入式Linux也支持多種文件系統。雖然在嵌入式
    發表于 06-18 09:23 ?887次閱讀

    嵌入式Linux系統移植-(Linux文件系統

    上的組織形式?!?b class='flag-5'>文件系統為操作系統提供了必要的用于創建文件、刪除文件、讀文件和寫文件相應的
    發表于 11-02 12:51 ?16次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統</b>移植-(<b class='flag-5'>Linux</b><b class='flag-5'>文件系統</b>)

    Linux 下的make 工具和 Makefile

    文件結構) 嵌入式 Linux 入門(二、Linux 文件系統、
    的頭像 發表于 06-22 10:45 ?583次閱讀
    <b class='flag-5'>Linux</b> 下的make 工具和 Makefile
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>