目錄
一、Linux用戶的分類
1.Linux下的兩種用戶
2.兩種用戶提示符的區別
3.用戶的切換方法
二、Linux的權限管理
1.文件訪問者分類
2.常見文件類型
3.文件訪問權限
4.權限檢查邏輯
5.文件權限的表示方式
三、與文件訪問權限相關的設置方法
1.前提:
2.如何修改文件或目錄權限
指令:
①符號模式(字母表示)
②數字模式(八進制)
③常用選項
④特殊權限
⑤典型使用場景
⑥注意事項
3.修改文件或目錄的所有者或所屬組
指令:
①常用選項
②示例
③注意事項
④chmod和chown的區別
4.修改文件的所屬組
指令
①常用選項
②示例
③注意事項
④chgrp和chown的區別
5.權限掩碼umask
①umask作用
②如何查看當前umask
③如何修改umask
④常見umask
⑤注意事項
四、目錄權限
1.目錄各權限作用
2.粘滯位的作用
3.如何設置粘滯位
①符號模式(更推薦)
②數字模式(八進制)
4.如何查看粘滯位
①使用?ls -l?查看
②使用?stat?查看
5.粘滯位和 SUID/SGID 的區別
6.注意事項
一、Linux用戶的分類
1.Linux下的兩種用戶
①超級用戶(root):可以在Linux系統下作任何事,不受限制。
②普通用戶:在Linux系統下只能做一定權限內的事,受到約束。
2.兩種用戶提示符的區別
超級用戶(root)的命令提示符是“#”,普通用戶的命令提示符是“$”
3.用戶的切換方法
切換用戶指令:su
①root用戶切換到普通用戶(無需輸入普通用戶口令)
su + 空格 + 普通用戶名,即: su user
②普通用戶切換到root用戶
su + 空格 + root? (su之后都可以省略不寫)
然后輸入root用戶口令
二、Linux的權限管理
1.文件訪問者分類
①文件及文件目錄的所有者:u(User)
②文件和文件目錄的所有者所在的組的用戶:g(Group)
③其他用戶:o(other)
注:三種身份在進行認證時,只能選擇一種身份。
2.常見文件類型
①-:普通文件(文本、可執行程序、庫基本都屬于普通文件)
②d:目錄文件
③b:塊設備文件(磁盤文件等)
④c:字符設備文件(鍵盤文件、顯示器文件等)
⑤p:管道文件
⑥l:軟連接
⑦s:套接口文件
注:Linux系統中文件后綴名沒有直接意義(但不代表不用)
3.文件訪問權限
r :可讀權限
w :可寫權限
x:可執行權限
- :表示所在權限位置沒有權限
4.權限檢查邏輯
當用戶嘗試訪問文件時,系統按以下順序匹配身份并應用對應權限:
擁有者(Owner)
若用戶是文件的所有者,直接應用?
owner
?權限,忽略后續檢查。所屬組(Group)
若用戶不是所有者,但屬于文件的所屬組,則應用?
group
?權限,忽略后續檢查。其他用戶(Others)
若用戶既不是所有者,也不在所屬組中,則應用?
others
?權限。
注:
優先級是單向的:一旦匹配到身份(如?
owner
),后續身份(group
/others
)的權限不會生效。組權限的局限性:即使用戶屬于多個組,系統僅檢查文件所屬組,而非用戶的所有組。
5.文件權限的表示方式
①字符表示
r--:表示僅可讀
-w-:表示僅可寫
--x:表示僅可執行
rw-:表示僅可讀可寫
rwx:表示可讀可寫可執行
---:表示無權限
②八進制數值表示
????權限符號 ????????????????二進制 ????????????????八進制 ????????r ????????????????100 ????????????????4 ????????w ????????????????010 ????????????????2 ????????x ????????????????001 ????????????????1 ????????rw ????????????????110 ????????????????6 ????????rx ????????????????101 ????????????????5 ????????wx ????????????????011 ????????????????3 ????????rwx ????????????????111 ????????????????7 ????????--- ????????????????000 ????????????????0
三、與文件訪問權限相關的設置方法
1.前提:
只有文件擁有者和 root 可以修改文件權限。
2.如何修改文件或目錄權限
指令:
chmod——名稱來源于change mode
基本語法:chmod [選項] 權限模式 文件/目錄
①符號模式(字母表示)
用戶類別:
u
:所有者(user)
g
:所屬組(group)
o
:其他用戶(others)
a
:所有用戶(all,默認值)操作符:
+
:添加權限
-
:移除權限
=
:直接設置權限權限類型:
r
:讀(4)
w
:寫(2)
x
:執行(1)
示例:
②數字模式(八進制)
權限用 3 位八進制數表示,分別對應?所有者、組、其他用戶。
權限值:
4
:讀(r)——對應2進制:100
2
:寫(w)——對應2進制:010
1
:執行(x)——對應2進制:001權限組合通過相加得到(如?
rwx=4+2+1=7
)。
示例:
③常用選項
選項 作用 -R
遞歸修改目錄及其子內容的權限 -v
顯示權限變更的詳細信息 -c
類似? -v
,但僅顯示修改過的文件--reference=FILE
參照某個文件的權限設置目標文件
示例:
④特殊權限
SUID(Set User ID)
用戶執行文件時臨時獲得所有者權限。
設置:
chmod u+s file
?或數字模式前綴?4
(如?4755
)。SGID(Set Group ID)
用戶執行文件時臨時獲得所屬組權限,或目錄下新建文件繼承組權限。
設置:
chmod g+s dir
?或數字模式前綴?2
(如?2755
)。Sticky Bit
僅允許所有者刪除/重命名目錄下的文件(如?
/tmp
)。設置:
chmod +t dir
?或數字模式前綴?1
(如?1777
)。
示例:
⑤典型使用場景
⑥注意事項
權限順序:符號模式下操作順序為?
用戶類別→操作符→權限
(如?u+rx
)。安全風險:謹慎使用?
777
?或?-R 777
,避免過度開放權限。
3.修改文件或目錄的所有者或所屬組
指令:
chown——名稱來源change owner
基本語法:chown [選項] 新所有者:新所屬組 文件/目錄
注:可以單獨修改所有者或組,也可以同時修改
①常用選項
選項 作用 -R
遞歸修改目錄及其子內容的所有者/組 -v
顯示修改的詳細信息(verbose) -c
類似? -v
,但僅顯示修改過的文件--reference=FILE
參照某個文件的所有者/組設置目標文件 -h
修改符號鏈接本身的所有者(默認修改鏈接指向的文件)
②示例
1. 修改文件的所有者
2. 修改目錄的所有者及組(遞歸)
3. 參照另一個文件設置權限
4. 修改符號鏈接的所有者(默認修改鏈接指向的文件)
③注意事項
需要 root 權限:
普通用戶只能修改自己擁有的文件,
root
?可以修改任何文件的所有者。
sudo
?提權:這個需要用root用戶將普通用戶添加進白名單,操作并不復雜,感興趣的可以自行了解用戶和組必須存在:
如果指定的用戶或組不存在,
chown
?會報錯目錄權限影響:
如果目錄的權限不允許寫入,即使是?
root
,也可能無法修改其子文件的所有者
④chmod和chown的區別
chown
:修改?所有者/組(誰擁有文件)。
chmod
:修改?權限(誰能讀/寫/執行文件)。
4.修改文件的所屬組
指令
chgrp——名稱來源于:change group
基本語法:chgrp [選項] 新組名 文件/目錄
新組名:可以是組名(如?
developers
)或 GID(如?1001
)。可以同時修改多個文件或目錄。
①常用選項
選項 作用 -R
遞歸修改目錄及其子內容的所屬組 -v
顯示修改的詳細信息(verbose) -c
類似? -v
,但僅顯示修改過的文件--reference=FILE
參照某個文件的組設置目標文件 -h
修改符號鏈接本身的組(默認修改鏈接指向的文件)
②示例
1. 修改文件的所屬組
2. 遞歸修改目錄的所屬組
3. 參照另一個文件設置組
4. 修改符號鏈接的組(默認修改鏈接指向的文件)
③注意事項
需要權限:
普通用戶只能修改自己擁有的文件的組,且必須是該組的成員。
root
?可以修改任何文件的組。使用?
sudo
?提權:感興趣的自行了解組必須存在:
如果組不存在,
chgrp
?會報錯
④chgrp和chown的區別
chgrp
:僅修改?組(如?chgrp dev file
)。
chown
:可以同時修改?所有者和組(如?chown user:dev file
)。
5.權限掩碼umask
①umask作用
文件/目錄創建時,系統會使用?
umask
?值來屏蔽(去除)某些權限。默認權限:
文件:0666(即?
rw-rw-rw-
)目錄:0777(即?
rwxrwxrwx
)
但實際上我們所創建的文件和目錄,看到的權限往往不是上面的默認值,原因就是創建文件或目錄的時候還要受到 umask的影響。
假設默認權限是mask
則實際創建的出來的文件權限是:
二進制計算表示:
- 最終權限 =?mask & ~umask
八進制計算表示:
最終權限 = mask?- umask 權限
符號表示:
- umask 也可以使用?
u/g/o
?和?r/w/x
?表示:
②如何查看當前umask
輸出結果:
③如何修改umask
臨時修改(僅當前會話有效)
永久修改(對所有用戶生效)
修改?
/etc/profile
?或用戶?~/.bashrc
:
重新加載配置:
④常見umask
umask 文件權限 目錄權限 適用場景 0000
666
(rw-rw-rw-
)777
(rwxrwxrwx
)開放權限(不安全) 0022
644
(rw-r--r--
)755
(rwxr-xr-x
)默認推薦(用戶可讀寫,其他只讀) 0027
640
(rw-r-----
)750
(rwxr-x---
)組內共享,其他用戶無權限 0077
600
(rw-------
)700
(rwx------
)僅所有者可訪問(最嚴格)
⑤注意事項
umask 是權限的“反碼”:
umask=022
?表示?去掉?w
?權限(即?rw-r--r--
)。root 用戶的默認 umask 通常是?
022
,普通用戶可能是?002
。umask 不影響已有文件,僅對新創建的文件/目錄生效。
四、目錄權限
1.目錄各權限作用
可執行權限(x): 如果目錄沒有可執行權限, 則無法cd到目錄中
可讀權限(r): 如果目錄沒有可讀權限, 則無法用ls等命令查看目錄中的文件內容
- 目錄的?
r
?權限僅允許查看文件名列表(需配合?x
?才能讀取文件內容)可寫權限(w): 如果目錄沒有可寫權限, 則無法在目錄中創建文件, 也無法在目錄中刪除文件
但是這并不科學
上面的目錄權限說明只要用戶具有目錄的寫權限, 用戶就可以刪除目錄中的文件, 而不論這個用戶是否有這個文件的寫權限,但是我張三創建的一個文件, 憑什么可以被你李四刪掉?
于是Linux引入了粘滯位
2.粘滯位的作用
用于目錄(對普通文件無效)。
允許用戶創建文件,但只能刪除自己擁有的文件(防止誤刪他人文件)。
3.如何設置粘滯位
①符號模式(更推薦)
②數字模式(八進制)
粘滯位對應?權限數字的最前面一位:
1
?表示粘滯位(如?1777
)
0
?表示無粘滯位(如?0755
)
4.如何查看粘滯位
①使用?ls -l
?查看
如果目錄有粘滯位,權限的?其他用戶(others)執行位?
x
?會變成?t
輸出結果:
其他用戶rwt
?表示:
rw-
:可讀寫,不可執行
rwx
:可讀寫可執行
rwt
:其他用戶可讀寫 + 粘滯位
②使用?stat
?查看
5.粘滯位和 SUID/SGID 的區別
細心的朋友應該注意到了,這里就是前面提到過的特殊權限
特殊權限 作用 適用對象 SUID 用戶執行時臨時獲得所有者權限 可執行文件 SGID 用戶執行時臨時獲得組權限,或目錄下新建文件繼承組 可執行文件/目錄 粘滯位 僅允許所有者刪除文件 目錄
6.注意事項
粘滯位一般是給目錄設置,而且一般是共享目錄
共享目錄一般只有root用戶有權限創建
本文有些長,若有錯漏之處,煩請各位指正。