ACL的全稱是 Access Control List (訪問控制列表) ,一個針對文件/目錄的訪問控制列表。它在UGO權限管理的基礎上為文件系統提供一個額外的、更靈活的權限管理機制。它被設計為UNIX文件權限管理的一個補充。ACL允許你給任何的用戶或用戶組設置任何文件/目錄的訪問權限。
既然是作為UGO權限管理的補充,ACL自然要有UGO辦不到或者很難辦到的本事,例如:
ACL需要Linux內核和文件系統的配合才能工作,當前我們能見到的大多數Linux發行版本默認都是支持的。但最好還是能夠先檢查一下:
sudo tune2fs -l /dev/sda1 |grep “Default mount options:”Default mount options: user_xattr acl
我們能夠看到默認情況下(Default mount options:)已經加入 acl 支持了。
我們可以使用setfacl和getfacl命令來設置或觀察文件/目錄的acl權限。
參數不多,直接列出來了:
setfacl [-bkRd] [{-m|-x} acl參數] 文件/目錄名-m :配置後面的 acl 參數給文件/目錄使用,不可與 -x 合用;-x :刪除後續的 acl 參數,不可與 -m 合用;-b :移除所有的 ACL 配置參數;-k :移除默認的 ACL 參數;-R :遞歸配置 acl;-d :配置“默認 acl 參數”,只對目錄有效,在該目錄新建的數據會引用此默認值;
getfacl 文件/目錄名
先創建一個測試文件test,然後查看其默認的權限:
touch testll test-rw-r--r-- 1 root root 0 May 28 09:04 testgetfacl test# file: test# owner: root# group: rootuser::rw-group::r--other::r—
給apache用戶設置讀寫執行test文件的權限:
setfacl –m u:apache:rwx test
查看test文件屬性的變化:
ll test-rw-rwxr--+ 1 root root 0 May 28 09:04 test
權限部分多個了 “+”, 並且與原來(644)也不一樣了。
查看ACL權限的變化:
getfacl test...user:apache:rwx...mask::rwx...
和設置前相比多了user:apache:rwx和 mask::rwx,此時用戶apache已經擁有了讀寫執行test文件的權限。
和針對用戶的設置幾乎一樣,只是把小寫的u換成小寫的g就行了。
這是一個很棒的例子,它能讓我們創建的子文件或者子文件夾繼承父文件夾的權限設置!
mkdir mydirll -d mydirdrwxr-xr-x 2 root root 4096 May 28 09:35 mydirsetfacl –m d:u:apache:rwx mydir
注意參數 d 在這裡起到了決定性的作用。
查看下屬性的變化:
getfacl mydir...default:user::rwxdefault:user:apache:rwxdefault:group::r-xdefault:mask::rwxdefault:other::r-x
多了些 default開頭的項,在mydir下創建一個新文件試試:
touch mydir/abcgetfacl mydir/abc...user:apache:rwx #effective:rw-group::r-x #effective:r--mask::rw-...
OK, 看上去還不賴,默認情況下apache用戶是可以對這個文件進行讀寫執行操作的。
這裡只是簡介的介紹了ACL的概念和一些典型的用法,更多的使用方式請參考幫助文檔。
http://xxxxxx/Linuxjc/1134085.html TechArticle