1. 程式人生 > >Linux學習之ACL權限詳解(十)

Linux學習之ACL權限詳解(十)

nbsp col 開啟 src qq群 image 通過 defaults access

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:用戶名:權限 文件名

  

Linux學習之ACL權限詳解(十)