溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux的ACL權(quán)限怎么配置

發(fā)布時(shí)間:2022-01-05 16:42:45 來(lái)源:億速云 閱讀:144 作者:iii 欄目:網(wǎng)絡(luò)安全

這篇文章主要介紹“Linux的ACL權(quán)限怎么配置”,在日常操作中,相信很多人在Linux的ACL權(quán)限怎么配置問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Linux的ACL權(quán)限怎么配置”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

“很多初學(xué) Linux 的人都會(huì)有這樣的疑惑,權(quán)限有什么作用呢?我什么需要配置和修改權(quán)限呢?因為絕大多數(shù)初學(xué)者使用的都是個(gè)人計(jì)算機(jī),個(gè)人計(jì)算機(jī)主要使用管理身份登,而且不會(huì)有多個(gè)用時(shí)存在。但是在服務(wù)器上,需要 root 和普通用時(shí)存在、同時(shí)管理服務(wù)器,所以合理的權(quán)限分配是保務(wù)器安全與穩(wěn)定的前提?!?/strong>

在普通權(quán)限中,用戶對(duì)文件只有三種身份,就是所屬主、所屬組和其他人;每種用戶身份擁有讀(read)、寫(xiě)(write)和執(zhí)行(execute)三種權(quán)限。但是在實(shí)際工作中,這三種身份實(shí)在是不夠用,舉個(gè)例子來(lái)看看。

Linux的ACL權(quán)限怎么配置

根目錄中有一個(gè) /item目錄,這是班級(jí)的項(xiàng)目目錄。班級(jí)中的每個(gè)學(xué)員都可以訪問(wèn)和修改這個(gè)目錄,老師也需要對(duì)這個(gè)目錄擁有訪問(wèn)和修改權(quán)限,其他班級(jí)的學(xué)員當(dāng)然不能訪問(wèn)這個(gè)目錄。需要怎么規(guī)劃這個(gè)目錄的權(quán)限呢?應(yīng)該這樣:老師使用root 用戶,作為這個(gè)目錄的所屬主,權(quán)限為 rwx;班級(jí)所有的學(xué)員都加入 group 組,使 group 組作為 /item目錄的屬組,權(quán)限是 rwx;其他人的權(quán)限設(shè)定為 0。這樣這個(gè)目錄的權(quán)限就可以符合我們的項(xiàng)目開(kāi)發(fā)要求了。

有一天,班里來(lái)了一位試聽(tīng)的學(xué)員 st,她必須能夠訪問(wèn) /item目錄,所以必須對(duì)這個(gè)目錄擁有 r 和 x 權(quán)限;但是她又沒(méi)有學(xué)習(xí)過(guò)以前的課程,所以不能賦予她 w 權(quán)限,怕她改錯(cuò)了目錄中的內(nèi)容,所以學(xué)員 用戶st的權(quán)限就是 r-x。可是如何分配她的身份呢?變?yōu)閷僦???dāng)然不行,要不 root 該放哪里?加入 group 組?也不行,因?yàn)?group 組的權(quán)限是 rwx,而我們要求學(xué)員 st 的權(quán)限是 r-x。如果把其他人的權(quán)限改為 r-x 呢?這樣一來(lái),其他班級(jí)的所有學(xué)員都可以訪問(wèn) /item目錄了。
當(dāng)出現(xiàn)這種情況時(shí),普通權(quán)限中的三種身份就不夠用了。ACL 權(quán)限就是為了解決這個(gè)問(wèn)題的。在使用 ACL 權(quán)限給用戶 st 陚予權(quán)限時(shí),st 既不是 /item 目錄的所屬主,也不是屬組,僅僅賦予用戶 st 針對(duì)此目錄的 r-x 權(quán)限。這有些類似于 Windows 系統(tǒng)中分配權(quán)限的方式,單獨(dú)指定用戶并單獨(dú)分配權(quán)限,這樣就解決了用戶身份不足的問(wèn)題。

開(kāi)啟ACL權(quán)

在CentOS 6.x 系統(tǒng)中 ACL 權(quán)限默認(rèn)是開(kāi)啟的,不需要手工開(kāi)啟。不過(guò),如果你的操作系統(tǒng)不是 CentOS 6.x,那該如何查看 ACL權(quán)限是否開(kāi)啟了呢?可以這樣查看:

#mount(查看掛載的分區(qū)情況)

Linux的ACL權(quán)限怎么配置

/dev/sda1 on /boottype xfs 

Linux的ACL權(quán)限怎么配置

#dumpe2fs –h /dev/sda3(查詢指定分區(qū)文件系統(tǒng)詳細(xì)信息)

-h:僅顯示超級(jí)塊中的信息,而不顯示磁盤(pán)塊組的詳細(xì)信息

使用mount 命令可以査看到系統(tǒng)中已經(jīng)掛載的分區(qū),而使用 dumpe2fs 命令可以査看到這個(gè)分區(qū)文件系統(tǒng)的詳細(xì)信息。大家可以看到,我們的 ACL 權(quán)限是 /dev/sda3 分區(qū)的默認(rèn)掛載選項(xiàng),所以不需要手工掛載。
不過(guò)我的 Linux 系統(tǒng)如果沒(méi)有默認(rèn)掛載,則可以手工掛載嗎?當(dāng)然可以,執(zhí)行如下命令:

#mount –o remount,acl /(重新掛載根分區(qū),并加入ACL權(quán)限)

使用mount 命令重新掛載,并加入 ACL 權(quán)限。不過(guò)使用此命令是臨時(shí)生效的。要想永久生效,需要修改 /etc/fstab 文件,命令如下:

#vi /etc/fstab

UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2/ext4 defaults,acl 1 1(加入ACL權(quán)限)

#mount –o remount(重新掛載文件系統(tǒng)或重啟系統(tǒng),使其生效)

在你需要開(kāi)啟 ACL 權(quán)限的分區(qū)行上(也就是說(shuō) ACL 權(quán)限針對(duì)的是分區(qū)),手工在 defaults 后面加入",acl"即可永久在此分區(qū)中開(kāi)啟 ACL 權(quán)限。

1:ACL權(quán)設(shè)

1:ACL權(quán)限管理命令

我們知道了 ACL 權(quán)限的作用,也知道了如何開(kāi)啟 ACL 權(quán)限,接下來(lái)學(xué)習(xí)如何査看和設(shè)定 ACL 權(quán)限。命令如下:

#getfacle filename(查看ACL權(quán)限)

#setfacl option filename(設(shè)定ACL權(quán)限)

選項(xiàng):

m:設(shè)定 ACL 權(quán)限。如果是給予用戶 ACL 權(quán)限,則使用"u:用戶名:權(quán)限"格式賦予;如果是給予組 ACL 權(quán)限,則使用"g:組名:權(quán)限" 格式賦予;

-x:刪除指定的 ACL 權(quán)限;

-b:刪除所有的 ACL 權(quán)限;

-d:設(shè)定默認(rèn) ACL權(quán)限。只對(duì)目錄生效,指目錄中新建立的文件擁有此默認(rèn)權(quán)限;

-k:刪除默認(rèn) ACL權(quán)限;

-R:遞歸設(shè)定 ACL 權(quán)限。指設(shè)定的 ACL 權(quán)限會(huì)對(duì)目錄下的所有子文件生效

2和用戶組添加ACL權(quán)

舉個(gè)例子,就來(lái)看看圖 1 中的權(quán)限怎么分配。我們要求root 是 /item 目錄的屬主,權(quán)限是 rwx;tgroup是此目錄的屬組,tgroup 組中擁有班級(jí)學(xué)員 zhangsan 和lisi,權(quán)限是rwx;其他人的權(quán)限是 0。這時(shí),試聽(tīng)學(xué)員 st 來(lái)了,她的權(quán)限是 r-x。我們來(lái)看具體的分配命令。

Linux的ACL權(quán)限怎么配置

Linux的ACL權(quán)限怎么配置

Linux的ACL權(quán)限怎么配置

#useradd zhangsan

#useradd lisi

#useradd st

#groupadd tgroup

#mkdir /item

#chown root:tgroup /item/

#chmod 770 /item/

#ll –d /item/

#setfacl –m u:st:rx /item/

#cd /

#ll –d item/

drwxrwx---+ 3 root tgroup 4096 1月19日 05:20 item/

#getfacl item

大家可以看到,st 用戶既不是 /item目錄的屬主、屬組,也不是其他人,我們單獨(dú)給 st用戶分配了r-x 權(quán)限。這樣分配權(quán)限太方便了,完全不用先辛苦地規(guī)劃用戶身份了。
我想給用戶組賦予 ACL 權(quán)限可以嗎?當(dāng)然可以,命令如下:

Linux的ACL權(quán)限怎么配置

#groupadd tgroup2

#setfacl –m g:tgroup2:rwx item/

#ll –d item/

#getfacl item/

3: 最大有效權(quán)限mask

mask 是用來(lái)指定最大有效權(quán)限的。mask的默認(rèn)權(quán)限是 rwx,如果我給 st 用戶賦予了 r-x的 ACL 權(quán)限,mj 需要和 mask 的 rwx 權(quán)限"相與"才能得到 st 的真正權(quán)限,也就是 r-x "相與"rwxtj出的值是 r-x,所以 st 用戶擁有 r-x權(quán)限。

如果把 mask 的權(quán)限改為 r--,和 st 用戶的權(quán)限相與,也就是 r--"相與"r-x得出的值是 r--,st 用戶的權(quán)限就會(huì)變?yōu)橹蛔x。大家可以這么理解:用戶和用戶組所設(shè)定的權(quán)限必須在mask 權(quán)限設(shè)定的范圍之內(nèi)才能生效,mask權(quán)限就是最大有效權(quán)限。

不過(guò)我們一般不更改 mask 權(quán)限,只要給予 mask 最大權(quán)限 rwx,那么任何權(quán)限和mask 權(quán)限相與,得出的值都是權(quán)限本身。也就是說(shuō),我們通過(guò)給用戶和用戶組直接賦予權(quán)限,就可以生效,這樣做更直觀。

補(bǔ)充:邏輯與運(yùn)算的運(yùn)算符是"and"??梢岳斫鉃樯钪兴f(shuō)的"并且"。也就是相與的兩個(gè)值都為真,結(jié)果才為真;有一個(gè)值為假,與的結(jié)果就為假。比如 A 相與 B,結(jié)果入表 2 所示。

ABand
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

Sheet2邏輯與運(yùn)算

那么兩個(gè)權(quán)限相與和上面的結(jié)果類似,我們以讀(r)權(quán)限為例,結(jié)果如表 3 所示。

ABAnd
rrr
r--
-r-
---

所以,"rwx"相與"r-x",結(jié)果是"r-x";"r--"相與"r-x",結(jié)果是"r--"。

修改最大有效權(quán)限的命令如下:

Linux的ACL權(quán)限怎么配置

#setfacl –m m:rx item/

#getfacl item/

4: 默認(rèn)ACL權(quán)限和遞歸ACL權(quán)限

我們已經(jīng)給/item 目錄設(shè)定了ACL 權(quán)限,那么,在這個(gè)目錄中新建一些子文件和子目錄,這些文件是否會(huì)繼承父目錄的ACL 權(quán)限呢?Let’s go!

Linux的ACL權(quán)限怎么配置

#cd /item/

#touch abc

#mkdir d1

#ll

子文件 abc 和子目錄 d1 因?yàn)槭呛蠼⒌?,所以并沒(méi)有繼承父目錄的 ACL 權(quán)限。當(dāng)然,我們可以手工給這兩個(gè)文件分配 ACL 權(quán)限,但是如果在目錄中再新建文件,都要手工指定,則顯得過(guò)于麻煩。這時(shí)就需要用到默認(rèn)ACL 權(quán)限。

默認(rèn)ACL 權(quán)限的作用是:如果給父目錄設(shè)定了默認(rèn) ACL 權(quán)限,那么父目錄中所有新建的子文件都會(huì)繼承父目錄的 ACL 權(quán)限。默認(rèn)ACL 權(quán)限只對(duì)目錄生效。命令如下:

Linux的ACL權(quán)限怎么配置

setfacl –m d:u:st:rx /item/

#getfacl item/

#cd item/

#touch bcd

#mkdir d2

#ll

Linux的ACL權(quán)限怎么配置

原先的abc 和 d1 還是沒(méi)有ACL 權(quán)限,因?yàn)槟J(rèn) ACL 權(quán)限是針對(duì)新建立的文件生效的。
再說(shuō)說(shuō)遞歸 ACL 權(quán)限。遞歸是指父目錄在設(shè)定ACL 權(quán)限時(shí),所有的子文件和子目錄也會(huì)擁有相同的 ACL 權(quán)限。

Linux的ACL權(quán)限怎么配置

#setfacl –m u:st:rx –R/item/

-R:遞歸

#ll

默認(rèn) ACL權(quán)限指的是針對(duì)父目錄中新建立的文件和目錄會(huì)繼承父目錄的 ACL 權(quán)限,格式是"setfacl-m d:u:用戶名:權(quán)限 文件名";遞歸 ACL 權(quán)限指的是針對(duì)父目錄中已經(jīng)存在的所有子文件和子目錄繼承父目錄的 ACL 權(quán)限,格式是"setfacl-m u:用戶名: 權(quán)限 -R 文件名"。

5:刪除ACL權(quán)限

我們來(lái)看看怎么刪除 ACL 權(quán)限,命令如下:
刪除指定的ACL權(quán)限:

Linux的ACL權(quán)限怎么配置

#setfacl –x u:st /item/刪除指定用戶和用戶組的ACL權(quán)限

#getfacl item/

刪除所有ACL權(quán)限

#setfacl –b item/(會(huì)刪除文件的所有ACL權(quán)限)

#getfacl item/(所有ACL權(quán)限已被刪除)

到此,關(guān)于“Linux的ACL權(quán)限怎么配置”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI