某些系統帳號但願對某一些文件有管理權限,有三種方法:linux
1 加入屬主所在的同一個組中,這等於擴大了訪問其餘文件的權限了。ide
2 加入other中,這樣權限放開的更大了。測試
3 給文件的sudo權限。spa
4 採用acl策略。rest
前三種方法都有本身的缺點,最終考慮使用acl。blog
所謂ACL,就是Access Control List,一個文件/目錄的訪問控制列表,能夠針對任意指定的用戶/組分配RWX權限。此功能遞歸
須要內核的支持,在linux 2.6之後默認加入內核中。ip
acl由一系列的訪問控制權限組成,主要的有以下:ci
ACL_USER_OBJ: 至關於Linux裏file_owner的權限rem
ACL_USER: 定義了額外的用戶能夠對此文件擁有的權限
ACL_GROUP_OBJ: 至關於Linux裏group的權限
ACL_GROUP: 定義了額外的組能夠對此文件擁有的權限
ACL_MASK: 定義了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大權限
ACL_OTHER: 至關於Linux裏other的權限
查看內核版本 uname -a
查看是否安裝acl dumpe2fs |grep "Default mount iptions"
在設置acl規則前咱們先了解一下設置acl經常使用的選項:
-b,--remove-all
刪除全部擴展的acl規則,基本的acl規則(全部者,羣組,其餘)將被保留。
-k,--remove-default
刪除缺省的acl規則。若是沒有缺省規則,將不提示。
-n,--no-mask
不要從新計算有效權限。setfacl默認會從新計算ACL mask,除非mask被明確的制定。
--mask
從新計算有效權限,即便ACL mask被明確指定。
-d,--default
設定默認的acl規則。
--restore=file
從文件恢復備份的acl規則(這些文件可由getfacl -R產生)。經過這種機制能夠恢復整個目錄樹的acl規則。此參數不能和除--test之外的任何參數一同執行。
--test
測試模式,不會改變任何文件的acl規則,操做後的acl規格將被列出。
-R,--recursive
遞歸的對全部文件及目錄進行操做。
-P,--physical
跳過全部符號連接,包括符號連接文件。
-m -x -M -X
-m -x 是在設置acl所須要定義的選項,-m 表示設置acl ,-x 表示刪除acl規則
-M -X 則能夠在文件中讀入acl規則,使相應的規則生效
用cp來複制文件的時候咱們如今能夠加上-p選項.這樣在拷貝文件的時候也將拷貝文件的ACL屬性.對於不能拷貝的ACL屬性將給出警告
mv命令將會默認地移動文件的ACL屬性. 一樣若是操做不容許的狀況下會給出警告
開始設置規則:
以root 用戶創建一個文件a.txt,設置權限只有root可讀
經過acl,給niu用戶增長可讀權限
設置acl以前:
設置acl:此時 ls -l 後面會多出個 + 號
設置acl以後:niu 用戶能夠讀取a.txt的內容
在acl的mask不存在的狀況下,權限位的第二組才表示組的權限,若是acl中存在mask,則第二組權限位表明mask值,mask規定了ACL_USER, ACL_GROUP和ACL_GROUP_OBJ的最大值,在設置的權限相沖突的狀況下以設置的mask爲主
例如: 設置acl 用戶niu 對a.txt 有rw權限,設置mask 位r 。結果應該是用戶牛對a.txt只有讀權限
驗證:只可讀不可寫
把mask改成rw,結果應該是用戶niu 具備讀寫權限
刪除acl,也能夠從文件中恢復文件原有的acl規則,以下:先保存規則到一個文件中
恢復acl