Linux操作系統從入門到實戰(五)詳細講解Linux權限概念
- 前言
- 一、Linux中兩種用戶
- 1.1 超級用戶(root)
- 1.2 普通用戶
- 1.3 切換用戶命令
- 二、Linux權限管理
- 2.1 文件訪問者的分類:誰能訪問文件?
- 2.2 文件類型
- 2.3 基本權限:能對文件做什么?
- 2.4 權限的“長相”:
- 2.5 為什么需要權限?
- 三、文件訪問權限的相關設置方法與命令
- 1. chmod:
- 2. chown:
- 3. chgrp:
- 4. umask:
- 5. file指令:
- 6. 使用 sudo 分配權限
- 四、粘滯位
前言
- 在之前的內容里,我們深度解析了操作系統的本質,一步步搭建起 Linux 環境,還系統掌握了 Linux 基礎指令的運用。
- 但要想真正玩轉 Linux 系統,其權限管理機制是繞不開的核心關鍵。
- 從今天起,就讓我們切入 Linux 權限這一重要模塊,層層拆解其概念與邏輯,為全面掌握 Linux 系統的管理與運用筑牢根基,開啟更深入的 Linux 探索之旅。
我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知識文章專欄
歡迎來閱讀指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482
一、Linux中兩種用戶
- 我們平時用的Linux操作系統里有兩種??:超級??(root)、普通??。
1.1 超級用戶(root)
- 就像家里“大權在握”的大當家,在 Linux 系統里想干啥就干啥,沒有限制
- 比如隨意修改系統設置、安裝或刪除軟件、查看所有文件等,甚至可以刪除自己。
- 它的命令提示符是
#
,只要看到#
,就知道現在是超級用戶
1.2 普通用戶
- 類似家里的其他成員,能做的事有限。
- 比如只能用自己的東西(訪問自己權限內的文件),不能隨便動系統關鍵設置或別人的文件。它的命令提示符是
$
,看到$
就知道是普通用戶在操作。
1.3 切換用戶命令
- 從超級用戶切到普通用戶:比如從
root
切到普通用戶user
,輸su user
,不用輸密碼,直接切換。就像大當家想找普通成員做事,一叫就來。 - 從普通用戶切到超級用戶:輸
su
(或suroot
),這時系統會讓你輸root
的密碼,驗證通過才能切換。好比普通成員想變成大當家,得先證明自己有這個資格(輸對密碼)。
二、Linux權限管理
2.1 文件訪問者的分類:誰能訪問文件?
Linux 把文件的“訪問者”分成三類,就像家里的文件被不同人使用:
-
所有者(User,縮寫
u
)- 就像文件的“主人”,比如你創建了一個文件,你就是它的所有者。
- 權限最大,能決定誰能看、誰能改這個文件。
-
所屬組用戶(Group,縮寫
g
)- 比如你和同學組成一個小組,小組里的成員就是“所屬組用戶”。
- 組內成員共享一些權限,方便團隊協作(比如一起修改小組作業文件)。
-
其他用戶(Others,縮寫
o
)- 既不是所有者,也不在所屬組里的人,比如陌生人。
- 權限最小,通常只能看文件內容,不能隨便改。
2.2 文件類型
Linux 里的文件“長相”用第一個字符表示,常見類型:
-
d
(目錄,文件夾):像一個抽屜,里面可以裝很多文件和子目錄(比如~/Documents
)。
-
-
(普通文件):就是普通的文件,比如文檔(.txt
)、圖片(.jpg
)、腳本(.sh
)等。
-
l
(軟鏈接):類似 Windows 的快捷方式,指向另一個文件或目錄(比如ln -s 目標文件 快捷方式名
)。 -
b
(塊設備文件) 和c
(字符設備文件):和硬件相關,比如硬盤(/dev/sda
)、鍵盤、鼠標(不用太糾結,記住是硬件就行)。 -
其他類型(
p
、s
):暫時用得少,先記住前三個最常用的!
2.3 基本權限:能對文件做什么?
每種用戶(所有者/組/其他用戶)都有三種“操作權限”,用 r
、w
、x
表示,對應數字 4
、2
、1
:
-
讀權限(
r
,數字4
)- 對文件:可以查看文件內容(比如用
cat 文件名
查看)。 - 對目錄:可以查看目錄里有哪些文件(比如用
ls 目錄名
列出內容)。
例子:你可以看一本書的內容,就是有“讀”權限。
- 對文件:可以查看文件內容(比如用
-
寫權限(
w
,數字2
)- 對文件:可以修改文件內容(比如用
nano 文件名
編輯)。 - 對目錄:可以在目錄里新建、刪除、重命名文件(注意!是改目錄里的內容,不是目錄本身的名字)。
例子:你可以在筆記本上寫字,就是有“寫”權限。
- 對文件:可以修改文件內容(比如用
-
執行權限(
x
,數字1
)- 對文件:可以運行這個文件(比如腳本
.sh
文件,需要x
權限才能用./腳本名
運行)。 - 對目錄:可以進入這個目錄(比如用
cd 目錄名
進入)。
例子:你能打開一個抽屜(進入目錄),或者啟動一個程序(運行文件),就是有“執行”權限。
- 對文件:可以運行這個文件(比如腳本
如果沒有某個權限,就用 -
表示,比如 r--
表示只有讀權限,沒有寫和執行權限。
2.4 權限的“長相”:
當你用 ls -l
查看文件時,會看到類似這樣的結果:
-rwxr-xr-- 1 user group 1024 Jan 1 00:00 文件名
- 第一個字符是文件類型(這里是
-
,表示普通文件)。 - 接下來 9 個字符分成三組,每組 3 個:
- 第一組(前 3 位):所有者(
u
)的權限(這里rwx
,表示可讀、可寫、可執行)。 - 第二組(中間 3 位):所屬組(
g
)的權限(這里r-x
,表示可讀、可執行,不可寫)。 - 第三組(最后 3 位):其他用戶(
o
)的權限(這里r--
,表示只讀)。
- 第一組(前 3 位):所有者(
也可以用數字表示權限,比如 rwx
是 4+2+1=7
,r-x
是 4+0+1=5
,上面的例子權限就是 754
。
2.5 為什么需要權限?
假設你有一個筆記本:
- 所有者(你自己):可以隨便看、寫、甚至燒掉它(
rwx
)。 - 所屬組(家人):可以看里面的內容,也可以打開筆記本(進入目錄),但不能隨便修改(
r-x
)。 - 其他用戶(陌生人):只能遠遠看一眼封面(只讀,
r--
),不能打開或修改。
三、文件訪問權限的相關設置方法與命令
1. chmod:
基本功能與格式
chmod
命令用于設置文件的訪問權限,其基本格式是 chmod [參數] 權限 文件名
。要注意,只有文件的擁有者和超級用戶 root
才有權力改變文件的權限。
常用選項
-R
這個選項很實用,當你要修改一個目錄下所有文件和子目錄的權限時,使用 -R
就可以遞歸地進行修改。
權限值格式
-
用戶標識符 + / - / = 權限字符
+
:為權限范圍添加權限代號所代表的權限。-
:從權限范圍中移除權限代號所代表的權限。=
:給權限范圍賦予權限代號所代表的權限。- 用戶符號:
u
:文件擁有者。g
:擁有者所在組的用戶。o
:其他用戶。a
:所有用戶。
- 實例:
chmod u++ a.txt
:給文件a.txt
的擁有者添加寫權限。chmod o+x a.txt
:移除文件a.txt
其他用戶添加寫權限。chmod a=x a.txt
:給文件a.txt
的所有用戶都只賦予執行權限。
-
三位 8 進制數字
每個 8 進制數字對應一種用戶的權限,從左到右依次是擁有者、所屬組、其他用戶。比如讀權限是 4,寫權限是 2,執行權限是 1。- 實例:
-
chmod 664 a.txt
:擁有者和所屬組用戶有讀寫權限,其他用戶只有讀權限。
-
chmod 640 a.txt
:擁有者有讀寫權限,所屬組用戶只有讀權限,其他用戶沒有任何權限。
-
- 實例:
2. chown:
chown
命令用來修改文件的擁有者,格式為 chown [參數] 用戶名 文件名
。
- 實例:
chown user1 f1
:把文件f1
的擁有者修改為user1
。chown -R user1 filegroup1
:使用-R
遞歸地將目錄filegroup1
及其下面所有文件和子目錄的擁有者都修改為user1
。
3. chgrp:
chgrp
命令用于修改文件或目錄的所屬組,格式是 chgrp [參數] 用戶組名 文件名
。常用選項 -R
可遞歸修改文件或目錄的所屬組。
- 實例:
chgrp users /abc/f2
:把文件/abc/f2
的所屬組修改為users
。
4. umask:
功能
`umask` 可以用來查看或修改文件掩碼。新建文件默認權限是 0666(即所有用戶都有讀寫權限),新建目錄默認權限是 0777(所有用戶都有讀寫執行權限)。不過實際創建的文件和目錄權限往往不是這些默認值,這是因為創建時會受到 `umask` 的影響。實際創建出來的文件權限是默認權限 `mask` 與 `~umask` 按位與的結果。格式與說明
格式為 `umask 權限值`,超級用戶默認掩碼值是 0022,普通用戶默認是 0002。將現有的存取權限減去權限掩碼后,就得到創建文件時的預設權限。 - 實例: - `umask 755` :設置文件掩碼為 755。 - `umask` :查看當前的文件掩碼。 - `umask 044` :將文件掩碼設置為 044。 5. file指令:
file
指令用于識別文件類型,語法是 file [選項] 文件或目錄...
。
常用選項
-
-c
:詳細顯示指令執行過程,方便排查錯誤或分析程序執行情況。
-
-z
:嘗試解讀壓縮文件的內容。
6. 使用 sudo 分配權限
修改 /etc/sudoers 文件
- 可以通過修改
/etc/sudoers
文件來分配權限。 /etc/sudoers
文件定義了哪些用戶可以使用sudo
命令以超級用戶權限執行特定命令。- 不過修改這個文件要格外小心,因為一旦配置錯誤,可能導致系統出現問題。
- 通常使用
visudo
命令來編輯該文件,它會在保存時檢查語法錯誤。比如,你可以在文件中添加一行,讓某個用戶可以使用sudo
執行特定命令,像這樣username ALL=(ALL) ALL
,這就表示用戶username
可以在任何主機上以任何用戶身份執行任何命令。
使用 sudo 調用授權的命令
格式:sudo –u 用戶名 命令
sudo
:獲取臨時超級用戶權限的命令。-u 用戶名
:指定以哪個用戶身份執行命令。- 命令:具體要執行的操作。
實例sudo -u root /usr/sbin/useradd u2
:表示當前用戶借助sudo
,以root
身份執行/usr/sbin/useradd u2
命令(即創建用戶u2
)。這要求當前用戶在/etc/sudoers
中被授予了相關權限,否則會提示權限不足。
簡單總結:先通過修改 /etc/sudoers
文件設定用戶能以什么身份執行哪些命令,再用 sudo -u
來實際調用這些授權的命令,實現權限的靈活分配,既保證安全又方便普通用戶執行特定管理任務。
四、粘滯位
在我們剛剛的講解中
- 可執行權限(x):
想象目錄是一個房間,可執行權限(x)就像“開門的鑰匙”。如果沒這把鑰匙(目錄無 x 權限),你連房間都進不去(無法
cd
進入目錄),更別說做其他操作了。 - 可讀權限(r):
進了房間(有 x 權限)后,可讀權限(r)就像“房間里的燈”。如果沒燈(目錄無 r 權限),雖然你人在房間里(能
cd
進入),但啥也看不見(無法用ls
等命令查看目錄里有什么文件)。 - 可寫權限(w):
可寫權限(w)相當于“在房間里放置或拿走東西的權力”。只要有這個權力(目錄有 w 權限),不管房間里的東西(文件)是誰的,你都能在房間里創建新東西(新建文件),或者把別人的東西拿走(刪除文件)。
這就像:張三在房間里放了個盒子(文件),李四只要有房間的 w 權限,就能把張三的盒子拿走(刪除文件),這看起來是不是不太合理?
為了讓目錄里的文件不被隨意刪除,Linux 引入了粘滯位。給目錄加上粘滯位(用 chmod +t
)后,這個目錄就像被上了一把“特殊的鎖”,規定:只有以下三種人能刪除目錄里的文件:
- 超級管理員(root):超級管理員有最高權限,能處理任何文件。
- 目錄的所有者:目錄就像一個“私人領地”,領地的主人(目錄所有者)有權力管理里面的東西。
- 文件的所有者:自己的東西(文件),自己當然能決定是否刪除。
舉個例子:
- 給
/home
目錄加粘滯位(chmod +t /home
)后,用戶litao
就不能隨便刪除root
或其他人創建的文件了。原本litao
能刪root
的root.c
文件(因為/home
目錄有 w 權限),但加了粘滯位后,系統會檢查刪除者是否是超級管理員、目錄所有者或文件所有者,不滿足就不讓刪,這樣就保證了文件的安全性。
以上就是這篇博客的全部內容,下一篇我們將繼續探索Linux的更多精彩內容。
我的個人主頁
歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知識文章專欄
歡迎來閱讀指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482
非常感謝您的閱讀,喜歡的話記得三連哦 |