I am sponsoring the following fast-track for Paul Henson. This case makes a minor modification to the behavior originally introduced by PSARC/2008/659. That case introduced the 'passthrough-x' property value for the zfs aclinherit property. Requested binding is patch/micro. Timeout is 1/14/2010.
Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI This information is Copyright 2010 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: Modified ZFS passthrough-x ACL inheritance 1.2. Name of Document Author/Supplier: Author: Paul Henson 1.3 Date of This Document: 07 January, 2010 4. Technical Description SUMMARY: This proposal updates the ZFS aclinherit property value "passthrough-x" to apply to all ACEs rather than just the special ACEs. PROBLEM: The changes introduced by: PSARC/2008/659 New ZFS "passthrough-x" ACL inheritance rules allow an administrator to optionally include the execute bit from the file creation mode into the inherited ACL, which provides the ability to have a single set of inherited ACEs result in the correct permissions for both a data file and an executable file. However, the current "passthrough-x" implementation only performs the optional inheritance on the three special ACEs, any other inherited ACEs will unconditionally inherit the execute permission, resulting in a data file with unnecessary and unwanted execute permissions. PROPOSED SOLUTION: Update the aclinherit "passthrough-x" property value such that the ACE_EXECUTE permission will be optionally inherited for all ACEs, not just the special ACEs. EXAMPLES: First, look at an example of current behavior. The following ACL exists on a directory. $ ls -dV testdir owner@:rwxpdDaARWcC--:-di---:allow owner@:rwxpdDaARWcC--:------:allow group@:--x---a-R-c---:-di---:allow group@:--x---a-R-c---:------:allow everyone@:--x---a-R-c---:-di---:allow everyone@:--x---a-R-c---:------:allow owner@:rwxpdDaARWcC--:f-i---:allow group@:--------------:f-i---:allow everyone@:--------------:f-i---:allow user:henson:rwxpdDaARWcC--:f-i---:allow group:cpp:rwxpdDaARWcC--:f-i---:allow When a file is created, it has this ACL: $ touch file $ ls -V file -rw-------+ 1 root sys 0 Dec 22 13:04 file owner@:rw-pdDaARWcC--:------:allow group@:--------------:------:allow everyone@:--------------:------:allow user:henson:rwxpdDaARWcC--:------:allow group:cpp:rwxpdDaARWcC--:------:allow While the special owner@ ACE did not inherit the ACE_EXECUTE permission, the non-special ACEs did, resulting in incorrect execute permissions on the data file. With the proposed new "passthrough-x" behavior, the same set of inherited ACEs would result in the following permissions being set on the data file: -rw-------+ 1 root sys 0 Dec 22 13:04 file owner@:rw-pdDaARWcC--:------:allow group@:--------------:------:allow everyone@:--------------:------:allow user:henson:rw-pdDaARWcC--:------:allow group:cpp:rw-pdDaARWcC--:------:allow This change will allow consistancy in the inheritance of ACE_EXECUTE permissions for all ACL entries. MANPAGE DIFFS $ diff zfs.txt.new zfs.txt 677,679c677,679 < passthrough, except that all ACEs inherit the execute < permission only if the file creation mode also requests < the execute bit. --- > passthrough, except that the owner@, group@, and every- > one@ ACEs inherit the execute permission only if the > file creation mode also requests the execute bit. 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: ON 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open