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