Linux權限管理與ACL訪問控制詳解
一、基本權限概述
Linux 系統(tǒng)通過權限控制用戶對文件和目錄的訪問,核心權限分為讀(r)、寫(w)、執(zhí)行(x),分別對應數(shù)字權限值 4、2、1。
權限針對三類對象設置:所有者(u)、所屬組(g)、其他用戶(o),三者共同構成完整的權限控制體系。
1. 基本權限與數(shù)字對應關系
權限字符 | 權限含義 | 數(shù)字值 | 組合示例(文件 / 目錄) | 數(shù)字表示 |
r | 讀權限 | 4 | 只讀(r--r--r--) | 444 |
w | 寫權限 | 2 | 讀寫(rw-rw-rw-) | 666 |
x | 執(zhí)行權限 | 1 | 讀寫執(zhí)行(rwxrwxrwx) | 777 |
- | 無權限 | 0 | 所有者讀寫執(zhí)行,其他無(rwx------) | 700 |
注意:目錄必須擁有 x(執(zhí)行)權限,否則無法通過 cd 命令切換到該目錄。
二、權限管理命令(chmod)
chmod 用于修改文件或目錄的權限,支持字符模式和數(shù)字模式兩種操作方式。
1. 字符模式語法
chmod [對象][操作][權限] 文件名/目錄名
- 對象:u(所有者)、g(所屬組)、o(其他用戶)、a(所有用戶,默認)
- 操作:+(添加權限)、-(移除權限)、=(設置權限,覆蓋原有)
- 權限:r、w、x
示例:
# 給文件所有者添加執(zhí)行權限 chmod u+x file.txt # 移除所屬組的寫權限 chmod g-w file.txt # 給所有用戶設置讀寫權限(覆蓋原有) chmod a=rw dir/
2. 數(shù)字模式語法
chmod [所有者權限][所屬組權限][其他用戶權限] 文件名/目錄名
通過三位數(shù)字分別指定所有者、所屬組、其他用戶的權限(每位數(shù)字為 r/w/x 的數(shù)值和)。
示例:
# 所有者讀寫執(zhí)行,所屬組讀執(zhí)行,其他用戶只讀(754) chmod 754 script.sh # 所有用戶讀寫執(zhí)行(777,謹慎使用) chmod 777 data/
三、特殊權限
特殊權限在基本權限基礎上擴展了額外功能,適用于特定場景(如權限繼承、身份臨時切換)。
1. SUID(Set User ID)
- 標識:u+s(數(shù)字表示 4xxx)
- 作用:應用于二進制命令文件,執(zhí)行該命令時臨時獲得文件所有者的身份(通常為 root)。
- 典型用途:允許普通用戶執(zhí)行需要 root 權限的命令(如 passwd 修改密碼)。
示例:
# 給 mkdir 命令添加 SUID 權限 chmod u+s /usr/bin/mkdir
2. SGID(Set Group ID)
標識:g+s(數(shù)字表示 2xxx)
作用:
- 應用于命令文件:執(zhí)行時臨時獲得文件所屬組的身份。
- 應用于目錄:目錄中新建的文件 / 目錄會繼承該目錄的所屬組(而非創(chuàng)建者的基本組)。
示例:
# 給目錄添加 SGID 權限(新文件繼承目錄所屬組) chmod g+s /tmp/shared_dir
3. Sticky Bit(粘滯位)
- 標識:o+t(數(shù)字表示 1xxx)
- 作用:僅應用于目錄,限制刪除權限 ——只有文件所有者或 root 可刪除該目錄下的文件,其他用戶即使有寫權限也無法刪除他人文件。
- 典型場景:系統(tǒng)臨時目錄 /tmp 默認設置該權限。
示例:
# 給共享目錄添加粘滯位 chmod o+t /data/public
四、默認權限與 umask
新建文件或目錄的默認權限由 umask(權限掩碼)決定,umask 用于從最高權限中 “減去” 不需要的權限。
1. 最高權限基準
- 目錄:最高權限為 0777(rwxrwxrwx)
- 文件:最高權限為 0666(rw-rw-rw-,默認無執(zhí)行權限)
2. 默認 umask 值
- root 用戶:0022(目錄默認權限:0777-0022=0755;文件默認權限:0666-0022=0644)
- 普通用戶:0002(目錄默認權限:0777-0002=0775;文件默認權限:0666-0002=0664)
3. 臨時修改 umask
# 臨時將 umask 改為 0002(僅當前會話有效) umask 0002
注意:不建議永久修改 umask,可能導致新建文件 / 目錄權限過松,存在安全風險。
五、所有者與所屬組管理
1. 修改所有者(chown)
用于變更文件或目錄的所有者,語法:
# 修改所有者 chown 新所有者 文件名/目錄名 # 同時修改所有者和所屬組(用 : 分隔) chown 新所有者:新所屬組 文件名/目錄名 # 遞歸修改目錄(包括子文件/子目錄) chown -R 新所有者:新所屬組 目錄名
示例:
# 將 file.txt 的所有者改為 admin chown admin file.txt # 遞歸將 data/ 目錄的所有者改為 root,所屬組改為 dev chown -R root:dev data/
2. 修改所屬組(chgrp)
專門用于變更文件或目錄的所屬組,語法:
# 修改所屬組 chgrp 新所屬組 文件名/目錄名 # 遞歸修改目錄所屬組 chgrp -R 新所屬組 目錄名
示例:
# 將 dir/ 的所屬組改為 test chgrp test dir/
六、ACL 訪問控制(setfacl)
ACL(Access Control List)提供更精細的權限控制,允許為特定用戶或組單獨設置權限,突破傳統(tǒng)的 “所有者 - 所屬組 - 其他” 三層權限限制。
1. 基本語法(setfacl)
# 給用戶設置權限 setfacl -m u:用戶名:權限 文件/目錄 # 給組設置權限 setfacl -m g:組名:權限 文件/目錄
- 權限:支持 r(讀)、w(寫)、x(執(zhí)行),目錄需 x 權限才能進入。
2. 常用示例
(1)給特定用戶設置文件權限
# 允許 admin 用戶對 file.txt 擁有讀寫權限 setfacl -m u:admin:rw file.txt
(2)給特定組設置目錄權限
# 允許 lisi 組對 dir/ 擁有讀寫執(zhí)行權限 setfacl -m g:lisi:rwx dir/
(3)設置目錄權限繼承(默認權限)
為目錄設置默認 ACL 后,新建的子文件 / 子目錄會自動繼承該權限:
# 允許 admin 用戶對 dir/ 有讀寫執(zhí)行權限,并設置繼承 setfacl -m u:admin:rwx dir/ # 目錄本身權限 setfacl -m d:u:admin:rwx dir/ # 默認繼承權限(d 表示 default)
3. ACL 權限管理命令
命令 | 功能 |
setfacl -b 文件名 | 清除文件 / 目錄的所有 ACL 權限 |
setfacl -k 目錄名 | 清除目錄的默認繼承權限 |
getfacl 文件名 | 查看文件 / 目錄的 ACL 權限詳情 |
總結
- 基本權限:通過 chmod 管理 rwx 權限,支持字符和數(shù)字兩種模式。
- 特殊權限:SUID、SGID、Sticky Bit 適用于身份臨時切換、權限繼承等場景。
- 默認權限:由 umask 決定,root 與普通用戶默認值不同。
- 所有者 / 組管理:chown 和 chgrp 用于變更文件的歸屬關系。
- ACL 權限:setfacl 提供精細化控制,支持為特定用戶 / 組單獨授權及權限繼承。
掌握權限管理是保障 Linux 系統(tǒng)安全的核心技能,需根據(jù)實際場景合理配置權限,避免過度開放或權限不足。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Win10 + Ubuntu 16.04雙系統(tǒng)完美安裝教程【詳細】
這篇文章主要介紹了Win10 + Ubuntu 16.04雙系統(tǒng)完美安裝教程,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10Linux centos7環(huán)境下tomcat安裝教程
這篇文章主要為大家詳細介紹了Linux centos7環(huán)境下tomcat的安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03Linux VPS配置Web網站環(huán)境一鍵包(LNMP/LAMP/LNMPA)
如果我們是資深Linux用戶,可能不屑于網上免費Linux Web一鍵包、管理面板的安裝,然后自己編譯或者自由的一套環(huán)境安裝配置環(huán)境。但是,對于大部分用戶而言,麥子個人建議還是選擇較為成熟的WEB一鍵包或者面板安裝環(huán)境2017-02-02linux下通過Squid反向代理搭建CDN緩存服務器的配置方法
在移動機房放置一臺CDN代理服務器,通過智能DNS解析,讓電信用戶直接訪問Web服務器、讓移動用戶訪問CDN代理服務器,解決移動用戶訪問Web服務器慢的問題2013-06-06