]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - tools/regression/pjdfstest/tests/granular/05.t
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / tools / regression / pjdfstest / tests / granular / 05.t
1 #!/bin/sh
2 # $FreeBSD$
3
4 desc="NFSv4 granular permissions checking - DELETE and DELETE_CHILD with directories"
5
6 dir=`dirname $0`
7 . ${dir}/../misc.sh
8
9 [ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit
10
11 echo "1..68"
12
13 n0=`namegen`
14 n1=`namegen`
15 n2=`namegen`
16 n3=`namegen`
17
18 expect 0 mkdir ${n2} 0755
19 expect 0 mkdir ${n3} 0777
20 cdir=`pwd`
21 cd ${n2}
22
23 # Unlink allowed on writable directory.
24 expect 0 mkdir ${n0} 0755
25 expect EACCES -u 65534 -g 65534 rmdir ${n0}
26 expect 0 prependacl . user:65534:write_data::allow
27 expect 0 -u 65534 -g 65534 rmdir ${n0}
28
29 # Moving directory elsewhere allowed on writable directory.
30 expect 0 mkdir ${n0} 0777
31 expect 0 prependacl . user:65534:write_data::deny
32 expect EACCES -u 65534 -g 65534 rename ${n0} ../${n3}/${n0}
33 expect 0 prependacl . user:65534:write_data::allow
34 expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0}
35
36 # 12
37 # Moving directory from elsewhere allowed on writable directory.
38 expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
39 expect 0 prependacl . user:65534:append_data::allow
40 expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
41 expect 0 -u 65534 -g 65534 rmdir ${n0}
42
43 # Moving directory from elsewhere overwriting local directory allowed
44 # on writable directory.
45 expect 0 mkdir ${n0} 0755
46 expect 0 mkdir ../${n3}/${n0} 0777
47 expect 0 prependacl . user:65534:write_data::deny
48 expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
49 expect 0 prependacl . user:65534:write_data::allow
50 expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
51 expect 0 -u 65534 -g 65534 rmdir ${n0}
52
53 # 23
54 # Denied DELETE changes nothing wrt removing.
55 expect 0 mkdir ${n0} 0755
56 expect 0 prependacl ${n0} user:65534:delete::deny
57 expect 0 -u 65534 -g 65534 rmdir ${n0}
58
59 # Denied DELETE changes nothing wrt moving elsewhere or from elsewhere.
60 expect 0 mkdir ${n0} 0777
61 expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0}
62 expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
63 expect 0 -u 65534 -g 65534 rmdir ${n0}
64
65 # DELETE_CHILD denies unlink on writable directory.
66 expect 0 mkdir ${n0} 0755
67 expect 0 prependacl . user:65534:delete_child::deny
68 expect EPERM -u 65534 -g 65534 rmdir ${n0}
69 expect 0 rmdir ${n0}
70
71 # 35
72 # DELETE_CHILD denies moving directory elsewhere.
73 expect 0 mkdir ${n0} 0777
74 expect EPERM -u 65534 -g 65534 rename ${n0} ../${n3}/${n0}
75 expect 0 rename ${n0} ../${n3}/${n0}
76
77 # DELETE_CHILD does not deny moving directory from elsewhere
78 # to a writable directory.
79 expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
80
81 # DELETE_CHILD denies moving directory from elsewhere
82 # to a writable directory overwriting local directory.
83 expect 0 mkdir ../${n3}/${n0} 0755
84 expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
85
86 # DELETE allowed on directory allows for unlinking, no matter
87 # what permissions on containing directory are.
88 expect 0 prependacl ${n0} user:65534:delete::allow
89 expect 0 -u 65534 -g 65534 rmdir ${n0}
90
91 # Same for moving the directory elsewhere.
92 expect 0 mkdir ${n0} 0777
93 expect 0 prependacl ${n0} user:65534:delete::allow
94 expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0}
95
96 # 46
97 # Same for moving the directory from elsewhere into a writable
98 # directory with DELETE_CHILD denied.
99 expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
100 expect 0 rmdir ${n0}
101
102 # DELETE does not allow for overwriting a directory in a unwritable
103 # directory with DELETE_CHILD denied.
104 expect 0 mkdir ${n0} 0755
105 expect 0 mkdir ../${n3}/${n0} 0777
106 expect 0 prependacl . user:65534:write_data::deny
107 expect 0 prependacl . user:65534:delete_child::deny
108 expect EPERM -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
109 expect 0 prependacl ${n0} user:65534:delete::allow
110 # XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
111 expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
112
113 # 54
114 # But it allows for plain deletion.
115 # XXX: expect 0 -u 65534 -g 65534 rmdir ${n0}
116 expect 0 rmdir ${n0}
117
118 # DELETE_CHILD allowed on unwritable directory.
119 expect 0 mkdir ${n0} 0755
120 expect 0 prependacl . user:65534:delete_child::allow
121 expect 0 -u 65534 -g 65534 rmdir ${n0}
122
123 # Moving things elsewhere is allowed.
124 expect 0 mkdir ${n0} 0777
125 expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0}
126
127 # 60
128 # Moving things back is not.
129 # XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
130 expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
131
132 # Even if we're overwriting.
133 # XXX: expect 0 mkdir ${n0} 0755
134 expect 0 mkdir ../${n3}/${n0} 0777
135 # XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
136 expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
137 expect 0 mkdir ../${n3}/${n0} 0777
138
139 # Even if we have DELETE on the existing directory.
140 expect 0 prependacl ${n0} user:65534:delete::allow
141 # XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
142 expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0}
143
144 # Denied DELETE changes nothing wrt removing.
145 expect 0 prependacl ${n0} user:65534:delete::deny
146 expect 0 -u 65534 -g 65534 rmdir ${n0}
147
148 cd ${cdir}
149 expect 0 rmdir ${n2}