Linux系列教程(十六)——Linux權限管理之ACL權限

  經過前面的兩篇博客咱們介紹了Linux系統的用戶管理,Linux用戶和用戶組管理之相關配置文件 講解了用戶管理的相關配置文件,包括用戶信息文件/etc/passwd,用戶密碼文件/etc/shadow;而後介紹了用戶組信息文件/etc/group,用戶組密碼文件/etc/gshadow。用戶的家目錄,以及用戶的模板目錄;Linux用戶和用戶組管理之用戶管理命令 講解了管理用戶和用戶組的命令,包括新建、修改、查看等等以及用的比較多的切換用戶命令 su。那麼用戶管理結束以後,咱們將進入linux的權限管理介紹,本篇博客介紹的是Linux權限管理的ACL權限。html

一、什麼是 ACL 權限?

  好比有以下場景:java

  某大牛在QQ羣內直播講解Linux系統的權限管理,講解完以後,他在一個公有的Linux系統中建立了一個 /project 目錄,裏面存放的是課後參考資料。那麼 /project 目錄對於大牛而言是全部者,擁有讀寫可執行(rwx)權限,對於QQ羣內的全部用戶他們都分配的一個所屬組裏面,也都擁有讀寫可執行(rwx)權限,而對於 QQ 羣外的其餘人,那麼咱們不給他訪問/project 目錄的任何權限,那麼 /project 目錄的全部者和所屬組權限都是(rwx),其餘人權限無。linux

  問題來了,這時候直播有旁聽的人蔘與(不屬於QQ羣內),聽完以後,咱們容許他訪問/project目錄查看參考資料,可是不能進行修改,也就是擁有(r-x)的權限,這時候咱們該怎麼辦呢?咱們知道一個文件只能有一個所屬組,咱們將他分配到QQ羣所在的所屬組內,那麼他擁有了寫的權限,這是不被容許的;若是將這個旁聽的人視爲目錄/project 的其餘人,而且將/project目錄的其餘人權限改成(r-x),那麼不是旁聽的人也能訪問咱們/project目錄了,這顯然也是不被容許的。怎麼解決呢?windows

  

  咱們想一想windows系統裏面給某個文件分配權限的辦法:post

  

  如上圖,咱們想要讓某個用戶不具有某個權限,直接不給他分配這個目錄的相應權限就好了。那麼對應到Linux系統也是這樣,咱們給指定的用戶指定目錄分配指定的權限,也就是 ACL 權限分配。htm

  

二、查看分區 ACL 權限是否開啓:dump2fs

  咱們看某個文件(Linux系統中目錄也是文件,一切皆是文件)是否支持 ACL 權限,首先要看文件所在的分區是否支持 ACL 權限。blog

  ①、查看當前系統有哪些分區:df -h

  

  ②、查看指定分區詳細文件信息:dumpe2fs -h 分區路徑

  下面是查看 根分區/ 的詳細文件信息繼承

  

三、開啓分區 ACL 權限

  ①、臨時開啓分區 ACL 權限

mount -o remount,acl /

  從新掛載根分區,並掛載加入 acl 權限。注意這種命令開啓方式,若是系統重啓了,那麼根分區權限會恢復到初始狀態。遞歸

  ②、永久開啓分區 ACL 權限

  1、修改配置文件 /etc/fstabrem

  

  上面是修改根分區擁有 acl 權限

UUID=490ed737-f8cf-46a6-ac4b-b7735b79fc63 /                       ext4    defaults,acl        1 1

  2、從新掛載文件系統或重啓系統,使得修改生效

mount -o remount /

 

四、設定 ACL 權限:setfacl 選項 文件名

  

  ①、給用戶設定 ACL 權限:setfacl -m u:用戶名:權限 指定文件名

  ②、給用戶組設定 ACL 權限:setfacl -m g:組名:權限 指定文件名

  注意:咱們給用戶或用戶組設定 ACL 權限其實並非真正咱們設定的權限,是與 mask 的權限「相與」以後的權限纔是用戶的真正權限,通常默認mask權限都是rwx,與咱們所設定的權限相與就是咱們設定的權限。mask 權限下面咱們會詳細講解

  範例:全部者root用戶在根目錄下建立一個文件目錄/project,而後建立一個QQ羣所屬組,所屬組裏面建立兩個用戶zhangsan和lisi。全部者和所屬組權限和其餘人權限是770。

     而後建立一個旁聽用戶 pt,給他設定/project目錄的 ACL 爲 r-x。

   

  目錄 /project 的全部者和所屬組其餘人權限設定爲 770。接下來咱們建立旁聽用戶 pt,並賦予 acl 權限 rx

  

  爲了驗證 pt 用戶對於 /project 目錄沒有寫權限,咱們用 su 命令切換到 pt 用戶,而後進入 /project 目錄,在此目錄下建立文件,看是否能成功:

  

  上面提示權限不夠,說明 acl 權限賦予成功,注意以下所示,若是某個目錄或文件下有 + 標誌,說明其具備 acl 權限。

  

 

五、查看 ACL 權限:getfacl 文件名

  

 

六、最大有效權限 mask

  前面第4點咱們講過,咱們給用戶或用戶組設定 ACL 權限其實並非真正咱們設定的權限,是與 mask 的權限「相與」以後的權限纔是用戶的真正權限,通常默認mask權限都是rwx,與咱們所設定的權限相與就是咱們設定的權限。

  咱們經過 getfacl 文件名 也能查看 mask 的權限,那麼咱們怎麼設置呢?

setfacl -m m:權限 文件名

  

 

七、刪除 ACL 權限

  ①、刪除指定用戶的 ACL 權限

setfacl -x u:用戶名 文件名

  ②、刪除指定用戶組的 ACL 權限

setfacl -x g:組名 文件名

  ③、刪除文件的全部 ACL 權限

setfacl -b 文件名

 

八、遞歸 ACL 權限

  經過加上選項 -R 遞歸設定文件的 ACL 權限,全部的子目錄和子文件也會擁有相同的 ACL 權限。

setfacl -m u:用戶名:權限 -R 文件名

 

九、默認 ACL 權限

  若是給父目錄設定了默認的 ACL 權限,那麼父目錄中全部新建的子文件會繼承父目錄的 ACL 權限。

setfacl -m d:u:用戶名:權限 文件名

 

十、總結

  本篇博客咱們介紹了權限管理的ACL權限,經過設定 ACL 權限,咱們爲某個用戶指定某個文件的特定權限,在實際權限管理中仍是用的比較多的。

相關文章
相關標籤/搜索