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
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to