1、ACL 是什麼
ACL的全稱是 Access Control List (訪問控制列表) ,一個針對文件/目錄的訪問控制列表。它在UGO權限管理的基礎上爲文件系統提供一個額外的、更靈活的權限管理機制。它被設計爲UNIX文件權限管理的一個補充。ACL允許你給任何的用戶或用戶組設置任何文件/目錄的訪問權限。
2、ACL有什麼用
既然是作爲UGO權限管理的補充,ACL自然要有UGO辦不到或者很難辦到的本事,例如:
1:可以針對用戶來設置權限
2:可以針對用戶組來設置權限
3:子文件/目錄繼承父目錄的權限
查詢ACL功能是否啓用(默認都啓用)
3、啓ACL功能
cat /boot/config-3.10.0-693.el7.x86_64 | grep -i xfs
4、設置ACL(centos7下的命令行)
setfacl 2.2.51 -- 設定文件訪問控制列表
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m, --modify=acl 更改文件的訪問控制列表
-M, --modify-file=file 從文件讀取訪問控制列表條目更改
-x, --remove=acl 根據文件中訪問控制列表移除條目
-X, --remove-file=file 從文件讀取訪問控制列表條目並刪除
-b, --remove-all 刪除所有擴展訪問控制列表條目
-k, --remove-default 移除默認訪問控制列表
--set=acl 設定替換當前的文件訪問控制列表
--set-file=file 從文件中讀取訪問控制列表條目設定
--mask 重新計算有效權限掩碼
-n, --no-mask 不重新計算有效權限掩碼
-d, --default 應用到默認訪問控制列表的操作
-R, --recursive 遞歸操作子目錄
-L, --logical 依照系統邏輯,跟隨符號鏈接
-P, --physical 依照自然邏輯,不跟隨符號鏈接
--restore=file 恢復訪問控制列表,和“getfacl -R”作用相反
--test 測試模式,並不真正修改訪問控制列表屬性
-v, --version 顯示版本並退出
-h, --help 顯示本幫助信息
5、查詢ACL
getfacl 2.2.51 -- 獲取文件訪問控制列表
使用方法: getfacl [-aceEsRLPtpndvh] 文件 ...
-a, --access 僅顯示文件訪問控制列表
-d, --default 僅顯示默認的訪問控制列表
-c, --omit-header 不顯示註釋表頭
-e, --all-effective 顯示所有的有效權限
-E, --no-effective 顯示無效權限
-s, --skip-base 跳過只有基條目(base entries)的文件
-R, --recursive 遞歸顯示子目錄
-L, --logical 邏輯遍歷(跟隨符號鏈接)
-P, --physical 物理遍歷(不跟隨符號鏈接)
-t, --tabular 使用製表符分隔的輸出格式
-n, --numeric 顯示數字的用戶/組標識
-p, --absolute-names 不去除路徑前的 '/' 符號
-v, --version 顯示版本並退出
-h, --help 顯示本幫助信息
6、更改 ACL 權限
-m 選項其實是在更改文件和目錄的 ACL 權限
當一個用戶或組的 ACL 權限不存在時,-m 選項執行的是添加操作
如果一個用戶或組的 ACL 權限已經存在時,-m 選項執行的是更新操作。
我們重新創建一個 /protected 目錄,通過下面的命令設置 xiaohong 用戶對它的訪問權限:
setfacl -m u:xiaohong:rwx /protected