使用acl权限 在smb共享后新的文件权限与acl-default不一致
系统版本:Dragonfish 24.04
测试了几个情况,怀疑是个bug,具体机制没弄清。先只写一下我遇到问题的这个情况,其他的后续再补充。
补充:最后的选择了nfsv4 acl,跳转到后后记
情况
首先我的用户是yesaye,group是family。dataset的acl是posix acl。
一开始acl权限是这么设置的:
这时候通过smb共享后,创建文件夹,文件夹的acl权限是这样的:
如图里group:family:---
没有跟随default的r-x
,而是---
。并且擅自给加上了三个默认项:
default:user:yesaye:rwx
default:group:family:r-x
default:mask:rwx
解决
查了下社区,也自己测试找了找规律,过程略,懒得写。(有一些其他方案,比如将acl type改成SMB/NFSv4
,然后就修改acl mode,但还是不喜欢这种方式,nfsv4的acl设置和linux有不少差别,以后再了解)
发现通过这种方式创建就会默认给我加上这三项,所以干脆直接给dataset的acl加上这三项:
这样就解决了,再次创建文件夹,acl权限就正常了,群组内用户有权限了:
可能是我的需求比较特殊或者说简单,这样直接指定user和group和我的需求没有任何偏差。如果需求不一样还要另作考虑。
后记
又想了下,似乎是通过smb后导致系统获取不到上级文件夹的default:group::xxx
权限,所以应该只需要对需要的group添加default:group:xxxx:xxx
即可,当然mask不能少。
后后记
看了看NFS4的acl设置,倒也没那么复杂,虽然比较细致,但是truenas也提供了简单的封装, 所以最终还是选择将dataset的acl type改成smb/nfsv4了,然后acl mode我选择的是restricted。 测试下来,言简意赅,没有遇到新建文件夹的权限不符合预期的问题。
简单用用不难,想详细了解还是建议看看文档:
- https://www.truenas.com/docs/scale/24.04/scaleuireference/datasets/
- https://www.truenas.com/docs/scale/24.04/scaleuireference/datasets/editaclscreens/
最后分享一下我的预设:
- 自己可修改,群组只读:
- 个人私有,其他人都不能读:
- 群组可读写:
- 自己可修改,其他所有人可读:
我这里全用Basic就完全跟我想要的一样,感觉没必要贴几张图哈哈,比较简单。想要更细致的控制就去Advanced里看看吧。
PS:如果切换了acl模式,测试着有不对劲的地方,试一试重启系统!重启系统!重启系统!。今天从posix切到smb/nfsv4后总是出现没有权限但能删除文件的情况,折腾了一下午…