ACL的全稱是 Access Control List (通路控制清單) ,一個針對檔案/目錄的通路控制清單。它在UGO權限管理的基礎上為檔案系統提供一個額外的、更靈活的權限管理機制。它被設計為UNIX檔案權限管理的一個補充。ACL允許你給任何的使用者或使用者組設定任何檔案/目錄的通路權限。
既然是作為UGO權限管理的補充,ACL自然要有UGO辦不到或者很難辦到的本事,例如:
可以針對使用者來設定權限
可以針對使用者組來設定權限
子檔案/目錄繼承父目錄的權限
ACL需要Linux核心和檔案系統的配合才能工作,目前我們能見到的大多數Linux發行版本預設都是支援的。但最好還是能夠先檢查一下:
我們能夠看到預設情況下(Default mount options:)已經加入 acl 支援了。
我們可以使用setfacl和getfacl指令來設定或觀察檔案/目錄的acl權限。
參數不多,直接列出來了:
先建立一個測試檔案test,然後檢視其預設的權限:
給apache使用者設定讀寫執行test檔案的權限:
檢視test檔案屬性的變化:
權限部分多個了 “+”, 并且與原來(644)也不一樣了。
檢視ACL權限的變化:
和設定前相比多了user:apache:rwx和 mask::rwx,此時使用者apache已經擁有了讀寫執行test檔案的權限。
和針對使用者的設定幾乎一樣,隻是把小寫的u換成小寫的g就行了。
這是一個很棒的例子,它能讓我們建立的子檔案或者子檔案夾繼承父檔案夾的權限設定!
注意參數 d 在這裡起到了決定性的作用。
檢視下屬性的變化:
多了些 default開頭的項,在mydir下建立一個新檔案試試:
OK, 看上去還不賴,預設情況下apache使用者是可以對這個檔案進行讀寫執行操作的。
這裡隻是簡介的介紹了ACL的概念和一些典型的用法,更多的使用方式請參考幫助文檔。
本文轉自sparkdev部落格園部落格,原文連結:http://www.cnblogs.com/sparkdev/p/5536868.html,如需轉載請自行聯系原作者