1. 程式人生 > >Linux 檔案許可權管理 之 ACL

Linux 檔案許可權管理 之 ACL

一 ACL 許可權簡介

  Linux 下使用者對檔案的操作許可權有 r-讀, w-寫, x-可執行三種,而對linux 下的檔案而言,使用者身份分為:所有者, 所屬組, 其它人, 且檔案的所有者,所屬組都只能是一個,所以在對檔案分配使用者的使用許可權時,只能對這三種身份進行分配rwx 許可權.Linux 主要作為伺服器系統使用,使用者眾多.所以在實際使用場景中,這三種身份並不能很好地實現資源許可權分配問題,所以就有了ACL許可權. ACL 許可權就是為了解決linux 下三種身份不能滿足資源許可權分配需求的問題的.

       setfacl命令格式:   setfacl 選項 檔案目錄名
        -m 設定ACL許可權
        -x 刪除指定使用者,使用者組的ACL許可權,針對使用者,使用者組
        -b 刪除檔案所有的ACL許可權,針對檔案
        -d 設定預設ACL許可權
        -k 刪除預設ACL許可權
        -R 遞迴設定ACL許可權

二 設定ACL許可權

  1. 設定使用者ACL許可權:指定特定使用者對此檔案/目錄擁有的r/w/x許可權

   1. 命令格式:  setfacl -m u:使用者名稱:許可權(rwx) 目錄/檔名

           2. 使用示例: setfacl -m u:user1:rwx  /aclTest

           3. 注意: 使用者具體擁有的許可權並不一定是設定acl時指定的許可權,和設定的最大預設許可權進行與操作後得到的許可權為使用者實際擁有的許可權

  2. 設定使用者組ACL許可權:指定特定使用者組對此檔案/目錄擁有的r/w/x許可權

   1. 命令格式:  setfacl -m g:使用者名稱:許可權(rwx) 目錄/檔名

          2. 使用示例:  setfacl -m g:group2:rwx  /aclTest          

     3. 注意: 使用者組中的使用者具體擁有的許可權並不一定是設定acl時指定的許可權,和設定的最大預設許可權進行與操作後得到的許可權為使用者組中的使用者實際擁有的許可權

  3. 設定最大ACL許可權:指定資源ACL許可權的最大許可權,防止給予使用者/使用者組ACL許可權過高

   1. 命令格式:  setfacl -m m:許可權(rwx) 目錄/檔名

   2. 使用示例:  setfacl -m m:rwx  /aclTest

           3. 注意:

如果不顯示設定使用者最大許可權,那麼預設最大許可權為使用者第一次設定ACL時指定的許可權值

  4. 設定遞迴許可權: 指對目前此目錄下的所有檔案均進行此ACL設定

   1. 命令格式:  setfacl -m u/g:使用者名稱:許可權(rwx) -R 目錄

           2. 使用示例: setfacl -m u:user1:rw  -R /aclTest

   3. 注意: 針對的是設定此ACL許可權之前已經建立好的所有檔案,都會預設新增此ACL許可權,之後建立的檔案不會新增此ACL限制

  5. 設定預設許可權: 指對之後此目錄下新建的檔案預設進行此ACL許可權設定

   1. 命令格式:  setfacl -m d:u/g:使用者名稱:許可權(rwx) 目錄

           2. 使用示例: setfacl -m d:u:user1:rw /aclTest

           3. 注意:針對的是設定ACL許可權之後新建的檔案預設具有的ACL許可權,無論是此目錄的子檔案,子子檔案,新建後都會擁有此ACL許可權

  6. 最佳實踐:

           同時設定目錄的預設許可權和遞迴許可權,確保此目錄下新建的檔案和目錄目前所有的檔案都具有相同的ACL許可權

   setfacl -m u:使用者名稱:許可權(rwx) -R 目錄

   setfacl -m d:u/g:使用者名稱:許可權(rwx) -R 目錄

三 檢視ACL許可權

  1. 簡單檢視: ls -ld  目錄名

   設定了ACL許可權的檔案或目錄,許可權後會新增一個+

  2. 檢視ACL許可權詳情: getfacl 檔案/目錄名

  

四 刪除ACL許可權

  1. 針對使用者/使用者組刪除:  setfacl -x  u/g:使用者名稱/組名  檔案/目錄名  : 刪除檔案或目錄具體的ACL組/使用者許可權

            eg.1  setfacl -x g:group2 /project/  : 刪除/project 的group2 組ACL許可權

            eg.2 setfacl -x u:user1 /project/  : 刪除/project  的user1 使用者ACL許可權

        2. 針對檔案刪除: setfACL -b  檔案/目錄名 : 刪除檔案目錄所有的ACL許可權

             eg.1 setfacl -b /project : 刪除/project的所有ACL許可權

五 檢測分割槽是否支援ACL(瞭解)

  ACL 許可權,需要檔案所在分割槽支援ACL許可權,預設情況下,linux 下建立的分割槽都是支援ACL 許可權的.

     1. 檢視分割槽是否支援acl 許可權: dumpe2fs -h  分割槽名

     

 2. 假如分割槽不支援ACL 許可權,那麼可以手工開啟:(瞭解即可)

       1. 重新掛載分割槽:  mount -o remount,ACL  /home      :臨時生效

  2. 修改/etc/fastab: fasttab 是系統啟動時,載入需要掛載的分割槽的檔案,千萬不能寫錯,修改只需在default後新增,ACL即可,修改之後需要重啟或者重新掛載分割槽