Linux學習之ACL許可權詳解(十)
Linux系統ACL許可權詳解
目錄
ACL許可權簡介與開啟 檢視與設定ACL許可權 最大有效許可權與刪除ACL許可權 預設ACL許可權和遞迴ACL許可權
ACL許可權簡介與開啟許可權
ACL許可權簡介
使用者許可權管理始終是Linux系統管理中最重要的環節。大家對Linux/Unix的UGO許可權管理方式一定不陌生,還有最常用的chmod命令。 為了實現一些比較複雜的許可權管理,往往不得不建立很多的組,並加以詳細的記錄和區分。 有一種方法可以實現靈活的許可權管理(檔案的額外賦權機制)除了檔案的所有者,所屬組和其他人,可以對更多的使用者設定許可權,這就是訪問控制列表(Access Control List)。
開啟許可權
ACL許可權是需要分割槽支援的,預設情況下分割槽是支援的,如果不支援就需要開啟ACL許可權。 這裡只做介紹,可以跳過,因為現在linux系統分割槽預設支援ACL。
兩種方法: 臨時開啟ACL許可權: mount -o remount,acl / 永久開啟分割槽ACL許可權 1.vi /etc/fstab 2.mount -o remount /
第一種方法很簡單,下面只介紹第二種方法
開啟檔案
在第一行有效行的defaults後面加上acl
然後重新掛載一次根分割槽
mount -o remount /
檢視與設定ACL許可權
設定ACL許可權
setfacl [選項] 檔名
檢視ACL許可權
getfacle 檔名
實際演示
比如有如下場景:
某大牛在QQ群內直播講解Linux系統的許可權管理,講解完之後,他在一個公有的Linux系統中建立了一個 /project 目錄,裡面存放的是課後參考資料。那麼 /project 目錄對於大牛而言是所有者,擁有讀寫可執行(rwx)許可權,對於QQ群內的所有使用者他們都分配的一個所屬組裡面,也都擁有讀寫可執行(rwx)許可權,而對於 QQ 群外的其他人,那麼我們不給他訪問/project 目錄的任何許可權,那麼 /project 目錄的所有者和所屬組許可權都是(rwx),其他人許可權無。
問題來了,這時候直播有旁聽的人蔘與(不屬於QQ群內),聽完之後,我們允許他訪問/project目錄檢視參考資料,但是不能進行修改,也就是擁有(r-x)的許可權,這時候我們該怎麼辦呢?我們知道一個檔案只能有一個所屬組,我們將他分配到QQ群所在的所屬組內,那麼他擁有了寫的許可權,這是不被允許的;如果將這個旁聽的人視為目錄/project 的其他人,並且將/project目錄的其他人許可權改為(r-x),那麼不是旁聽的人也能訪問我們/project目錄了,這顯然也是不被允許的。怎麼解決呢?
下面 我們 來完成這整個過程
第一步:建立一個/project目錄
第二步:新建兩個使用者(在這個場景裡屬於群內學員)
第三步:新建一個組
第四步:將兩個使用者新增到組裡面
第五步:更改目錄的所有者和所屬組
第六步:賦予許可權770
第七步:檢視許可權
第八步:新建一個使用者 (別的群的學員)
第九步:給這個使用者設定ACL許可權,許可權為r-w
第十步:檢視/project的ACL
最大有效許可權與刪除ACL許可權
最大有效許可權
可能會有點不好理解,什麼意思呢?
如果A為mask許可權 ,B為ACL許可權,and為使用者的有效許可權
其實到這裡,大家就會明白,mask許可權是用來約束使用者許可權的,如果我們給使用者給的ACL許可權過大就不好了,所以我們事先把mask許可權設定好,這樣使用者的有效許可權就不會超過mask許可權了。
檢視與設定mask許可權
檢視mask許可權 getfacl 檔名 設定mask許可權 setfacl -m m:許可權 檔名
刪除ACL許可權
刪除指定使用者的 ACL 許可權
setfacl -x u:使用者名稱 檔名
刪除指定使用者組的 ACL 許可權
setfacl -x g:組名 檔名
刪除檔案的所有 ACL 許可權
setfacl -b 檔名
預設ACL許可權和遞迴ACL許可權
遞迴 ACL 許可權
通過加上選項 -R 遞迴設定檔案的 ACL 許可權,所有的子目錄和子檔案也會擁有相同的 ACL 許可權。
setfacl -m u:使用者名稱:許可權 -R 檔名
預設 ACL 許可權
如果給父目錄設定了預設的 ACL 許可權,那麼父目錄中所有新建的子檔案會繼承父目錄的 ACL 許可權。
setfacl -m d:u:使用者名稱:許可權 檔名