🚩紙上得來終覺淺, 絕知此事要躬行。
🌟主頁:June-Frost
🚀專欄:Linux入門
🔭【從零開始學習Linux】系列均屬于Linux入門,主要包含Linux操作系統下的指令、操作、權限以及開發工具,使得擁有基本編寫代碼的能力。
🔥該文章主要了解Shell外殼(理論)及用戶權限,其中用戶權限將分為兩部分進行總結敘述。
目錄:
- 🔭 操作系統的基本結構和運行原理
- 🔭 用戶權限
- ?? 用戶的分類
- ?? 身份切換(su指令)
- ?? 短暫提權
- 🔭 權限管理
- ?? 更改權限
- ?? 結語
🔭 操作系統的基本結構和運行原理
?內核和外殼是操作系統的兩個主要組成部分。
?內核是操作系統的核心,負責管理系統的硬件和軟件資源。它直接與硬件設備進行交互,控制硬件設備、管理內存、提供硬件接口、處理基本I/0、管理文件系統等。此外,內核還為程序分配內存和CPU時間,以及提供系統調用接口,以便應用程序能夠使用操作系統的功能。
?外殼是用戶與內核交互的界面,它提供了用戶與操作系統的交互方式。它實際上是一個命令解釋器,解釋用戶輸入的命令并送到內核執行。它還提供了一些基本的命令和工具,例如文件管理、進程管理、設備管理等。此外,外殼還提供了圖形界面(例如windows系統),使得用戶可以通過圖形界面與操作系統進行交互。
?內核與外殼協同工作,使得計算機能夠正常運轉,并為應用程序提供穩定、高效的運行環境。
重點來了??
?對于Linux系統來說,其內核本身只是一個基礎組件。由于考慮到操作系統的易用性(用戶不能直接訪問操作系統)和安全性(防止用戶非法操作導致操作系統受到損害),于是shell外殼就有了存在的意義,它是用戶與內核之間的橋梁,為用戶提供操作系統的接口。Shell外殼可以理解為用戶與操作系統之間的交互界面,它接收用戶輸入的指令并提交給內核處理,同時將處理結果反饋給用戶。
?Shell外殼是一個用C語言編寫的程序,在系統啟動期間,它都會存在。當用戶輸入有風險,自定義的指令時,Shell會創建子進程去執行該操作。
?在CentOS 7 中 ,Shell通過Bash具體實現。
🔭 用戶權限
?? 用戶的分類
? Linux下一般有兩種用戶:
- 超級管理員:具有一切操作權力,其用戶名為root。
- 普通用戶:為了使用Linux系統資源而建立的,通常由管理員創建,權限受限。
?? 身份切換(su指令)
- 語法:
su [用戶名]
功能:變更用戶身份。
?如果使用su
命令時沒有指定用戶,那么默認會切換到root用戶的身份。并且,su -
也可以切換到root用戶。
?
su
和su -
是不一樣的,主要區別在于它們切換用戶身份時所攜帶的Shell環境。su
命令只切換用戶身份,而不改變Shell環境。這意味著,使用su
命令切換到root用戶后,你的工作目錄和環境變量仍然保持原用戶的設置,而不是root用戶的設置。相比之下,su-
命令在切換用戶身份的同時,也會將Shell環境切換到目標用戶的環境。具體來說,使用su-
命令切換到root用戶后,你的工作目錄會變成root用戶的工作目錄,環境變量也會變成root用戶的環境變量。
📙注意:
- 當普通用戶切換成root用戶是需要輸入root密碼的。
- 當普通用戶切換到另一個普通用戶則需要對方的密碼。
- root用戶切換為普通用戶是不需要密碼的。
?? 短暫提權
? 在Linux或Unix系統中,當你需要執行需要管理員權限的命令,但又不想以root用戶身份登錄時,可以使用sudo。例如,你可能需要使用sudo來安裝軟件包、修改系統配置、執行系統管理等操作。
📙
sudo:
- 語法:
sudo [選項] 命令
- 功能:用于暫時獲得超級用戶權限來執行特定的命令。
?使用sudo時,需要輸入當前用戶的密碼以驗證其權限。這里無法執行是因為cy用戶不在白名單中,需要使用vim
去改變配置文件。
🔭 權限管理
?可以從兩個方面去看待權限,首先權限一定存在身份限制,定義了用戶對特定資源的訪問能力,其次權限一定得保證對應的資源有人們所需的屬性,例如:影視軟件的屬性就是讓人們觀看電影,而身份(vip)的不同決定了能免費觀看什么電影。
?在之前的文章中,提到了Linux系統的一個設計理念——Linux系統下一切皆文件,所以談及Linux的權限問題,主要是在文件權限上。
📗在Linux中,訪問者的身份分為3類:
- 擁有者(owner)指的是創建文件或目錄的用戶,每個文件或目錄都有一個唯一的擁有者。擁有者可以對該文件或目錄進行修改、刪除等操作。
- 所屬組(group)是擁有者所在的組,可以是系統中的任何一個組。所屬組決定了擁有者所在的組對文件或目錄的訪問權限。
- other是指不屬于擁有者和所屬組的用戶,也就是除了擁有者和所屬組的成員之外的所有用戶。other用戶對文件或目錄的訪問權限取決于系統管理員設置的權限。
💫 所屬組存在的意義:
?所屬組(group)的存在主要是出于管理方面的考慮,尤其是要控制對文件和其他系統資源的訪問。在Linux中,每個用戶都可能隸屬于一個或多個組,而每個組也都有唯的一個名稱和一個組標識符(GID)。用戶和組ID的主要用途有二:一是確定各種系統資源的所有權;二是控制賦予進程訪問上述資源的權限。例如,每個文件都屬于某個特定的用戶和組,而每個進程也擁有相應的用戶ID和組ID屬性,這就決定了進程的所有者,以及進程訪問文件時所擁有的權限。
?在團隊工作的場景下,所屬組的概念就很容易理解。比如在老師的計算機里,可以設置文件權限,就能限制非自己班級(即非本組)的其他用戶的可讀權限,也可以讓自己的班級(即本組)成員可以修改文件。
📗Linux中操作的對象是文件,而文件對應的屬性也有3種:
- 讀(r):表示具有讀取文件內容的權限。
- 寫(w):表示具有修改文件內容的權限。
- 執行(x):表示具有執行文件的權限。
?在文件屬性列表上,對應有9個字符,每3個為一組,分別對應擁有者,所屬組和other的權限。例如:這個文件擁有者的權限為rw-
,說明擁有者有讀權限,寫權限,但是沒有執行權限。
?如果一個用戶同時是擁有者和所屬組,系統在匹配時只會匹配一次,會將該用戶匹配到擁有者,然后看對應是否有權限,所以如果同一個用戶如果作為擁有者沒有讀權限,作為所屬組有讀權限,在這種匹配下是不可以讀文件的。
? 對于一個文件是否可執行,需要滿足兩個條件:① 有執行權限。② 該文件是個可執行文件。
?? 更改權限
?一般來說,只有文件的擁有者和root才可以改變文件的權限。
📙
chmod:
- 語法:
chmod [參數] 權限 文件名
- 功能:更改文件或目錄的權限。它允許用戶控制誰可以讀取、寫入和執行文件。
- 常用選項:
R
遞歸修改目錄文件的權限
? 權限的表示格式:[{ugoa}{+-=}{rwx}]
u:表示擁有者(owner)權限。
g:表示所屬組(group)權限。
o:表示其他用戶(others)權限。
a:表示所有用戶(all)權限。
+:表示添加(增加)權限。
-:表示移除(刪除)權限。
=:表示設置(明確)權限。
r:表示讀取(read)權限。
w:表示寫入(write)權限。
x:表示執行(execute)權限。
?這些參數可以組合在一起使用,以精確地控制需要修改的權限。
?除了這種方式,還有一種三位8進制數字的方式來改變權限。由于一個身份所對應的文件權限,就只有rwx,那么每一位如果有對應的權限就為1,如果沒有就為0,所以就形成了 000 ~ 111 的一個二進制組合,轉化8進制就為0~7。例如:chmod 755 filename
就會將文件的擁有者設置為讀、寫和執行權限,而所屬組和其他用戶只有讀和執行權限。
?? 結語
?文章到這里就結束了,如果對你有幫助,你的點贊將會是我的最大動力,如果大家有什么問題或者不同的見解,歡迎大家的留言~