ACL權限控制

ACL,即訪問控制列表(Access Control List), 可以實現更爲靈活的文件訪問權限控制,除了文件的所有者,所屬組和其他人,可以爲更多的用戶設置權限,ACL可以對特定的用戶、特定的用戶組、特定的文件或目錄來進行rwx的權限控制。
如,某一個文件,不讓單一的某個用戶訪問。

1.設置文件訪問權限setfacl

chmod命令可以把文件權限分爲u:g:o,也就是(user:group:other)三組,而setfacl可以對每一個文件或目錄設置更精確的文件權限,setfacl可以理解爲文件訪問權限擴展或者說增強。
語法如下:

setfacl [-bkndrlp] {-m|-M|-x|-X} file

-m,   --modify=acl   修改文件的acl權限
格式:setfacl -m file or dir

-M,   --modify-file=file   通過acl配置文件來爲文件設置acl訪問權限
格式:setfacl -M xxx.acl file or dir

 xxx.acl中格式如下:
 #u:表示給用戶添加權限,
 #user:指定確定存在的用戶名,
 #rwx:表示具有訪問文件具有的權限
 u:user:rwx
 #g:表示給用組添加權限,
 # group:指定確定存在的用戶組,
 #rwx:表示具有訪問文件具有的權限
g:group:r

-x,   --remove=acl   刪除文件的acl訪問權限
-X,   --remove-file=file   刪除file文件提供的acl權限
-b,   --remove-all   刪除所有 acl 權限
-k,   --remove-default   刪除缺省的acl規則。如果沒有缺省規則,將不提示。
      --set=acl   
      -set-file=file   
      --mask   重新計算有效權限,即使ACL mask被明確指定。 

-n,   --no-mask   不要重新計算有效權限。setfacl默認會重新計算ACL mask,除非mask被明確的制定。有效權限是由兩部分組成
的,一部分是通過setfacl設置的權限,一部分是由mask設置的權限,通過
setfacl添加進來的用戶具有的權限會首mask的限制,可以將mask作爲一個
統一控制門限,通過setfacl設置的用戶可以實現一鍵控制。

-d,   --default   使用默認的acl權限操作

-R,   --recursive   遞歸設置acl權限,從當前目錄開始,遞歸設置子目錄下的
文件及目錄權限

--restore=file   從文件恢復備份的acl規則(這些文件可由getfacl -R產生)。
通過這種機制可以恢復整個目錄樹的acl規則。此參數不能和除--test以外的
任何參數一同執行。

--test  測試模式,不會改變任何文件的acl規則,操作後的acl規格將被列出。
-L,--logical:跟蹤符號鏈接,默認情況下只跟蹤符號鏈接文件,跳過符號
鏈接目錄。
-P,--physical:跳過所有符號鏈接,包括符號鏈接文件。
-v,   --version   輸出setfacl的版本號並退出。
-h,   --help   輸出幫助信息。

注意

  • centos7及以上的版本,xfsext4文件系統具有ACL功能
  • centos7及以前的版本,默認手工創建的ext4文件系統沒有ACL功能,需要手動添加
    tune2fs -o acl /dev/sdb1
    mount -o acl /dev/sdb1 /mnt/test
  • ACL生效順序:所有者 > 自定義用戶 > 自定義組 > 其他人
  • 全局訪問控制權限生效順利:
  1. 檢查所有者是否具有訪問權限;
  2. 檢查ACL權限是否具有訪問權限;
  3. 檢查用戶是否具有訪問權限;
  4. 檢查用戶所在的組是否具有訪問權限;
  5. 檢查other是否具有訪問權限;
2.備份和恢復ACL

主要的文件操作拷貝命令cpscp等都支持ACL,只需要在命令選項上加上-p參數即可,但是常用的備份工具是不會保留目錄和文件ACL信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章