TrueNAS SCALE ACL權(quán)限配置中遞歸應(yīng)用和應(yīng)用到子數(shù)據(jù)集兩個選項的區(qū)別
最近剛剛開始折騰TrueNAS,也是在跟著大佬們學(xué)習(xí)中,不管是core還是scale,現(xiàn)在大家都喜歡用ACL來配置訪問權(quán)限了,ACL權(quán)限里面又區(qū)分POSIX和NFSv4,但是不管是哪一種ACL,在保存權(quán)限的時候都能看到兩個選項,“遞歸的應(yīng)用權(quán)限”apply permissions recursively 和“應(yīng)用權(quán)限到子數(shù)據(jù)集”apply permissions to child datasets,其中應(yīng)用權(quán)限到子數(shù)據(jù)集這個選項要勾選了遞歸才能選擇。
我自己在折騰的時候一直都不明白這兩個選項到底是怎么發(fā)揮作用的,網(wǎng)上好像也沒找到類似的教程或者說明,今天我自己研究了一下,把我研究出來的分享一下吧,如果有問題歡迎大佬們指出!
我這篇文章的測試環(huán)境是?TrueNAS SCALE 22.02.1版本,ACL版本用的是NFSv4。

這里插一句題外話,就是TrueNAS SCALE的ACL權(quán)限的繼承還是有點問題的,就是在你新建了一個pool之后,你把pool的ACL版本設(shè)置成NFSv4之后,在pool下面新建dataset的時候,dataset的ACL版本是沒法繼承pool里面的ACL版本的,必須再次手動修改新增dataset的ACL版本才行。當(dāng)dataset的ACL版本設(shè)置好了之后,dataset里面再新建dataset的時候ACL版本就能繼承了。(然后我最后發(fā)現(xiàn),既然如此,其實根本不需要設(shè)置pool的ACL版本了,只設(shè)置dataset的就好了,反正都沒用。。。)

回歸正題。
這里我主要對比三種情況:1.ACL配置完之后,不選擇遞歸,直接保存。2.ACL配置完之后,選擇遞歸,不選擇子數(shù)據(jù)集。3.ACL配置完之后,選擇遞歸,選擇子數(shù)據(jù)集。
我在pool里面新建了第一級dataset叫做maintest1,在maintest1里面再新建了一個dataset叫做subtest1。然后在smb里面打開maintest1的訪問權(quán)限。

現(xiàn)在開始配置ACL權(quán)限:
1、首先默認(rèn)的owner@和group@不動,反正現(xiàn)在smb不能root用戶登陸了,這里設(shè)置啥也沒用。然后刪掉everyone@選項,表示除了root沒有人可以訪問這個路徑了。然后我們用賬號g001登陸smb測試一下,確實無法訪問了,說明ACL是生效的。


再回到ACL里面,添加一個user選項,加入一個我們之前創(chuàng)建好的用戶g001,權(quán)限選擇modify,不勾選遞歸,直接保存。

刷新smb,發(fā)現(xiàn)我可以正常的打開maintest1文件夾,可以看到文件夾里面原來有一個叫做subtest1的子dataset,一個new文件夾和一個123456的文件,這些文件都是我之前通過其他方式創(chuàng)建的,主要是為了配合我們這次的實驗。

我這里是以g001的身份登陸的,ACL權(quán)限因為沒有選遞歸,所以只配置到maintest1這一層,maintest1下面的文件和文件夾都沒有被賦予ACL的權(quán)限,所以我無法進(jìn)一步打開subtest1和new文件夾,也無法讀取123456這個文件,但是我可以在maintest1這個文件夾下面新建和刪除文件夾,因為我新建的文件夾所有權(quán)是g001。




2、然后回到ACL的配置頁面,這次保存的時候把遞歸勾選上。

再回到maintest1文件夾,刷新一下。發(fā)現(xiàn)new文件夾可以打開了,包括new再里面一層的文件夾都可以打開了,也能新建文件了,因為我們上面選的遞歸生效了,這個遞歸會把該層文件夾下面的所有文件夾和文件都賦予你配置的ACL權(quán)限了。同理,123456的文件也能正常讀取和修改了。


然后我們可以發(fā)現(xiàn),subtest1仍然無法訪問,這就說明ACL的遞歸對truenas創(chuàng)建的子dataset是無效的。

3、這就引出我們最后一個嘗試方法了。
再回到ACL的配置頁面,這次保存的時候把遞歸和子dataset的選項都勾選上。

再回到maintest1文件夾,刷新一下。發(fā)現(xiàn)subtest1文件夾可以打開了,包括subtest1再里面一層的文件夾都可以打開了,也能新建文件了。同時new文件夾依舊可以訪問和修改。


通過這三個實驗應(yīng)該就能很明確配置ACL權(quán)限的時候,遞歸和子dataset這兩個選項的區(qū)別了,大家實際使用的時候可以按需設(shè)置了!