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é)果如下圖所示:
同時查看/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)限給刪除了。現(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之前否則會報錯J赐取W烊俊!
執(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)限,如下圖所示: