ACL概述

ACL概述

一、什么是ACL

ACLlinux系統中一種被稱為訪問控制列表的權限控制方法,它是一種權限分配之外的普遍范式。在一般情況下,要確認三個權限組:ownergroupother。而使用ACL則可以增加權限給其他用戶或組別,不再僅僅是在“other”中定義權限,可以允許指定的用戶擁有不同于其所屬組的權限。

ACL支持多種Linux文件系統,包括ext2, ext3, ext4, XFS,
Btfrs,
等。CentOS6及之前的版本,僅操作系統安裝時創建的文件系統才會默認開啟ACL,手工創建的文件系統,需要手工開啟ACL功能。

二、啟動ACL的方法

mount
-o acl /dev/sda7 
取消的方式,重新掛載時不指定即可

tune2fs
-o acl /dev/sda7
取消的方式 tune2fs -o ^acl /dev/sda7

以上兩種方式開啟的ACL可以通過mount查看是否開啟ACL

三、ACL權限判斷的順序

先判斷是否是文件的OWNER,如果是,則執行OWNER的權限后結束,如果不是OWNER,則判斷是否是ACLUSER,如果是則執行USER權限后結束,如果不是ACLUSER, 則判斷是否屬于GROUPACL GROUP,如果是,則取最大權限(即兩者權限的合集)。如果不屬于任何GROUP,則執行OTHER

四、命令示例

基礎ACL通過兩條命令管理:setfacl用于增加或者修改ACL,getfacl用于顯示分配完的ACL。

命令語法:1、setfacl -m u:username:—[, u:username:—]file[direct](中括號表示可選擇)作用:設置ACL USER

 2、getfacl file[direct]  作用:查看指定文件的ACL設置

示例:首先在/app目錄下創建testdir目錄,并在該目錄下分別創建目錄dir和文件file(便于區分),新創建的文件其用戶和用戶組均為root,先要將testdir目錄分享給sky用戶,并為其分配rx權限,結果如下圖所示。

ACL概述

命令語法:setfacl -m g:groupname:— file[direct]  作用:設置ACL GROUP

示例:設置用戶組big對于testdir具有寫的權限,big用戶組中的輔助組成員有mu用戶,結果如下圖所示。

ACL概述

 

命令語法:setfacl –Rm u:username:— direct/direct[file]   作用:遞歸設置

示例:設置用戶wind對于testdir及其目錄下的文件具有讀寫以及執行的權限,結果如下圖所示。

ACL概述

 

命令語法:setfacl -m d: u:username:— direct/direct[file] 作用:設置ACL默認權限,僅影響新創建的文件及目錄,不影響當前。

示例:要求guanyu用戶對testdir目錄及所有用戶在其下創建的新文件新目錄均有rwx權限,結果如下圖所示:

ACL概述

 

命令語法:getfacl -R /direct > filetxt  作用:將目錄下的所有文件的ACL屬性備份到文件(-R在此處仍是遞歸的作用)

示例:將testdir/dirACL屬性備份到acltxt文件中,結果如下圖所示。

ACL概述

 

命令語法:setfacl -x u:username direct[file]  作用:單獨去除一條ACL權限

示例:刪除guanyu用戶的ACL權限

ACL概述

結果顯示刪除成功。

 命令語法:setfacl -X aclrm.txt  direct[file]

              aclrm.txt 內容如下

                     u:username

                     ggroupname

ACL概述

結果顯示刪除成功。

 命令語法:setfacl -b file 作用:去除該文件上ACL屬性。

ACL概述

結果顯示刪除成功。

 命令語法:setfacl -x d:name direct[file] 作用:刪除一條默認權限

setfacl -x g:groupname direct[file] 刪除一條非默認組的權限(不加d即可)

ACL概述

結果顯示刪除成功。

 

命令語法:setfacl -k direct[file]   作用:刪除全部默認權限

ACL概述

結果顯示刪除成功。

 

命令語法:setfacl -b direct[file] 作用:刪除ACL屬性

ACL概述

結果顯示刪除成功。

 

命令語法:

setfacl -R
–set-file=acl.txt direct[file] 
作用:通過文件還原ACL屬性的方法1

ACL概述

 

setfacl –restore
acl.txt   
通過文件還原ACL屬性的方法2

ACL概述

結果顯示還原成功。

從以上的結果顯示中,我們會發現有一個mask的值,那么mask的作用是什么呢?讓我們來做一個實驗:首先在之前設置的基礎上將testdir的所有者改為mu用戶,所有組同樣改為mu,因為root用戶是超級管理員,其權限最大,為避免因為root用戶權限過大而出現影響實驗結果的現象所以將文件所有者改為普通用戶。然后我們設置mask的值為wx,其語法命令格式與上述的設置用戶的權限類似:setfacl -m mask:—
file[direct]
,然后查看不同用戶對于testdir的權限變化,結果如下圖所示。

ACL概述

顯而易見,之前的mask值為rwx,在將mask值修改為wx之后我們看到方框標志的兩部分出現了明顯的不同,skywind以及group的權限后面均產生新的權限,而big用戶組因為其之前的權限與mask相同,所以沒有發生變化。那么不同用戶的真正權限是保持之前的還是與#effective的提示相同呢,我們可以來具體的測試一下:

首先使用測試文件所有者的權限是否變化,結果如下圖所示。

 ACL概述

由此可見,mask的值并未影響到文件所有者的權限。

接下來我們來驗證sky用戶的權限,結果如下圖所示。

ACL概述

結果顯示,sky用戶僅僅可以進入testdir目錄,讀寫權限均沒有,僅有執行權限。這樣是不是驗證#effective顯示的權限就是用戶或用戶組的實際權限,我想我們還是需要一一驗證一下。

ACL概述

此結果顯示的是wind用戶對于testdir的權限,由結果顯示可知,wind用戶對于testdir的權限是wx。最后我們來驗證一下文件所屬組的權限,首先我們將新建一個用戶使其成為用戶組mu的輔助成員,但對于testdir并沒有其他權限,從而完全繼承mu用戶組的權限以便于驗證,結果如下圖所示。

ACL概述

由結果可以看出用戶xm的權限僅有執行權限,讀寫權限均沒有。

現在,我們已經將受mask值影響的用戶及用戶組的權限一一驗證過,由此可以得出以下結論:

1mask值對于文件所有者的權限并不產生影響;

2、mask對除了文件所有者之外的用戶或者用戶組產生權限的影響;

3、被影響的用戶或用戶組的最大權限不能超過mask設置的權限,即其真正權限為自身原設置的權限與mask值的交集。

【補充】1、ACL MASK隨著新的ACL設置會被重置,重置的標準是讓該文件上的所有ACL及文件原GROUP上的權限都有效,所以一般情況下都是將所有的ACL設置完成之后再最后設置mask的值。

2、修改mask值的方法有兩種,除了上述提到過的setfacl -m mask:—
file[direct]
,還有chmod g=rwx file[direct]這種方法,因為 一旦設置了ACL權限后,原有的文件GROUP不可再更改,但權限并沒有失效,使用chmod即修改ACL MASK,且在使用ll命令查看文件的權限時,在原來group的權限位置上顯示的也是mask的權限值,只有當取消ACL之后才會顯示真正的group權限。

總結:雖然增加了很多示例,但是希望讀者可以自己也做一些相關的實驗,編者的角度畢竟也是僅僅從個人的學習角度出發,并不能涵蓋所有的方面,有些問題可能解釋的并不完美,同時也存在一些暫時沒有發現的問題。Linux的學習需要學習他人的經驗,但更需要個人的練習以及個人的思考,加油每一個學習linux的朋友!

 

 

原創文章,作者:poetic snow,如若轉載,請注明出處:http://www.www58058.com/83234

(0)
poetic snowpoetic snow
上一篇 2017-07-29 20:15
下一篇 2017-07-29 20:47

相關推薦

  • 進程和進程管理工具

    進程的相關定義以及相關工具的使用

    2017-12-17
  • N25期–第十五周作業

    1、 總結sed和awk的詳細用法; 2、刪除/boot/grub/grub.conf文件中所有行的行首的空白字符; # sed ‘s@^[[:space:]]\+@@’ /boot/grub/grub.conf 3、刪除/etc/fstab文件中所有以#開頭,后跟至少一個空白字符的行的行首的#和空白字符; # sed ‘s@^#[[:space:]]*@@…

    Linux干貨 2017-05-08
  • RAID詳解

    1、什么是RAID RAID:獨立硬盤冗余陣列,舊稱廉價磁盤冗余陣列,簡稱磁盤陣列。其基本思想就是將多個相對便宜的硬盤結合起來,成為一個磁盤陣列,是性能達到甚至超過一個昂貴、容量巨大的硬盤,根據選擇的版本不同,RAID比單顆硬盤有以下一個或多個方面的好處:增強數據集成度,增強容錯功能,增加處理量或容量。目前應用較多的有RAID0,RAID1,RAID4,RA…

    Linux干貨 2017-01-03
  • My Blog Testing!

    My Blog Testing!

    Linux干貨 2016-08-08
  • Linux如何進行分區和目錄管理

    第七周作業   1、創建一個10G分區,并格式為ext4文件系統: 1、要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包括acl; ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1 2、掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,縣不更新…

    2017-09-18
  • KeepAlived實現HAProxy雙主并實現資源的動靜分離

    KeepAlived實現HAProxy雙主并實現資源的動靜分離 前言 HAProxy介紹 實驗拓撲 實驗環境 實驗步驟 配置后端httpd服務器 配置HAProxy實現backend負載均衡 測試動靜分離效果 配置KeepAlived 測試KeepAlived 配置DNS DNS測試 最終測試 總結 前言 我們這次使用HAProxy作為負載均衡調度器來實現后…

    Linux干貨 2016-04-16
欧美性久久久久