1*b3af24b4SEnji Cooper# Copyright (c) 2008, 2009 Edward Tomasz Napierała <trasz@FreeBSD.org> 2*b3af24b4SEnji Cooper# 3*b3af24b4SEnji Cooper# Redistribution and use in source and binary forms, with or without 4*b3af24b4SEnji Cooper# modification, are permitted provided that the following conditions 5*b3af24b4SEnji Cooper# are met: 6*b3af24b4SEnji Cooper# 1. Redistributions of source code must retain the above copyright 7*b3af24b4SEnji Cooper# notice, this list of conditions and the following disclaimer. 8*b3af24b4SEnji Cooper# 2. Redistributions in binary form must reproduce the above copyright 9*b3af24b4SEnji Cooper# notice, this list of conditions and the following disclaimer in the 10*b3af24b4SEnji Cooper# documentation and/or other materials provided with the distribution. 11*b3af24b4SEnji Cooper# 12*b3af24b4SEnji Cooper# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 13*b3af24b4SEnji Cooper# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14*b3af24b4SEnji Cooper# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 15*b3af24b4SEnji Cooper# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 16*b3af24b4SEnji Cooper# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 17*b3af24b4SEnji Cooper# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 18*b3af24b4SEnji Cooper# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 19*b3af24b4SEnji Cooper# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 20*b3af24b4SEnji Cooper# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 21*b3af24b4SEnji Cooper# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 22*b3af24b4SEnji Cooper# SUCH DAMAGE. 23*b3af24b4SEnji Cooper# 24*b3af24b4SEnji Cooper# 25*b3af24b4SEnji Cooper 26*b3af24b4SEnji Cooper# This is a tools-level test intended to verify that cp(1) and mv(1) 27*b3af24b4SEnji Cooper# do the right thing with respect to ACLs. Run it as root using 28*b3af24b4SEnji Cooper# ACL-enabled kernel: 29*b3af24b4SEnji Cooper# 30*b3af24b4SEnji Cooper# /usr/src/tools/regression/acltools/run /usr/src/tools/regression/acltools/tools-nfs4.test 31*b3af24b4SEnji Cooper# 32*b3af24b4SEnji Cooper# You need to have three subdirectories, named nfs4, posix and none, 33*b3af24b4SEnji Cooper# with filesystems with NFSv4 ACLs, POSIX.1e ACLs and no ACLs enabled, 34*b3af24b4SEnji Cooper# respectively, mounted on them, in your current directory. 35*b3af24b4SEnji Cooper# 36*b3af24b4SEnji Cooper# WARNING: Creates files in unsafe way. 37*b3af24b4SEnji Cooper 38*b3af24b4SEnji Cooper$ whoami 39*b3af24b4SEnji Cooper> root 40*b3af24b4SEnji Cooper$ umask 022 41*b3af24b4SEnji Cooper 42*b3af24b4SEnji Cooper$ touch nfs4/xxx 43*b3af24b4SEnji Cooper$ getfacl -nq nfs4/xxx 44*b3af24b4SEnji Cooper> owner@:rw-p--aARWcCos:-------:allow 45*b3af24b4SEnji Cooper> group@:r-----a-R-c--s:-------:allow 46*b3af24b4SEnji Cooper> everyone@:r-----a-R-c--s:-------:allow 47*b3af24b4SEnji Cooper 48*b3af24b4SEnji Cooper$ touch posix/xxx 49*b3af24b4SEnji Cooper$ getfacl -nq posix/xxx 50*b3af24b4SEnji Cooper> user::rw- 51*b3af24b4SEnji Cooper> group::r-- 52*b3af24b4SEnji Cooper> other::r-- 53*b3af24b4SEnji Cooper 54*b3af24b4SEnji Cooper# mv with POSIX.1e ACLs. 55*b3af24b4SEnji Cooper$ rm -f posix/xxx 56*b3af24b4SEnji Cooper$ rm -f posix/yyy 57*b3af24b4SEnji Cooper$ touch posix/xxx 58*b3af24b4SEnji Cooper$ chmod 456 posix/xxx 59*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 60*b3af24b4SEnji Cooper> -r--r-xrw- 61*b3af24b4SEnji Cooper$ setfacl -m u:42:x,g:43:w posix/xxx 62*b3af24b4SEnji Cooper$ mv posix/xxx posix/yyy 63*b3af24b4SEnji Cooper$ getfacl -nq posix/yyy 64*b3af24b4SEnji Cooper> user::r-- 65*b3af24b4SEnji Cooper> user:42:--x 66*b3af24b4SEnji Cooper> group::r-x 67*b3af24b4SEnji Cooper> group:43:-w- 68*b3af24b4SEnji Cooper> mask::rwx 69*b3af24b4SEnji Cooper> other::rw- 70*b3af24b4SEnji Cooper$ ls -l posix/yyy | cut -d' ' -f1 71*b3af24b4SEnji Cooper> -r--rwxrw-+ 72*b3af24b4SEnji Cooper 73*b3af24b4SEnji Cooper# mv from POSIX.1e to none. 74*b3af24b4SEnji Cooper$ rm -f posix/xxx 75*b3af24b4SEnji Cooper$ rm -f none/xxx 76*b3af24b4SEnji Cooper$ touch posix/xxx 77*b3af24b4SEnji Cooper$ chmod 345 posix/xxx 78*b3af24b4SEnji Cooper$ setfacl -m u:42:x,g:43:w posix/xxx 79*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 80*b3af24b4SEnji Cooper> --wxrwxr-x+ 81*b3af24b4SEnji Cooper$ mv posix/xxx none/xxx 82*b3af24b4SEnji Cooper> mv: failed to set acl entries for none/xxx: Operation not supported 83*b3af24b4SEnji Cooper$ ls -l none/xxx | cut -d' ' -f1 84*b3af24b4SEnji Cooper> --wxrwxr-x 85*b3af24b4SEnji Cooper 86*b3af24b4SEnji Cooper# mv from POSIX.1e to NFSv4. 87*b3af24b4SEnji Cooper$ rm -f posix/xxx 88*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 89*b3af24b4SEnji Cooper$ touch posix/xxx 90*b3af24b4SEnji Cooper$ chmod 456 posix/xxx 91*b3af24b4SEnji Cooper$ setfacl -m u:42:x,g:43:w posix/xxx 92*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 93*b3af24b4SEnji Cooper> -r--rwxrw-+ 94*b3af24b4SEnji Cooper$ mv posix/yyy nfs4/xxx 95*b3af24b4SEnji Cooper> mv: failed to set acl entries for nfs4/xxx: Invalid argument 96*b3af24b4SEnji Cooper$ getfacl -nq nfs4/xxx 97*b3af24b4SEnji Cooper> owner@:-wxp----------:-------:deny 98*b3af24b4SEnji Cooper> owner@:r-----aARWcCos:-------:allow 99*b3af24b4SEnji Cooper> group@:rwxp--a-R-c--s:-------:allow 100*b3af24b4SEnji Cooper> everyone@:rw-p--a-R-c--s:-------:allow 101*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 102*b3af24b4SEnji Cooper> -r--rwxrw- 103*b3af24b4SEnji Cooper 104*b3af24b4SEnji Cooper# mv with NFSv4 ACLs. 105*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 106*b3af24b4SEnji Cooper$ rm -f nfs4/yyy 107*b3af24b4SEnji Cooper$ touch nfs4/xxx 108*b3af24b4SEnji Cooper$ setfacl -a0 u:42:x:allow,g:43:w:allow nfs4/xxx 109*b3af24b4SEnji Cooper$ mv nfs4/xxx nfs4/yyy 110*b3af24b4SEnji Cooper$ getfacl -nq nfs4/yyy 111*b3af24b4SEnji Cooper> user:42:--x-----------:-------:allow 112*b3af24b4SEnji Cooper> group:43:-w------------:-------:allow 113*b3af24b4SEnji Cooper> owner@:rw-p--aARWcCos:-------:allow 114*b3af24b4SEnji Cooper> group@:r-----a-R-c--s:-------:allow 115*b3af24b4SEnji Cooper> everyone@:r-----a-R-c--s:-------:allow 116*b3af24b4SEnji Cooper$ ls -l nfs4/yyy | cut -d' ' -f1 117*b3af24b4SEnji Cooper> -rw-r--r--+ 118*b3af24b4SEnji Cooper 119*b3af24b4SEnji Cooper# mv from NFSv4 to POSIX.1e without any ACLs. 120*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 121*b3af24b4SEnji Cooper$ rm -f posix/xxx 122*b3af24b4SEnji Cooper$ touch nfs4/xxx 123*b3af24b4SEnji Cooper$ chmod 456 nfs4/xxx 124*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 125*b3af24b4SEnji Cooper> -r--r-xrw- 126*b3af24b4SEnji Cooper$ mv nfs4/xxx posix/xxx 127*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 128*b3af24b4SEnji Cooper> -r--r-xrw- 129*b3af24b4SEnji Cooper 130*b3af24b4SEnji Cooper# mv from NFSv4 to none. 131*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 132*b3af24b4SEnji Cooper$ rm -f none/xxx 133*b3af24b4SEnji Cooper$ touch nfs4/xxx 134*b3af24b4SEnji Cooper$ chmod 345 nfs4/xxx 135*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 136*b3af24b4SEnji Cooper> --wxr--r-x 137*b3af24b4SEnji Cooper$ setfacl -a0 u:42:x:allow,g:43:w:allow nfs4/xxx 138*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 139*b3af24b4SEnji Cooper> --wxr--r-x+ 140*b3af24b4SEnji Cooper$ mv nfs4/xxx none/xxx 141*b3af24b4SEnji Cooper> mv: failed to set acl entries for none/xxx: Operation not supported 142*b3af24b4SEnji Cooper$ ls -l none/xxx | cut -d' ' -f1 143*b3af24b4SEnji Cooper> --wxr--r-x 144*b3af24b4SEnji Cooper 145*b3af24b4SEnji Cooper# mv from NFSv4 to POSIX.1e. 146*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 147*b3af24b4SEnji Cooper$ rm -f posix/xxx 148*b3af24b4SEnji Cooper$ touch nfs4/xxx 149*b3af24b4SEnji Cooper$ chmod 345 nfs4/xxx 150*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 151*b3af24b4SEnji Cooper> --wxr--r-x 152*b3af24b4SEnji Cooper$ setfacl -a0 u:42:x:allow,g:43:w:allow nfs4/xxx 153*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 154*b3af24b4SEnji Cooper> --wxr--r-x+ 155*b3af24b4SEnji Cooper$ mv nfs4/xxx posix/xxx 156*b3af24b4SEnji Cooper> mv: failed to set acl entries for posix/xxx: Invalid argument 157*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 158*b3af24b4SEnji Cooper> --wxr--r-x 159*b3af24b4SEnji Cooper 160*b3af24b4SEnji Cooper# cp with POSIX.1e ACLs. 161*b3af24b4SEnji Cooper$ rm -f posix/xxx 162*b3af24b4SEnji Cooper$ rm -f posix/yyy 163*b3af24b4SEnji Cooper$ touch posix/xxx 164*b3af24b4SEnji Cooper$ setfacl -m u:42:x,g:43:w posix/xxx 165*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 166*b3af24b4SEnji Cooper> -rw-rwxr--+ 167*b3af24b4SEnji Cooper$ cp posix/xxx posix/yyy 168*b3af24b4SEnji Cooper$ ls -l posix/yyy | cut -d' ' -f1 169*b3af24b4SEnji Cooper> -rw-r-xr-- 170*b3af24b4SEnji Cooper 171*b3af24b4SEnji Cooper# cp -p with POSIX.1e ACLs. 172*b3af24b4SEnji Cooper$ rm -f posix/xxx 173*b3af24b4SEnji Cooper$ rm -f posix/yyy 174*b3af24b4SEnji Cooper$ touch posix/xxx 175*b3af24b4SEnji Cooper$ setfacl -m u:42:x,g:43:w posix/xxx 176*b3af24b4SEnji Cooper$ getfacl -nq posix/xxx 177*b3af24b4SEnji Cooper> user::rw- 178*b3af24b4SEnji Cooper> user:42:--x 179*b3af24b4SEnji Cooper> group::r-- 180*b3af24b4SEnji Cooper> group:43:-w- 181*b3af24b4SEnji Cooper> mask::rwx 182*b3af24b4SEnji Cooper> other::r-- 183*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 184*b3af24b4SEnji Cooper> -rw-rwxr--+ 185*b3af24b4SEnji Cooper$ cp -p posix/xxx posix/yyy 186*b3af24b4SEnji Cooper$ getfacl -nq posix/yyy 187*b3af24b4SEnji Cooper> user::rw- 188*b3af24b4SEnji Cooper> user:42:--x 189*b3af24b4SEnji Cooper> group::r-- 190*b3af24b4SEnji Cooper> group:43:-w- 191*b3af24b4SEnji Cooper> mask::rwx 192*b3af24b4SEnji Cooper> other::r-- 193*b3af24b4SEnji Cooper$ ls -l posix/yyy | cut -d' ' -f1 194*b3af24b4SEnji Cooper> -rw-rwxr--+ 195*b3af24b4SEnji Cooper 196*b3af24b4SEnji Cooper# cp from POSIX.1e to none. 197*b3af24b4SEnji Cooper$ rm -f posix/xxx 198*b3af24b4SEnji Cooper$ rm -f none/xxx 199*b3af24b4SEnji Cooper$ touch posix/xxx 200*b3af24b4SEnji Cooper$ setfacl -m u:42:x,g:43:w posix/xxx 201*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 202*b3af24b4SEnji Cooper> -rw-rwxr--+ 203*b3af24b4SEnji Cooper$ cp posix/xxx none/xxx 204*b3af24b4SEnji Cooper$ ls -l none/xxx | cut -d' ' -f1 205*b3af24b4SEnji Cooper> -rw-r-xr-- 206*b3af24b4SEnji Cooper 207*b3af24b4SEnji Cooper# cp -p from POSIX.1e to none. 208*b3af24b4SEnji Cooper$ rm -f posix/xxx 209*b3af24b4SEnji Cooper$ rm -f none/xxx 210*b3af24b4SEnji Cooper$ touch posix/xxx 211*b3af24b4SEnji Cooper$ setfacl -m u:42:x,g:43:w posix/xxx 212*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 213*b3af24b4SEnji Cooper> -rw-rwxr--+ 214*b3af24b4SEnji Cooper$ cp -p posix/xxx none/xxx 215*b3af24b4SEnji Cooper> cp: failed to set acl entries for none/xxx: Operation not supported 216*b3af24b4SEnji Cooper$ ls -l none/xxx | cut -d' ' -f1 217*b3af24b4SEnji Cooper> -rw-rwxr-- 218*b3af24b4SEnji Cooper 219*b3af24b4SEnji Cooper# cp from POSIX.1e to NFSv4. 220*b3af24b4SEnji Cooper$ rm -f posix/xxx 221*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 222*b3af24b4SEnji Cooper$ touch posix/xxx 223*b3af24b4SEnji Cooper$ setfacl -m u:42:x,g:43:w posix/xxx 224*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 225*b3af24b4SEnji Cooper> -rw-rwxr--+ 226*b3af24b4SEnji Cooper$ cp posix/xxx nfs4/xxx 227*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 228*b3af24b4SEnji Cooper> -rw-r-xr-- 229*b3af24b4SEnji Cooper 230*b3af24b4SEnji Cooper# cp -p from POSIX.1e to NFSv4. 231*b3af24b4SEnji Cooper$ rm -f posix/xxx 232*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 233*b3af24b4SEnji Cooper$ touch posix/xxx 234*b3af24b4SEnji Cooper$ setfacl -m u:42:x,g:43:w posix/xxx 235*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 236*b3af24b4SEnji Cooper> -rw-rwxr--+ 237*b3af24b4SEnji Cooper$ cp -p posix/xxx nfs4/xxx 238*b3af24b4SEnji Cooper> cp: failed to set acl entries for nfs4/xxx: Invalid argument 239*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 240*b3af24b4SEnji Cooper> -rw-rwxr-- 241*b3af24b4SEnji Cooper 242*b3af24b4SEnji Cooper# cp with NFSv4 ACLs. 243*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 244*b3af24b4SEnji Cooper$ rm -f nfs4/yyy 245*b3af24b4SEnji Cooper$ touch nfs4/xxx 246*b3af24b4SEnji Cooper$ chmod 543 nfs4/xxx 247*b3af24b4SEnji Cooper$ setfacl -a0 u:42:x:allow,g:43:w:allow nfs4/xxx 248*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 249*b3af24b4SEnji Cooper> -r-xr---wx+ 250*b3af24b4SEnji Cooper$ cp nfs4/xxx nfs4/yyy 251*b3af24b4SEnji Cooper$ ls -l nfs4/yyy | cut -d' ' -f1 252*b3af24b4SEnji Cooper> -r-xr----x 253*b3af24b4SEnji Cooper 254*b3af24b4SEnji Cooper# cp -p with NFSv4 ACLs. 255*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 256*b3af24b4SEnji Cooper$ rm -f nfs4/yyy 257*b3af24b4SEnji Cooper$ touch nfs4/xxx 258*b3af24b4SEnji Cooper$ chmod 543 nfs4/xxx 259*b3af24b4SEnji Cooper$ setfacl -a0 u:42:x:allow,g:43:w:allow nfs4/xxx 260*b3af24b4SEnji Cooper$ cp -p nfs4/xxx nfs4/yyy 261*b3af24b4SEnji Cooper$ getfacl -nq nfs4/yyy 262*b3af24b4SEnji Cooper> user:42:--x-----------:-------:allow 263*b3af24b4SEnji Cooper> group:43:-w------------:-------:allow 264*b3af24b4SEnji Cooper> owner@:--x-----------:-------:allow 265*b3af24b4SEnji Cooper> owner@:-w-p----------:-------:deny 266*b3af24b4SEnji Cooper> group@:-wxp----------:-------:deny 267*b3af24b4SEnji Cooper> owner@:r-x---aARWcCos:-------:allow 268*b3af24b4SEnji Cooper> group@:r-----a-R-c--s:-------:allow 269*b3af24b4SEnji Cooper> everyone@:-wxp--a-R-c--s:-------:allow 270*b3af24b4SEnji Cooper$ ls -l nfs4/yyy | cut -d' ' -f1 271*b3af24b4SEnji Cooper> -r-xr---wx+ 272*b3af24b4SEnji Cooper 273*b3af24b4SEnji Cooper# cp from NFSv4 to none. 274*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 275*b3af24b4SEnji Cooper$ rm -f none/xxx 276*b3af24b4SEnji Cooper$ touch nfs4/xxx 277*b3af24b4SEnji Cooper$ chmod 543 nfs4/xxx 278*b3af24b4SEnji Cooper$ setfacl -a0 u:42:x:allow,g:43:w:allow nfs4/xxx 279*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 280*b3af24b4SEnji Cooper> -r-xr---wx+ 281*b3af24b4SEnji Cooper$ cp nfs4/xxx none/xxx 282*b3af24b4SEnji Cooper$ ls -l none/xxx | cut -d' ' -f1 283*b3af24b4SEnji Cooper> -r-xr----x 284*b3af24b4SEnji Cooper 285*b3af24b4SEnji Cooper# cp -p from NFSv4 to none. 286*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 287*b3af24b4SEnji Cooper$ rm -f none/xxx 288*b3af24b4SEnji Cooper$ touch nfs4/xxx 289*b3af24b4SEnji Cooper$ chmod 543 nfs4/xxx 290*b3af24b4SEnji Cooper$ setfacl -a0 u:42:x:allow,g:43:w:allow nfs4/xxx 291*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 292*b3af24b4SEnji Cooper> -r-xr---wx+ 293*b3af24b4SEnji Cooper$ cp -p nfs4/xxx none/xxx 294*b3af24b4SEnji Cooper> cp: failed to set acl entries for none/xxx: Operation not supported 295*b3af24b4SEnji Cooper$ ls -l none/xxx | cut -d' ' -f1 296*b3af24b4SEnji Cooper> -r-xr---wx 297*b3af24b4SEnji Cooper 298*b3af24b4SEnji Cooper# cp from NFSv4 to POSIX.1e. 299*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 300*b3af24b4SEnji Cooper$ rm -f posix/xxx 301*b3af24b4SEnji Cooper$ touch nfs4/xxx 302*b3af24b4SEnji Cooper$ chmod 543 nfs4/xxx 303*b3af24b4SEnji Cooper$ setfacl -a0 u:42:x:allow,g:43:w:allow nfs4/xxx 304*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 305*b3af24b4SEnji Cooper> -r-xr---wx+ 306*b3af24b4SEnji Cooper$ cp nfs4/xxx posix/xxx 307*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 308*b3af24b4SEnji Cooper> -r-xr----x 309*b3af24b4SEnji Cooper 310*b3af24b4SEnji Cooper# cp -p from NFSv4 to POSIX.1e. 311*b3af24b4SEnji Cooper$ rm -f nfs4/xxx 312*b3af24b4SEnji Cooper$ rm -f posix/xxx 313*b3af24b4SEnji Cooper$ touch nfs4/xxx 314*b3af24b4SEnji Cooper$ chmod 543 nfs4/xxx 315*b3af24b4SEnji Cooper$ setfacl -a0 u:42:x:allow,g:43:w:allow nfs4/xxx 316*b3af24b4SEnji Cooper$ ls -l nfs4/xxx | cut -d' ' -f1 317*b3af24b4SEnji Cooper> -r-xr---wx+ 318*b3af24b4SEnji Cooper$ cp -p nfs4/xxx posix/xxx 319*b3af24b4SEnji Cooper> cp: failed to set acl entries for posix/xxx: Invalid argument 320*b3af24b4SEnji Cooper$ ls -l posix/xxx | cut -d' ' -f1 321*b3af24b4SEnji Cooper> -r-xr---wx 322