Linux系統setacl、getacl命令使用方法,以及mask權限作用。


setfacl 命令設置ACL權限。getfacl 命令用於顯示文件上設置的 ACL 信息。
ACL( Access Control List (訪問控制列表))提供的是在所有者、所屬組、其他人的讀/寫/執行權限之外的特殊權限控制。通俗來講,基於普通文件或目錄設置 ACL 其實就是針對指定的用戶或用戶組設置文件或目錄的操作權限。


getfacl命令格式

getfacl [參數] [目標文件名]

一般用到的參數有以下幾種

參數 作用
a 僅顯示文件acl
d 僅顯示默認的acl
R 遞歸顯示子目錄acl

setfacl命令格式

setfacl [參數] [ugm]:[用戶名]:[rwx] [目標文件名]

第二欄參數,u代表用戶,g代表群組,而使用m參數可修改最大有效訪問權限


setfacl參數

參數 作用
m 設置acl參數,不可與-x合用
x 刪除acl參數
b 刪除全部的acl參數
R 針對目錄設置acl權限,其子目錄會繼承其權限,需要與m、x等結合使用
d 為目錄添加默認acl,需要與m結合使用
k 刪除默認的acl參數

下面對一些常用命令進行展示

用於測試的用戶:root、wang
用於測試的樣例文件關系

  • ~
    • testsetfacl
      • test
      • testfacl.txt

獲取testsetfacl的acl權限

[root@master ~]# getfacl testsetfacl
# file: testsetfacl        文件名
# owner: root              文件所有者,ls -l 第三列信息
# group: root              文件所屬群組, ls -l 第四列信息
user::rwx                  所有者權限
group::r-x                 所屬群組權限
other::r-x	               其他用戶權限

查看用戶wang的權限

[root@master ~]# su wang
[wang@master root]$ cd testsetfacl  可以進入testsetfacl文件
[wang@master testsetfacl]$ exit

修改wang用戶的權限為0

[root@master ~]# setfacl -Rm u:wang:--- testsetfacl
[root@master ~]# getfacl -R testsetfacl
# file: testsetfacl
# owner: root
# group: root
user::rwx
user:wang:---                       #增加了此行,權限為0
group::r-x
mask::r-x
other::r-x

# file: testsetfacl/test
# owner: root
# group: root
user::rwx
user:wang:---
group::r-x
mask::r-x
other::r-x

# file: testsetfacl/testsetfacl.txt
# owner: root
# group: root
user::rw-
user:wang:---
group::r--
mask::r--
other::r--

切換到wang用戶,執行cd命令,wang用戶已經不能進入testsetfacl目錄
在這里插入圖片描述


嘗試修改預設acl

[root@master ~]# setfacl -dm u:wang:rwx testsetfacl
[root@master ~]# getfacl -R testsetfacl
# file: testsetfacl
# owner: root
# group: root
user::rwx
user:wang:---
group::r-x
mask::r-x
other::r-x
default:user::rwx             #testsetfacl增加了五行default
default:user:wang:rwx         #即預設acl,在其下創建子目錄
default:group::r-x            #會繼承預設acl,
default:mask::rwx
default:other::r-x

# file: testsetfacl/test
# owner: root
# group: root
user::rwx
user:wang:---
group::r-x
mask::r-x
other::r-x

# file: testsetfacl/testsetfacl.txt
# owner: root
# group: root
user::rw-
user:wang:---
group::r--
mask::r--
other::r--


測試目錄文件繼承效果

[root@master ~]# cd testsetfacl
[root@master testsetfacl]# mkdir testd
[root@master testsetfacl]# getfacl testd
# file: testd
# owner: root
# group: root
user::rwx
user:wang:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:wang:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
#創建的目錄完全繼承了testsetfacl的預設acl
#注意,若文件夾或文件在增加預設acl前就已經創建,則其不會繼承
#預設acl,其子文件及目錄也不會繼承。

測試一般文件繼承效果

[root@master testsetfacl]# touch test.txt
[root@master testsetfacl]# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
user:wang:rwx                   #effective:r--
group::r-x                      #effective:r--
mask::r--
other::r--
#一般文件則只繼承群組和特定用戶acl,其他權限則和
#沒有acl的情況下創建文件的權限一樣

從以上命令結果可以看到增加了effective一欄信息,實際上是與mask一行權限有關。mask一行即為最大有效訪問權限,作用是控制文件的訪問權限,其他用戶或組設定ACL實際權限都是與mask最大有效權限相與的結果。test.txt 文件的mask權限為 :r-- 。group和指定用戶wang 的權限雖為 r-x、rwx,但與 r-- 相與運算后 ,均為 r–。只能讀取test.txt。

修改默認mask權限可通過以下命令。

setfacl -Rm m:---  testsetfacl


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM