[Bug 208735] [zfs] setfacl/NFSv4 ACLs: impossible to set different inheritance for files and directories
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Tue Apr 12 05:24:03 UTC 2016
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=208735
Bug ID: 208735
Summary: [zfs] setfacl/NFSv4 ACLs: impossible to set different
inheritance for files and directories
Product: Base System
Version: 11.0-CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Many People
Priority: ---
Component: bin
Assignee: freebsd-bugs at FreeBSD.org
Reporter: emz at norma.perm.ru
Test system:
============
FreeBSD bsdrookie.norma.com. 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r297415: Fri
Apr 1 10:16:09 YEKT 2016
emz at bsdrookie.norma.com.:/usr/obj/usr/src/sys/BSDROOKIE amd64
zfs - most recent version:
# zpool upgrade -v
This system supports ZFS pool feature flags.
The following features are supported:
FEAT DESCRIPTION
-------------------------------------------------------------
async_destroy (read-only compatible)
Destroy filesystems asynchronously.
empty_bpobj (read-only compatible)
Snapshots use less space.
lz4_compress
LZ4 compression algorithm support.
multi_vdev_crash_dump
Crash dumps to multiple vdev pools.
spacemap_histogram (read-only compatible)
Spacemaps maintain space histograms.
enabled_txg (read-only compatible)
Record txg at which a feature is enabled
hole_birth
Retain hole birth txg for more precise zfs send
extensible_dataset
Enhanced dataset functionality, used by other features.
embedded_data
Blocks which compress very well use even less space.
bookmarks (read-only compatible)
"zfs bookmark" command
filesystem_limits (read-only compatible)
Filesystem and snapshot limits.
large_blocks
Support for blocks larger than 128KB.
The following legacy versions are also supported:
VER DESCRIPTION
--- --------------------------------------------------------
1 Initial ZFS version
2 Ditto blocks (replicated metadata)
3 Hot spares and double parity RAID-Z
4 zpool history
5 Compression using the gzip algorithm
6 bootfs pool property
7 Separate intent log devices
8 Delegated administration
9 refquota and refreservation properties
10 Cache devices
11 Improved scrub performance
12 Snapshot properties
13 snapused property
14 passthrough-x aclinherit
15 user/group space accounting
16 stmf property support
17 Triple-parity RAID-Z
18 Snapshot user holds
19 Log device removal
20 Compression using zle (zero-length encoding)
21 Deduplication
22 Received properties
23 Slim ZIL
24 System attributes
25 Improved scrub stats
26 Improved snapshot deletion performance
27 Improved snapshot creation performance
28 Multiple vdev replacements
For more information on a particular version, including supported releases,
see the ZFS Administration Guide.
Issue:
======
either setfacl or some internal subsystem treats NFSv4 ACLs with disregard to
the inheritance flags, i.e. different NFSv4 ACLs are treated as one.
A self-explanatory example: I want to set different inherited ACLs for files
and directories, in a way when directories don't inherit 'x' permission (I am
aware about 'passthrough-x' option for ZFS, but this is different thing):
[root at bsdrookie:local/public]# mkdir 1
[root at bsdrookie:local/public]# getfacl 1
# file: 1
# owner: root
# group: wheel
owner@:rwxp--aARWcCos:-------:allow
group@:r-x---a-R-c--s:-------:allow
everyone@:r-x---a-R-c--s:-------:allow
[root at bsdrookie:local/public]# setfacl -m user:emz:rwpDdaARWcCos:f:allow 1
[root at bsdrookie:local/public]# getfacl 1
# file: 1
# owner: root
# group: wheel
user:emz:rw-pDdaARWcCos:f------:allow
owner@:rwxp--aARWcCos:-------:allow
group@:r-x---a-R-c--s:-------:allow
everyone@:r-x---a-R-c--s:-------:allow
[root at bsdrookie:local/public]# setfacl -m user:emz:rwxpDdaARWcCos:d:allow 1
[root at bsdrookie:local/public]# getfacl 1
# file: 1
# owner: root
# group: wheel
user:emz:rwxpDdaARWcCos:-d-----:allow
owner@:rwxp--aARWcCos:-------:allow
group@:r-x---a-R-c--s:-------:allow
everyone@:r-x---a-R-c--s:-------:allow
Actual result: either setfacl or some other subsystem treats this NFSv4 ACL as
one, while it should treat this as different ACLs. It's impossible to set ACLs
for one user on one file/directory with different inheritance, at least for
files/directories.
Some may still insist that this behavior is consistent with the design, and I
should still use 'passthrough-x' zfs inheritance mode. So let's look at a
reference ZFS implementation, an actual Solaris system (or may be two):
Solaris 10 (SunOS 5.10 Generic_142910-17 i86pc i386 i86pc):
[root at atlas /var/www]# mkdir 1
[root at atlas /var/www]# ls -Vd 1
drwxr-xr-x+ 2 root root 2 апр. 12 08:02 1
user:git:rw-pdDaARWcCos:f-i---:allow
user:git:rwxpdDaARWcCos:-di---:allow
user:git:rwxpdDaARWcCos:------: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
[root at atlas /var/www]# chmod A+user:emz:rwxp:f:allow 1
[root at atlas /var/www]# chmod A+user:emz:rwp:d:allow 1
[root at atlas /var/www]# ls -Vd 1
drwxr-xr-x+ 2 root root 2 апр. 12 08:02 1
user:emz:rw-p----------:-d----:allow
user:emz:rwxp----------:f-----:allow
user:git:rw-pdDaARWcCos:f-i---:allow
user:git:rwxpdDaARWcCos:-di---:allow
user:git:rwxpdDaARWcCos:------: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
Solaris 11 (SunOS 5.11 11.2 i86pc i386 i86pc):
[root at hyperion emz]# mkdir 1
[root at hyperion emz]# ls -Vd 1
drwxr-xr-x 2 root root 2 апр. 12 08:16 1
owner@:rwxp-DaARWcCos:-------:allow
group@:r-x---a-R-c--s:-------:allow
everyone@:r-x---a-R-c--s:-------:allow
[root at hyperion emz]# chmod A+user:emz:rwpd:f:allow 1
[root at hyperion emz]# ls -Vd 1
drwxr-xr-x+ 2 root root 2 апр. 12 08:16 1
user:emz:rw-pd---------:f------:allow
owner@:rwxp-DaARWcCos:-------:allow
group@:r-x---a-R-c--s:-------:allow
everyone@:r-x---a-R-c--s:-------:allow
[root at hyperion emz]# chmod A+user:emz:rwxpd:d:allow 1
[root at hyperion emz]# ls -Vd 1
drwxr-xr-x+ 2 root root 2 апр. 12 08:16 1
user:emz:rwxpd---------:-d-----:allow
user:emz:rw-pd---------:f------:allow
owner@:rwxp-DaARWcCos:-------:allow
group@:r-x---a-R-c--s:-------:allow
everyone@:r-x---a-R-c--s:-------:allow
Both reference ZFS systems behave as expected.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list