【Linux】掌權如鷹:Linux許可權天空的翱翔秘籍
引言
在Linux的廣闊天空中,許可權管理猶如一隻翱翔的雄鷹,掌控著系統的安全與秩序。掌握Linux許可權,不僅能讓你的系統管理更加得心應手,還能有效防止未授權訪問和資料洩露。本文將帶你深入探索Linux許可權的奧秘,助你成為許可權管理的高手。
一、Linux許可權管理基礎
1.1 許可權的概念以及重要性
Linux系統是一個多使用者作業系統,為了保護系統資源不被未授權的使用者訪問或破壞,引入了許可權管理機制。許可權管理確保系統資源的安全性和穩定性,防止未經授權的訪問和修改。換言之,一件事是否允許被你做,這就叫許可權。
1.2 不同使用者類別的許可權
1.2.1 使用者的分類
在Linux中使用者分為兩類:
• 超級使用者(root):可以在Linux系統下做任何事情,不受限制。命令提示符為“#”。 • 普通使用者:在Linux系統下做有限的事情。命令提示符為“$”。
1.2.2 使用者的切換
由於普通使用者在進行操作時可能會受到許可權的限制,所以這時候進行使用者的切換說不定就可以操作成功。那普通使用者和超級使用者之間是如何切換的呢?
普通使用者切超級使用者
語法:su / su –說明:讓普通使用者切換到超級使用者,切換時會提示普通使用者輸入 root 的密碼(tips : 密碼輸入時沒有回顯)。
超級使用者切普通使用者
語法:su [使用者名稱]說明:讓 超級使用者/普通使用者 切換到普通使用者,由於超級使用者許可權很高,所以不需要輸入密碼就可以切換,而普通使用者切換就需要輸入對方的密碼。
這裡需要注意的是,我們使用su來切換使用者,只是進行了身份切換,路徑並沒有變,如果想改變路徑,我們可以使用su -(本質上是重新登陸了)。
切換使用者就好比給自己套了一層衣服,一層一層疊buff。那如何脫掉衣服呢?我們可以使用exit或者Ctrl+D來退出。

1.2.3 sudo 指令
語法:sudo 指令X功能:讓普通使用者透過sudo對指令X進行提權,以超級使用者的身份去執行該命令。那這個指令有點逆天,難道說我們普通人也能翻身有超能力了?並沒有那麼簡單,我們在剛開始adduser的時候,並沒有在白名單裡,系統預設不相信我們。只有root把我們加到白名單裡,我們才能用sudo進行提權。如下圖,hjz使用者未被加入到sudoers file。
1.3 許可權的表示方法
在linux中我們如何表示許可權呢?其實很簡單,只需要記住角色+屬性即可。
我們可以透過 ls – l 指令來檢視當前目錄下的所有檔案。


1.3.1 Linux中的角色
在Linux中共分三個角色:
• 擁有者(u — User):檔案和檔案目錄所有者。 • 所屬組(g — Group):檔案和檔案目錄所有者所在的組的使用者。 • 其他人(o — Others):其他使用者。

其中黃色框起來的是擁有者,紫色框起來的是所屬組,其他人並未出現在屬性中。當用戶操作檔案時,它會先看使用者是不是擁有者,如果不是再看是不是所屬組,如果都不是那就是其他人。
還有一個比較重要的一點,一次只能匹配一個角色。例如:

此時我們擁有者是沒有寫許可權的,但是所屬組有,那我們可不可以寫檔案呢?答案是不能,因為一次智慧匹配一個角色,我們root匹配上了擁有者。(這裡由於我拿root來演示,所以還會寫進去,普通使用者是做不到的)
1.3.2 檔案型別

如圖所示,藍色框起來的部分就是代表著檔案的型別,其中檔案型別分為以下幾種:
• -
:普通檔案• d
:資料夾• l
:軟連結(類似Windows的快捷方式)• b
:塊裝置檔案(例如硬碟、光碟機等)• p
:管道檔案• c
:字元裝置檔案(例如螢幕等序列埠裝置)• s
:套介面檔案
1.3.3 基本許可權

主播主播,有沒有能代表檔案的基本許可權的字元推薦一下?有的兄弟有的,像這樣的字元一共有九位。如圖所示,紅色框起來的九個字元代表著檔案的基本許可權。
前三位代表著擁有者的許可權、中間三位代表所屬組的許可權,後三位代表其他人的許可權。
每三位都分別由r、w、x來控制,如果有該許可權就標記為該字母,否則標記為-。
• r
(讀/4):Read,對檔案而言,具有讀取檔案內容的許可權;對目錄來說,具有瀏覽該目錄資訊的許可權。• w
(寫/2):Write,對檔案而言,具有修改檔案內容的許可權;對目錄來說,具有刪除或移動目錄內檔案的許可權。• x
(執行/1):Execute,對檔案而言,具有執行檔案的許可權;對目錄來說,具有進入目錄的許可權。• -
:表示不具有該項許可權。
二、許可權的修改
首先宣告一點,只有檔案擁有者和超級使用者才可以修改檔案許可權。
2.1 chmod 指令
語法:chmod [引數] 許可權 檔名功能:設定檔案的訪問許可權。常用選項:-r:遞迴修改目錄檔案的許可權。 其中u代表擁有者、g代表所屬組、o代表其他人,透過+、-來增減。一次性可以修改多個許可權。
這裡要介紹另一個表示許可權的方法——八進位制數值表示法。
2.1.1 八進位制數值表示法
• 每個許可權位(讀、寫、執行)可以用一個八進位制數字來表示:
• 讀(r):4 • 寫(w):2 • 執行(x):1 • 空(-):0 • 例如,許可權 rwxr-xr--
可以表示為八進位制數值754(rwx:4+2+1=7、r-x:4+0+1=5、r--:4+0+0=4)
。
所以我們命令操作也可以這麼寫:chmod [想改成的八進位制數值] 檔案

2.2 chown 指令
語法:chown [引數] 使用者名稱 檔名功能:修改檔案的擁有者。例項:chown hjz hello.txt:將檔案hello.txt的擁有者改為hjz。
2.2 chgrp 指令
語法:chgrp [引數] 使用者組名 檔名功能:修改檔案或目錄的所屬組。例項:chgrp hjz hello.txt:將檔案hello.txt的所屬組改為hjz。
2.3 umask 指令
我們在建立一個新的檔案或目錄的時候有沒有初始預設許可權呢?先給出答案,是有的,並且:
• 預設給普通檔案的起始許可權是 666。
• 預設給目錄的起始許可權是 777。

我們建立了一個檔案和目錄,但發現並不是666和777,而是644和755,這是為什麼呢?這就要提出一個叫許可權掩碼的東西了。
2.3.1 許可權掩碼
首先如何檢視許可權掩碼?透過umask指令。
語法:umask 許可權值功能:檢視或修改許可權掩碼。如果沒輸入許可權值就是檢視當前掩碼。
從圖中我們可以看到我的許可權掩碼是022(第一個0代表是八進位制)。可這又和那個有什麼關係呢,也不一樣啊。彆著急,我們慢慢分析。
2.3.2 如何獲得最終許可權
首先我們輸入umask獲得許可權掩碼,然後再透過公式最終許可權 = 初始許可權 & (~許可權掩碼)。
拿我的舉例

三、目錄的許可權以及粘滯位
3.1 目錄的許可權
• 可執行許可權(x):如果目錄沒有可執行許可權,則無法cd到目錄中。 • 可讀許可權(r):如果目錄沒有可讀許可權,則無法用ls等命令檢視目錄中的檔案內容。 • 可寫許可權(w):如果目錄沒有可寫許可權,則無法在目錄中建立檔案,也無法在目錄中刪除檔案。
有了上面的說明,我們首先要知道,檔案的刪除並不是由檔案本身決定,而是它所在的目錄決定。
當我們在建立一個新使用者時,系統會在/home自動建立一個使用者的家目錄。

我們可以觀察到這個目錄對others的許可權是0,這說明其他人不可以進入我的家目錄,更不可能增刪查改檔案。
我們有時需要進行多個使用者之間的檔案資料共享,這個時候就需要超級使用者在根目錄下建立一個共享的檔案,並且把其他人的許可權改為7,保證普通使用者可以進入目錄,並且可以檢視和建立檔案。
但是問題來了,如果有內鬼怎麼辦,別忘了能建立就可以刪除啊。就比如wow辛辛苦苦寫的檔案,cyy不想幹了,把檔案刪了。這種情況該怎麼辦呢,刪除和建立檢視綁在一起了,這個時候粘滯位就派上作用了。
3.2 粘滯位
如何使用粘滯位呢?很簡單,只需要chmod +t 即可。
語法:chmod +t功能:使該目錄下的檔案只能由超級管理員、該目錄的所有者或該檔案的所有者刪除。例項:我們根目錄下系統自帶了一個tmp目錄供我們實現多使用者檔案資料共享操作。