Hi list,
while preparing for the changed ACL/mode_t mapping semantics coming
with onnv-147 [1], I discovered that in onnv-134 on my system ACLs are
not inherited when aclmode is set to passthrough for the filesystem.
This very much puzzles me. Example:
$ uname -a
SunOS os 5.11 snv_134 i86pc i386 i86pc
$ pwd
/Volumes/ACLs/dir1
$ zfs list | grep /Volumes
rpool/Volumes 7,00G 39,7G 6,84G /Volumes
$ zfs get aclmode,aclinherit rpool/Volumes
NAME PROPERTY VALUE SOURCE
rpool/Volumes aclmode passthrough local
rpool/Volumes aclinherit passthrough local
$ ls -dlV .
drwxr-xr-x+ 3 ldapadmin ldapgroup2 3 Okt 23 13:19 .
group:ldapgroup1:rwxp--aARWc---:fdi----:allow
group:ldapgroup1:rwxp--aARWc---:-------:allow
owner@:--------------:-------:deny
owner@:rwxp---A-W-Co-:-------:allow
group@:-w-p----------:-------:deny
group@:r-x-----------:-------:allow
everyone@:-w-p---A-W-Co-:-------:deny
everyone@:r-x---a-R-c--s:-------:allow
$ id
uid=5001(ldapuser1) gid=5001(ldapgroup1)
$ touch file
$ ls -lV file
-rw-r--r--+ 1 ldapuser1 ldapgroup1 0 Okt 23 13:21 file
group:ldapgroup1:rwxp--aARWc---:------I:allow
owner@:--x-----------:-------:deny
owner@:rw-p---A-W-Co-:-------:allow
group@:-wxp----------:-------:deny
group@:r-------------:-------:allow
everyone@:-wxp---A-W-Co-:-------:deny
everyone@:r-----a-R-c--s:-------:allow
$ exit
# zfs set aclmode=discard rpool/Volumes
# su ldapuser1
ldapus...@os:/Volumes/ACLs/dir1$ export PS1="$ "
$ zfs get aclmode,aclinherit rpool/Volumes
NAME PROPERTY VALUE SOURCE
rpool/Volumes aclmode discard local
rpool/Volumes aclinherit passthrough local
$ touch file2
$ ls -lV file2
-rw-r--r-- 1 ldapuser1 ldapgroup1 0 Okt 23 13:22 file2
owner@:--x-----------:-------:deny
owner@:rw-p---A-W-Co-:-------:allow
group@:-wxp----------:-------:deny
group@:r-------------:-------:allow
everyone@:-wxp---A-W-Co-:-------:deny
everyone@:r-----a-R-c--s:-------:allow
$ truss -v all touch file3
...
stat64("file3", 0x08047BF0) Err#2 ENOENT
creat64("file3", 0666) = 3
futimens(3, 0x00000000) = 0
close(3) = 0
_exit(0)
touch is not calling chmod(), also the same happens with mkdir.1
(which also doesn't call chmod()).
To summarize:
ACLs are not inherited when aclmode = discard.
Why is this? Afaik this should not be the case.
Thanks!
-f
[1] http://arc.opensolaris.org/caselog/PSARC/2010/029/20100126_mark.shellenbaum
_______________________________________________
zfs-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss