]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - tools/regression/pjdfstest/tests/granular/04.t
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / tools / regression / pjdfstest / tests / granular / 04.t
1 #!/bin/sh
2 # $FreeBSD$
3
4 desc="NFSv4 granular permissions checking - ACL_WRITE_OWNER"
5
6 dir=`dirname $0`
7 . ${dir}/../misc.sh
8
9 [ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit
10
11 echo "1..52"
12
13 n0=`namegen`
14 n1=`namegen`
15 n2=`namegen`
16
17 expect 0 mkdir ${n2} 0755
18 cdir=`pwd`
19 cd ${n2}
20
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
31 expect 0 unlink ${n0}
32
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
43 expect 0 unlink ${n0}
44
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
61 expect 0 unlink ${n0}
62
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
77 expect 0 rmdir ${n0}
78
79 cd ${cdir}
80 expect 0 rmdir ${n2}