linux基礎(chǔ)學(xué)習(xí)(3)-權(quán)限管理

權(quán)限管理的重要性

linux是多用戶多任務(wù)分時系統(tǒng),不是單單創(chuàng)建多個用戶、多個群組就可以了。還需要對一個文件的所有權(quán)進行定義才能讓各個用戶相互獨立。而最根本的就是對文件以及目錄的權(quán)限管理了。

目錄與文件

既然權(quán)限管理最主要的就是管理目錄與文件的權(quán)限,那么我們首先就先講講linux的目錄與文件。

linux下文件和目錄的命名規(guī)則如下:

  1. 除了反斜杠外,所有字符都可以使用但是一些特殊的字符應(yīng)該避免使用。
  2. 目錄名和文件名長度限制在255個字符內(nèi)
  3. 在linux中目錄和文件名是區(qū)分大小寫的
  4. 與windows不同,文件的擴展名對于linux沒有特殊的含義,雖然也使用擴展名來指代類型,但是其打開以及運行等不依賴擴展名。
  5. 在linxu中萬物皆為文進,包括硬件設(shè)備等,在后續(xù)的學(xué)習(xí)中會學(xué)到

目錄與文件相關(guān)命令

cd切換目錄

cd [相對路徑或絕對路徑]
changeDirectory 用于切換工作目錄

其中有一些特殊的符號:

特殊符號 作用
~ 代表當(dāng)前登陸用戶的主目錄
~用戶名 表示切換至指定用戶的主目錄
- 代表上次所在的目錄
. 代表當(dāng)前目錄
.. 代表上級目錄

這里補充一個知識點,我們在使用命令行的時候有一個命令提示符其會提示我們所在的目錄:

[root@localhost ~]#
root代表當(dāng)前用戶的用戶名
@是分隔符
localhost是當(dāng)前系統(tǒng)主機名的簡寫
~就是一個路徑表示,代表當(dāng)前用戶的家目錄對于root就是/root

表示該用戶是root用戶,而$表示該用戶是普通用戶

pwd答應(yīng)工作目錄

pwd
PrintWorkingDirectory 打印工作目錄

ls列出目錄下目錄及文件

ls [選項] [目錄路徑]
list 作用是列出目錄路徑下的所有目錄和文件,如果不加路徑則默認為當(dāng)前路徑

| 選項 | 功能 |
| -a | 顯示全部文件,包含隱藏文件(以.開頭的文件) |
| -h | 以人們易讀的方式顯示文件和目錄大小即1KB 23MB等 |
| -i | 顯示inode節(jié)點信息 |
| -l | 使用長格式列出文件和目錄信息 |
| -R | 連同子目錄內(nèi)容一起列出來 |
| --color=never/always/auto | 以顏色區(qū)分文件,never表示不顯示顏色,always表示顯示顏色,auto表示讓系統(tǒng)依據(jù)配置來判斷是否顯示顏色以及什么文件顯示什么顏色 |

該命令可以說是linux下用的最多的命令,通常我們會使用ls -al 來列出目錄下文件的詳細信息。
大部分發(fā)行版用不同的顏色來區(qū)分不同種類的文件。

[hncjygd@bogon tmp]$ ls -al
總用量 4
drwxr-xr-x.  3 hncjygd wheel   31 11月  4 16:54 .
drwx------. 21 hncjygd wheel 4096 11月  3 23:24 ..
drwxr-xr-x.  3 hncjygd wheel   18 11月  4 16:54 test
-rw-r--r--.  1 hncjygd wheel    0 11月  4 16:54 test1

上面就是列出的文件的信息信息,默認包含七列:

  1. 第一列:規(guī)定了不同用戶對文件所擁有的權(quán)限
  2. 第二列:引用計數(shù),代表該文件的硬連接個數(shù),對于目錄則代表該目錄有多少個一級子目錄
  3. 第三列:文件的所有者
  4. 第四列:文件所屬組
  5. 第五列:大小,默認單位字節(jié),可以添加-h選項來增加可讀性
  6. 第六列:文件修改時間,狀態(tài)或數(shù)據(jù)修改都會更改這個時間
  7. 第七列:文件名或目錄名

mkdir創(chuàng)建目錄

mkdir [-mp] 目錄名
-m 用于手動配置所創(chuàng)建的目錄的權(quán)限,而不是使用默認權(quán)限 mkdir -m 711 test1
-p 遞歸創(chuàng)建所有目錄 mkdir test2/test3

rmdir刪除空目錄

rmdir [-p] 目錄名
-p 遞歸刪除空目錄
這個命令不常用,因為只能刪除空目錄,通常我們都是使用rm命令來刪除目錄。
但是當(dāng)你只想刪除空目錄的時候可以使用mkdir來確保非空目錄不被刪除

touch 創(chuàng)建新文件或修改文件時間戳

Linux系統(tǒng)下,每個文件主要擁有三個時間參數(shù)(可以通過stat命令進行查看),分別是文件的訪問時間、數(shù)據(jù)修改時間以及狀態(tài)修改時間:

  • 訪問時間:(AccessTime atime) 只要文件的內(nèi)容被讀取,訪問時間就會更新(cat vim等操作都會改變這個時間)
  • 數(shù)據(jù)修改時間:(Modify Time mtime) 當(dāng)文件的內(nèi)容數(shù)據(jù)發(fā)生變化,修改時間就會更新
  • 狀態(tài)修改時間:(Change Time ctime) 但文件的狀態(tài)發(fā)生變化,該時間就會更新(比如文件權(quán)限改變等,mtime更新ctime一定也隨之更新,反之則不一定)

touch [選項] 文件名
如果文件名的文件不存在則創(chuàng)建一個空文件。

選項 含義
-a 只修改文件的訪問時間
-c 僅修改文件時間參數(shù),如果文件不存在則不建立新文件(與其他參數(shù)配合使用)
-d 后面跟想要修訂的日期(可以不用當(dāng)前的日期),他會將atime mtime時間都改為指定的時間
-m 只修改文件的數(shù)據(jù)修改時間
-t 命令后面可以跟想要修改的日期,時間格式為[[CC]YY]MMDDhhmm[.SS]

說明:

  1. 其中的 a m 參數(shù)只能將文件修改為當(dāng)前時間
  2. 如果想要修改為其他時間需要加t參數(shù)后跟時間 其中MMDDhhmm是必須的,其他可選
  3. 狀態(tài)修改時間無法被改變,因為理論上修改時間也會導(dǎo)致狀態(tài)的變化

ln建立鏈接(軟鏈接 硬鏈接)

要想知道什么是鏈接,首先需要知道linux的ext文件系統(tǒng)是如何工作的。ext文件系統(tǒng)會把分區(qū)主要分為兩個部分:小部分用于保存inode信息,大部分用于保存block信息。
inode的默認大小是128Byte或256Byte,其記錄了以下內(nèi)容:

  1. 文件的字節(jié)數(shù)
  2. 文件擁有者的UID
  3. 文件的GID
  4. 文件的權(quán)限
  5. 文件的時間戳:atime mtime ctime
  6. 鏈接數(shù):即有多少個文件名指向這個inode
  7. 文件數(shù)據(jù)block的位置

我們可以通過stat命令來查看某個文件的inode信息,可以看到除了文件名外基本上文件的所有信息都保存在inode中了(文件名是記錄在父目錄的block中的)。在Linux系統(tǒng)內(nèi)部并不使用文件名,而是使用文件的inode號碼來識別文件的,對于系統(tǒng)來說文件名只是inode號碼便于識別的一個別稱。用戶通過文件名打開文件的具體步驟為:首先系統(tǒng)找到這個文件名對應(yīng)的inode號碼,其次通過inode號碼獲取inode信息,最后根據(jù)inode信息找到文件數(shù)據(jù)所在的block,讀出數(shù)據(jù)。

現(xiàn)在我們來說明什么是硬鏈接和軟鏈接:
硬連接:一般情況下,文件名和inode號碼是一一對應(yīng)關(guān)系,每個inode號碼對應(yīng)一個文件名。但是Linux系統(tǒng)允許多個文件名指向同一個inode號碼。即可以用不同的文件名來訪問同樣的內(nèi)容,對文件內(nèi)容的修改會影響所有文件,而且刪除任意一個文件名,不影響另一個文件名過的訪問。這里面順便順便說一下目錄文件的鏈接數(shù),創(chuàng)建文件的時候默認會生成.和..兩個特殊的目錄代表當(dāng)前文件夾以及父文件夾,其實際上就是當(dāng)前文件的硬鏈接以及父文件的硬鏈接。所以任何一個目錄的硬鏈接總數(shù)總是等于2加上它的子目錄總數(shù)。
軟鏈接:軟鏈接類似于windows的快捷方式。在linux中的作用機制是:文件A和文件B的inode號碼雖然不一樣,但是文件A的內(nèi)容是文件B的路徑,讀取文件A時,系統(tǒng)會自動訪問文件B,這個時候稱文件A是文件B的軟鏈接或者叫符號鏈接。當(dāng)我們刪除A的時候并不影響B(tài)文件,但是當(dāng)我們刪除B的是時候再打開文件A就會報錯。這就意味著文件A依賴于文件B而存在。并且因為文件A指向文件B的文件名,而不是文件B的inode號碼,所以創(chuàng)建文件B的軟鏈接,文件B的inode鏈接數(shù)不會因此發(fā)生變化。

創(chuàng)建鏈接:

ln [選項] 源文件 目標(biāo)文件
-s:建立軟鏈接,不加任何選項為建立硬鏈接
-f:強制,如果目標(biāo)文件已經(jīng)存在,則刪除目標(biāo)文件后再建立鏈接文件

硬鏈接的特點:

  1. 不論是修改源文件,還是修改硬鏈接文件,另一個文件中的數(shù)據(jù)都會發(fā)生改變
  2. 不論是刪除源文件,還是刪除硬鏈接文件,只要還有一個文件存在,這個文件都可以被訪問
  3. 硬鏈接不會建立新的inode信息
  4. 硬鏈接不能跨分區(qū)建立,因為在不同的文件系統(tǒng)中,inode號是重新計算的。
  5. 硬鏈接不能鏈接目錄,因為如果給目錄建立硬鏈接,那么不僅目錄本身需要重新建立,目錄下所有的文件也需要建立硬鏈接,這太過復(fù)雜。

而軟鏈接除了在刪除源文件時會導(dǎo)致軟鏈接失效外,其可以跨分區(qū)建立,可以建立目錄的軟鏈接等優(yōu)點,所以在實際應(yīng)用中,軟鏈接使用的較多。

cp復(fù)制文件和目錄

cp [選項] 源文件 目標(biāo)文件

選項 含義
-d 如果源文件為軟鏈接,則復(fù)制出的目標(biāo)文件也為軟鏈接
-p 復(fù)制后目標(biāo)文件保留源文件的屬性(包括UID GID 權(quán)限和時間)
-r 遞歸復(fù)制,用于復(fù)制目錄
-a 相當(dāng)于-dpr的集合
-i 如果目標(biāo)存在則會詢問是否覆蓋
-l 把目標(biāo)文件建立為源文件的硬鏈接文件,而不是復(fù)制源文件
-s 把目標(biāo)文件建立為源文件的軟鏈接文件,而不是復(fù)制源文件

需要注意的問題:

  1. 源文件可以有多個,這種情況下,目標(biāo)文件必須時目錄才可以
  2. 復(fù)制可以是文件,也可以是目錄,要復(fù)制目錄需要加-r

rm 刪除文件或目錄

rm [選項] 文件或目錄

選項 含義
-f 強制刪除,系統(tǒng)不會詢問而是直接刪除
-i 與-f相反,在刪除前,系統(tǒng)提示是否刪除
-r 遞歸刪除,主要用于刪除目錄

注意:

  1. rm命令是一個具有破壞性的命令,其會永久刪除文件或目錄
  2. 刪除成功后系統(tǒng)不會給出提示,這是linux 的一個重要思想,沒有提示就意味著成功

mv移動文件或改名

mv [選項] 源文件 目標(biāo)文件

選項 含義
-f 強制覆蓋,即使目標(biāo)文件已經(jīng)存在,不詢問直接覆蓋
-i 與上面相反,如果目標(biāo)文件存在,詢問是否覆蓋
-n 如果目標(biāo)文件已經(jīng)存在,不覆蓋也不詢問
-v 顯示文件或目錄的移動過程
-u 若目標(biāo)文件已經(jīng)存在,但兩者相比,源文件更新,則會對目標(biāo)文件進行升級

注意:

  1. mv命令可以移動目錄,而且不需要加-r的遞歸

權(quán)限

linux 多用戶權(quán)限控制的本質(zhì),就是讓不同的用戶能夠訪問的文件不同。而root可以訪問任何文件,所以就擁有至高無上的權(quán)力。而如何規(guī)定一個用戶能夠訪問那些文件,而不能訪問那些文件,這些都由文件自己說的算,這就是文件的權(quán)限。

使用ls -l可以查看文件的長屬性:

drwxrwxr-x.  5 hncjygd wheel       46 11月  1 20:31 study
-rw-rw-r--.  1 hncjygd wheel       23 11月  3 21:12 test
-rw-r--r--.  1 hncjygd grouptest    0 11月  2 22:00 test2
-rw-rw-r--.  1 hncjygd wheel        0 11月  2 22:01 test3

其中最重要的參數(shù)就是第一個,代表了文件類型和權(quán)限。

drwxrwxr-w
其中分為四個部分:
首字母-文件類型
后面9個字符分為三組分別代表:擁有者、所屬用戶組、其他

其中首字母由以下取值:

  1. d 代表目錄
  2. - 代表文件
  3. l 代表一個軟鏈接(硬鏈接還是-與文件無異)
  4. b 代表塊設(shè)備如磁盤等
  5. c 代表字符設(shè)備如鼠標(biāo)、鍵盤等需要連續(xù)串行讀寫的設(shè)備
  6. s 代表套接字文件
  7. p 代表命名管道文件

后面的由rwx組成的分別代表擁有者、所屬組、其他用戶的權(quán)限:

  1. r - 代表讀
  2. w - 代表可寫
  3. x - 代表可運行
  4. - 代表不具有某個權(quán)限
rwx權(quán)限 對文件的作用
r-讀權(quán)限 表示可讀取文件中的實際內(nèi)容,即可以對文件執(zhí)行cat more less head tail等文件查看操作
w-寫權(quán)限 表示可以編輯文件中的內(nèi)容,即可以執(zhí)行vim echo等文件數(shù)據(jù)修改命令
x-執(zhí)行權(quán)限 表示該文件可以運行,當(dāng)然具體是否能夠正確運行,還需要看代碼
rwx權(quán)限 對目錄的作用
r-讀權(quán)限 表示具有讀取目錄結(jié)構(gòu)列表的權(quán)限,即執(zhí)行l(wèi)s
w-寫權(quán)限 對于目錄來書w權(quán)限是最高的權(quán)限,擁有w權(quán)限就可以在目錄中:建立新的文件或目錄,刪除已經(jīng)存在的目錄和文件(無論文件或目錄的權(quán)限是如何),對已存在的文件或目錄移動或重命名。
x-執(zhí)行權(quán)限 代表用戶可以進入該目錄,即執(zhí)行cd命令

權(quán)限修改

chgrp修改文件和目錄的所屬組

chgrp [-R] 所屬組 文件名/目錄名
chgrp - change group
-R用于更改目錄的所屬組,表示更改連同目錄中所有文件的所屬組信息

chown修改文件和目錄的所有者和所屬組

chown [-R] 所有者[:所屬組] 文件或目錄
chown - change owner
-R 表示連同目錄中的所有文件也更改
chown可以同時更改所有者和所屬組,其中使用分號隔開,也可以單獨更改所有者。
也可以使用 chown -R :所屬組 文件或目錄 來單獨更改所屬組,但是通常還是使用chgrp命令為好

chmod修改文件或目錄的權(quán)限

我們知道linux中,文件的基本權(quán)限由9個字符組成,而chmod就是可以修改則9個字符的命令。其修改方式有2中:數(shù)字和符號,其中又以數(shù)字修改最常用。

使用數(shù)字修改:

chmod [-R] 權(quán)限值 文件名/目錄名
-R用于目錄,表示連同目錄中的文件一同修改
權(quán)重值:其中 r=>4 w=>2 x=>1 其實就是二進制數(shù) rwx就是7 r-x就是5 -wx就是3 等
chmod 755 example 就是將example文件權(quán)限設(shè)置為 rwxr-xr-x

使用字符修改文件權(quán)限:

既然文本的基本權(quán)限是三個用戶身份(所有者 所屬組 其他人) 搭配三種權(quán)限(rwx)。所以可以使用u g o來代表三個用戶身份 a表示全部,rwx來表示三種權(quán)限,以此來更改權(quán)限
chmod u=rwx,go=rx example 等同于 chmod 755 example

從上面的對比可知,數(shù)字修該更加方便。

umask修改新建文件文件夾的默認權(quán)限

在新建文件或文件夾的時候,系統(tǒng)會給與默認的權(quán)限.(可以直接運行umask來查看但前用戶的默認權(quán)限),通常情況下 root的默認權(quán)限是0022,普通用戶的是0002.

0022對應(yīng)的就是----w--w-,實際上系統(tǒng)并不直接使用umask默認權(quán)限為文件或目錄的初始權(quán)限,而是進行了操作:

文件/目錄的初始權(quán)限: 文件/目錄的最大默認權(quán)限-umask權(quán)限
文件的默認最大權(quán)限是666,因為x權(quán)限是文件的最高權(quán)限,必須手動賦予
目錄的默認權(quán)限是777
對于root用戶:文件默認權(quán)限666-022=644即rw-r--r-- 目錄的默認權(quán)限777-022=755即rwxr-xr-x
對于普通用戶:文件默認權(quán)限666-002=664即rw-rw-r-- 目錄的默認權(quán)限777-002=775即rwxrwxr-x

可以通過umask命令來直接修改默認權(quán)限:

umask 033

注意:這種修改只是臨時有效,關(guān)閉終端后就不再生效了,如果想要永久生效,需要更改配置文件 /etc/profile.這個配置文件是一個sh腳本文件,是用來配置環(huán)境變量的,其會在一個用戶登陸系統(tǒng)時執(zhí)行。其中有一段是用來定義umask的。

# /etc/profile

# Set our umask
umask 022
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容