從零開始學(xué)習(xí)Linux(二十四):ACL權(quán)限查看與設(shè)置

1、設(shè)置ACL權(quán)限

命令格式:setfacl [選項] 文件名;
選項說明:

  • -m:設(shè)定ACL權(quán)限;
  • -x:刪除指定的ACL權(quán)限;
  • -b:刪除所有的ACL權(quán)限;
  • -d:設(shè)定默認(rèn)的ACL權(quán)限;
  • -k:刪除默認(rèn)ACL權(quán)限;
  • -R:遞歸設(shè)定ACL權(quán)限;

我們以上一小節(jié)中的舉例說明:

整個過程如下:
(1)創(chuàng)建兩個用戶codea、codeb,作為團隊開發(fā)人員;
(2)創(chuàng)建學(xué)習(xí)用戶learnc;
(3)創(chuàng)建開發(fā)團隊devgroup;
(4)創(chuàng)建項目目錄/project;
(5)將項目目錄的所有者變更為root,所屬組變更為devgroup;
(6)將項目目錄權(quán)限設(shè)置為rwxrwx---(770);
(7)使用ACL方式給用戶賦予r-x權(quán)限;
(8)創(chuàng)建學(xué)習(xí)團隊learngroup;
(9)使用ACL方式給團隊learngroup賦予r-x權(quán)限;

[root@VM-0-8-centos ~]# useradd codea
[root@VM-0-8-centos ~]# useradd codeb
[root@VM-0-8-centos ~]# useradd learnc
[root@VM-0-8-centos ~]# groupadd devgroup
[root@VM-0-8-centos ~]# mkdir /project
[root@VM-0-8-centos ~]# chown root:devgroup /project/
[root@VM-0-8-centos ~]# chmod -R 770 /project/
[root@VM-0-8-centos ~]# setfacl -m u:learnc:rx /project
[root@VM-0-8-centos ~]# groupadd learngroup
[root@VM-0-8-centos ~]# setfacl -m g:learngroup:rx /project/

說明:
(1)為用戶分配權(quán)限,使用 u:用戶名:權(quán)限 格式。
(2)為組分配權(quán)限,使用 g:組名:權(quán)限 格式。

2、查看ACL權(quán)限

命令格式:getfacl 文件名;

執(zhí)行命令,查看/project目錄的ACL權(quán)限:

getfacl /project/

分別查看未設(shè)置ACL權(quán)限和設(shè)置ACL權(quán)限的文件,查看結(jié)果如下圖所示:

普通未設(shè)置ACL權(quán)限的文件
設(shè)置ACL權(quán)限的文件

同時查看/project和/project2目錄文件,如下圖所示:

設(shè)置了ACL權(quán)限的文件夾比未設(shè)置的多了一個+號。

3、ACL最大有效權(quán)限

mask是用來指定最大有效權(quán)限的。
如果給某用戶賦予了ACL權(quán)限,需要和mask權(quán)限進行“與”計算后,才能得到用戶的真正權(quán)限。

此舉是為了防止給用戶或者用戶組的權(quán)限過高,提前設(shè)定,做到權(quán)限的雙重保證。

與計算邏輯,舉例說明:

A B 與計算
r r r
r - -
- r -
- - -

命令格式:setfacl -m m:權(quán)限 文件名;

setfacl -m m:rx /project

更改完mask最大權(quán)限以后,查看/project目錄的ACL權(quán)限,如下圖所示:

圖中紅框標(biāo)注的信息表示:雖然group組的權(quán)限設(shè)置的是rwx,但是真正有效的權(quán)限是r-x。mask最大有效權(quán)限不影響所有者權(quán)限。

4、刪除ACL權(quán)限

4.1、刪除指定用戶的ACL權(quán)限

命令格式:setfacl -x u:用戶名 文件名;

執(zhí)行命令,刪除用戶learnc的ACL權(quán)限:

setfacl -x u:learnc /project

整個直接過程如下圖所示:

在刪除命令執(zhí)行前有user:learnc:r-x選項,執(zhí)行后再次查看learnc的ACL權(quán)限消失。而且,此時設(shè)置的mask權(quán)限也恢復(fù)成rwx。

4.2、刪除指定用戶組的ACL權(quán)限

命令格式:setfacl -x g:組名 文件名;

執(zhí)行命令,刪除learngroup組的ACL權(quán)限:

setfacl -x g:learngroup /project

整個直接過程如下圖所示:

4.3、刪除文件所有的ACL權(quán)限

命令格式:setfacl -b 文件名;

在4.2章節(jié)中,我們將用戶learnc和用戶組learngroup的ACL權(quán)限給刪除了?,F(xiàn)在我們重新添加上,并且查看/project目錄的ACL權(quán)限。如下圖所示:

執(zhí)行命令刪除/project目錄的所有的ACL權(quán)限:

setfacl -b /project

再次查看如下圖所示:

5、遞歸設(shè)置ACL權(quán)限

遞歸是父目錄在設(shè)定ACL權(quán)限時,所有的子文件、子目錄以及子目錄中的子文件也會擁有相同的ACL權(quán)限。

命令格式:setfacl -m u:用戶名:權(quán)限 -R 目錄名;

注意:-R選項必須放在后面才行,不能放在-m之前否則會報錯?。?!

執(zhí)行命令,遞歸設(shè)置learnc用戶/project目錄的權(quán)限為rx:

setfacl -m u:learnc:rx -R /project

執(zhí)行命令之前查看/project目錄沒有任何ACL權(quán)限,執(zhí)行命令后再次查看,發(fā)現(xiàn)/project/china目錄learnc用戶都有了rx權(quán)限。

整個過程如下圖所示:

6、設(shè)置默認(rèn)ACL權(quán)限

默認(rèn)ACL權(quán)限的作用是如果給父目錄設(shè)定默認(rèn)ACL權(quán)限,那么父目錄中所有新建的子文件和子目錄都會繼承父目錄的ACL權(quán)限;

命令格式:setfacl -m d:u:用戶名:權(quán)限 目錄名;

說明:可以在此命令后面加-R來進行遞歸,達到一條命令同時設(shè)置ACL默認(rèn)權(quán)限和設(shè)置遞歸;

在/project/china目錄下面新建文件shanxi,查看文件的ACL權(quán)限,如下圖所示:

發(fā)現(xiàn)此時新創(chuàng)建的文件沒有ACL權(quán)限。

執(zhí)行命令為/project/china文件設(shè)置默認(rèn)ACL權(quán)限:

setfacl -m d:u:learnc:rx /project/china/

在/project/china目錄下面創(chuàng)建文件neimenggu,然后查看neimenggu文件對應(yīng)的ACL權(quán)限,如下圖所示:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容