04.t revision 196948
1#!/bin/sh
2# $FreeBSD: head/tools/regression/fstest/tests/granular/04.t 196948 2009-09-07 19:40:22Z trasz $
3
4desc="NFSv4 granular permissions checking - ACL_WRITE_OWNER"
5
6dir=`dirname $0`
7. ${dir}/../misc.sh
8
9echo "1..52"
10
11n0=`namegen`
12n1=`namegen`
13n2=`namegen`
14
15expect 0 mkdir ${n2} 0755
16cdir=`pwd`
17cd ${n2}
18
19# ACL_WRITE_OWNER permits to set gid to our own only.
20expect 0 create ${n0} 0644
21expect 0,0 lstat ${n0} uid,gid
22expect EPERM -u 65534 -g 65532,65531 chown ${n0} -1 65532
23expect 0,0 lstat ${n0} uid,gid
24expect 0 prependacl ${n0} user:65534:write_owner::allow
25expect EPERM -u 65534 -g 65532,65531 chown ${n0} -1 65530
26expect 0,0 lstat ${n0} uid,gid
27expect 0 -u 65534 -g 65532,65531 chown ${n0} -1 65532
28expect 0,65532 lstat ${n0} uid,gid
29expect 0 unlink ${n0}
30
31# ACL_WRITE_OWNER permits to set uid to our own only.
32expect 0 create ${n0} 0644
33expect 0,0 lstat ${n0} uid,gid
34expect EPERM -u 65534 -g 65532,65531 chown ${n0} 65534 65531
35expect 0,0 lstat ${n0} uid,gid
36expect 0 prependacl ${n0} user:65534:write_owner::allow
37expect EPERM -u 65534 -g 65532,65531 chown ${n0} 65530 65531
38expect 0,0 lstat ${n0} uid,gid
39expect 0 -u 65534 -g 65532,65531 chown ${n0} 65534 65531
40expect 65534,65531 lstat ${n0} uid,gid
41expect 0 unlink ${n0}
42
43# When non-owner calls chown(2) successfully, set-uid and set-gid bits are
44# removed, except when both uid and gid are equal to -1.
45expect 0 create ${n0} 0644
46expect 0 prependacl ${n0} user:65534:write_owner::allow
47expect 0 chmod ${n0} 06555
48expect 06555 lstat ${n0} mode
49expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532
50expect 0555,65534,65532 lstat ${n0} mode,uid,gid
51expect 0 chmod ${n0} 06555
52expect 06555 lstat ${n0} mode
53expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 65533
54expect 0555,65534,65533 lstat ${n0} mode,uid,gid
55expect 0 chmod ${n0} 06555
56expect 06555 lstat ${n0} mode
57expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 -1
58expect 06555,65534,65533 lstat ${n0} mode,uid,gid
59expect 0 unlink ${n0}
60
61expect 0 mkdir ${n0} 0755
62expect 0 prependacl ${n0} user:65534:write_owner::allow
63expect 0 chmod ${n0} 06555
64expect 06555 lstat ${n0} mode
65expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532
66expect 0555,65534,65532 lstat ${n0} mode,uid,gid
67expect 0 chmod ${n0} 06555
68expect 06555 lstat ${n0} mode
69expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 65533
70expect 0555,65534,65533 lstat ${n0} mode,uid,gid
71expect 0 chmod ${n0} 06555
72expect 06555 lstat ${n0} mode
73expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 -1
74expect 06555,65534,65533 lstat ${n0} mode,uid,gid
75expect 0 rmdir ${n0}
76
77cd ${cdir}
78expect 0 rmdir ${n2}
79