4 desc="NFSv4 granular permissions checking - ACL_WRITE_OWNER"
9 [ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit
17 expect 0 mkdir ${n2} 0755
21 # ACL_WRITE_OWNER permits to set gid to our own only.
22 expect 0 create ${n0} 0644
23 expect 0,0 lstat ${n0} uid,gid
24 expect EPERM -u 65534 -g 65532,65531 chown ${n0} -1 65532
25 expect 0,0 lstat ${n0} uid,gid
26 expect 0 prependacl ${n0} user:65534:write_owner::allow
27 expect EPERM -u 65534 -g 65532,65531 chown ${n0} -1 65530
28 expect 0,0 lstat ${n0} uid,gid
29 expect 0 -u 65534 -g 65532,65531 chown ${n0} -1 65532
30 expect 0,65532 lstat ${n0} uid,gid
33 # ACL_WRITE_OWNER permits to set uid to our own only.
34 expect 0 create ${n0} 0644
35 expect 0,0 lstat ${n0} uid,gid
36 expect EPERM -u 65534 -g 65532,65531 chown ${n0} 65534 65531
37 expect 0,0 lstat ${n0} uid,gid
38 expect 0 prependacl ${n0} user:65534:write_owner::allow
39 expect EPERM -u 65534 -g 65532,65531 chown ${n0} 65530 65531
40 expect 0,0 lstat ${n0} uid,gid
41 expect 0 -u 65534 -g 65532,65531 chown ${n0} 65534 65531
42 expect 65534,65531 lstat ${n0} uid,gid
45 # When non-owner calls chown(2) successfully, set-uid and set-gid bits are
46 # removed, except when both uid and gid are equal to -1.
47 expect 0 create ${n0} 0644
48 expect 0 prependacl ${n0} user:65534:write_owner::allow
49 expect 0 chmod ${n0} 06555
50 expect 06555 lstat ${n0} mode
51 expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532
52 expect 0555,65534,65532 lstat ${n0} mode,uid,gid
53 expect 0 chmod ${n0} 06555
54 expect 06555 lstat ${n0} mode
55 expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 65533
56 expect 0555,65534,65533 lstat ${n0} mode,uid,gid
57 expect 0 chmod ${n0} 06555
58 expect 06555 lstat ${n0} mode
59 expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 -1
60 expect 06555,65534,65533 lstat ${n0} mode,uid,gid
63 expect 0 mkdir ${n0} 0755
64 expect 0 prependacl ${n0} user:65534:write_owner::allow
65 expect 0 chmod ${n0} 06555
66 expect 06555 lstat ${n0} mode
67 expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532
68 expect 0555,65534,65532 lstat ${n0} mode,uid,gid
69 expect 0 chmod ${n0} 06555
70 expect 06555 lstat ${n0} mode
71 expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 65533
72 expect 0555,65534,65533 lstat ${n0} mode,uid,gid
73 expect 0 chmod ${n0} 06555
74 expect 06555 lstat ${n0} mode
75 expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 -1
76 expect 06555,65534,65533 lstat ${n0} mode,uid,gid