这个事情居然远比我想象的麻烦。
首先,我选择的是 Default
NOTE
如果你选择 private share 的话,你会发现,你在 ACL 中每添加一个 user,TrueNAS都会在你这个 share 的目录下创建一个这个user name 的子目录。 然后可能就是这个用户只有这个子目录的访问权限。 个人使用中发现,除非有直接对应的场景,一般来讲如果是多用户访问同一份数据的情况,就一定要避免这个。
ACL Configuration
default vs no-default
default
flag 带着,还是不带,是不一样的。- 但是,正常情况下,应该创建两个,一个有 default flag,一个没有。
比如我想给 pve 这个user group 访问权限。我需要:
这个的意思就是常规的意思。代表着你给了这个用户权限。
但是如果是这个用户创建的目录,就不符合这个标准了。这个用户创建的目录(和文件)的权限,需要由 ‘default’ flags 决定。
这个 有 default flag 的版本才是控制着,pve 用户创建的东西的权限。
IMPORTANT
有和没有 ‘default’ flag 的权限,两者之间都没有办法互相替代。 如果你只添加 ‘default’ flag 这个版本,那你会发现你访问不了 share, (error code 13).
Masks
然后就是,为了让你的 ACL 符合标准。你还需要 mask。
这个 mask 说是决定了 user / group (应该是指除了 owner, owner group 以外的 users and gruops) 的访问权限的上限。
所以,如果你 pve 用户有 RWX 权限,那么 mask 就必须是 RWX 全的。
NOTE
mask 也有 ‘default’ flag 的区别,所以你还需啊哟两份,一个 mask 有 default, 一个没有。
Execute 权限
这个权限实际上在 没有 ‘default’ 的那个 ACL rule 上面,应该是必须的,因为挂载本身就需要这个权限。
但是是不是 ‘default’ 那个还需要就不确定了,可能是不需要了,如果你确实不想让用户在这个 share 上执行什么东西的话。
Debug
Use getfacl <folder>
command:
$ getfacl fonts
# file: fonts
# owner: admin
# group: admin
user::rwx
group::rwx
group:pve:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:pve:rwx
default:mask::rwx
default:other::---
Note the ‘group:pve:rwx’ and ‘default:group:pve:rwx’. Those two lines are the ones allow users in ‘group pve’ to access this share!
- If ‘x’ permission is missing, it seems, the smb client can still mount the share, but only see the first level folders, nothing under the first level
- I.e. the ‘fonts’ folder will look like empty, even though it is not really empty.
NOTE
注意这个是 Samba, 所以这里用户的gating 跟 mount 到 Linux 之后,在 client 端的权限设置没有关系。在 Linux client 端用什么用户和组,都是由 mount 的命令说了算的。