]> CyberLeo.Net >> Repos - FreeBSD/releng/8.0.git/blob - tools/regression/acltools/tools-posix.test
Adjust to reflect 8.0-RELEASE.
[FreeBSD/releng/8.0.git] / tools / regression / acltools / tools-posix.test
1 # This is a tools-level test for POSIX.1e ACL functionality.  Run it as root
2 # using ACL-enabled kernel:
3 #
4 # /usr/src/tools/regression/acltools/run /usr/src/tools/regression/acltools/tools-posix.test
5 #
6 # WARNING: Creates files in unsafe way.
7 #
8 # $FreeBSD$
9
10 $ whoami
11 > root
12 $ umask 022
13
14 # Smoke test for getfacl(1).
15 $ touch xxx
16 $ getfacl xxx
17 > # file: xxx
18 > # owner: root
19 > # group: wheel
20 > user::rw-
21 > group::r--
22 > other::r--
23
24 $ getfacl -q xxx
25 > user::rw-
26 > group::r--
27 > other::r--
28
29 $ setfacl -m u:42:r,g:43:w xxx
30 $ getfacl xxx
31 > # file: xxx
32 > # owner: root
33 > # group: wheel
34 > user::rw-
35 > user:42:r--
36 > group::r--
37 > group:43:-w-
38 > mask::rw-
39 > other::r--
40
41 # Check whether ls correctly marks files with "+".
42 $ ls -l xxx | cut -d' ' -f1
43 > -rw-rw-r--+
44
45 # Same as above, but for symlinks.
46 $ ln -s xxx lll
47 $ getfacl -h lll
48 > # file: lll
49 > # owner: root
50 > # group: wheel
51 > user::rwx
52 > group::r-x
53 > other::r-x
54
55 $ getfacl -qh lll
56 > user::rwx
57 > group::r-x
58 > other::r-x
59
60 $ getfacl -q lll
61 > user::rw-
62 > user:42:r--
63 > group::r--
64 > group:43:-w-
65 > mask::rw-
66 > other::r--
67
68 $ setfacl -hm u:44:x,g:45:w lll
69 $ getfacl -h lll
70 > # file: lll
71 > # owner: root
72 > # group: wheel
73 > user::rwx
74 > user:44:--x
75 > group::r-x
76 > group:45:-w-
77 > mask::rwx
78 > other::r-x
79
80 # XXX: Why doesn't ls(1) print '+' for symbolic links with ACL set?
81 $ ls -l lll | cut -d' ' -f1
82 > lrwxrwxr-x
83
84 # Check whether the original file is left untouched.
85 $ ls -l xxx | cut -d' ' -f1
86 > -rw-rw-r--+
87
88 $ rm lll
89
90 # Test removing entries.
91 $ setfacl -x user:42: xxx
92 $ getfacl xxx
93 > # file: xxx
94 > # owner: root
95 > # group: wheel
96 > user::rw-
97 > group::r--
98 > group:43:-w-
99 > mask::rw-
100 > other::r--
101
102 $ setfacl -m g:43:r xxx
103 $ getfacl xxx
104 > # file: xxx
105 > # owner: root
106 > # group: wheel
107 > user::rw-
108 > group::r--
109 > group:43:r--
110 > mask::r--
111 > other::r--
112
113 # Make sure cp without any flags does not copy the ACL.
114 $ cp xxx yyy
115 $ ls -l yyy | cut -d' ' -f1
116 > -rw-r--r--
117
118 # Make sure it does with the "-p" flag.
119 $ rm yyy
120 $ cp -p xxx yyy
121 $ getfacl yyy
122 > # file: yyy
123 > # owner: root
124 > # group: wheel
125 > user::rw-
126 > group::r--
127 > group:43:r--
128 > mask::r--
129 > other::r--
130
131 $ rm yyy
132
133 # Test removing entries by...  by example?
134 $ setfacl -m u:42:r,g:43:w xxx
135 $ setfacl -x u:42: xxx
136 $ getfacl xxx
137 > # file: xxx
138 > # owner: root
139 > # group: wheel
140 > user::rw-
141 > group::r--
142 > group:43:-w-
143 > mask::rw-
144 > other::r--
145
146 # Test setfacl -b.
147 $ setfacl -b xxx
148 $ getfacl xxx
149 > # file: xxx
150 > # owner: root
151 > # group: wheel
152 > user::rw-
153 > group::r--
154 > mask::r--
155 > other::r--
156
157 $ ls -l xxx | cut -d' ' -f1
158 > -rw-r--r--+
159
160 $ setfacl -nb xxx
161 $ getfacl xxx
162 > # file: xxx
163 > # owner: root
164 > # group: wheel
165 > user::rw-
166 > group::r--
167 > other::r--
168
169 $ ls -l xxx | cut -d' ' -f1
170 > -rw-r--r--
171
172 # Check setfacl(1) and getfacl(1) with multiple files.
173 $ touch xxx yyy zzz
174
175 $ ls -l xxx yyy zzz | cut -d' ' -f1
176 > -rw-r--r--
177 > -rw-r--r--
178 > -rw-r--r--
179
180 $ setfacl -m u:42:x,g:43:w nnn xxx yyy zzz
181 > setfacl: stat() of nnn failed: No such file or directory
182
183 $ ls -l nnn xxx yyy zzz | cut -d' ' -f1
184 > ls: nnn: No such file or directory
185 > -rw-rwxr--+
186 > -rw-rwxr--+
187 > -rw-rwxr--+
188
189 $ getfacl -q nnn xxx yyy zzz
190 > getfacl: nnn: No such file or directory
191 > user::rw-
192 > user:42:--x
193 > group::r--
194 > group:43:-w-
195 > mask::rwx
196 > other::r--
197
198 > user::rw-
199 > user:42:--x
200 > group::r--
201 > group:43:-w-
202 > mask::rwx
203 > other::r--
204
205 > user::rw-
206 > user:42:--x
207 > group::r--
208 > group:43:-w-
209 > mask::rwx
210 > other::r--
211
212 $ setfacl -b nnn xxx yyy zzz
213 > setfacl: stat() of nnn failed: No such file or directory
214
215 $ ls -l nnn xxx yyy zzz | cut -d' ' -f1
216 > ls: nnn: No such file or directory
217 > -rw-r--r--+
218 > -rw-r--r--+
219 > -rw-r--r--+
220
221 $ setfacl -bn nnn xxx yyy zzz
222 > setfacl: stat() of nnn failed: No such file or directory
223
224 $ ls -l nnn xxx yyy zzz | cut -d' ' -f1
225 > ls: nnn: No such file or directory
226 > -rw-r--r--
227 > -rw-r--r--
228 > -rw-r--r--
229
230 $ rm xxx yyy zzz
231
232 # Check whether chmod actually does what it should do.
233 $ touch xxx
234 $ setfacl -m u:42:rwx,g:43:rwx xxx
235 $ chmod 600 xxx
236 $ getfacl xxx
237 > # file: xxx
238 > # owner: root
239 > # group: wheel
240 > user::rw-
241 > user:42:rwx           # effective: ---
242 > group::r--            # effective: ---
243 > group:43:rwx          # effective: ---
244 > mask::---
245 > other::---
246
247 $ chmod 060 xxx
248 $ getfacl xxx
249 > # file: xxx
250 > # owner: root
251 > # group: wheel
252 > user::---
253 > user:42:rwx           # effective: rw-
254 > group::r--
255 > group:43:rwx          # effective: rw-
256 > mask::rw-
257 > other::---
258
259 # Test default ACLs.
260 $ umask 022
261 $ mkdir ddd
262 $ getfacl -q ddd
263 > user::rwx
264 > group::r-x
265 > other::r-x
266
267 $ ls -l | grep ddd | cut -d' ' -f1
268 > drwxr-xr-x
269
270 $ getfacl -dq ddd
271 $ setfacl -dm u::rwx,g::rx,o::rx,mask::rwx ddd
272 $ getfacl -dq ddd
273 > user::rwx
274 > group::r-x
275 > mask::rwx
276 > other::r-x
277
278 # No change - ls(1) output doesn't take into account default ACLs.
279 $ ls -l | grep ddd | cut -d' ' -f1
280 > drwxr-xr-x
281
282 $ setfacl -dm g:42:rwx,u:42:r ddd
283 $ setfacl -dm g::w ddd
284 $ getfacl -dq ddd
285 > user::rwx
286 > user:42:r--
287 > group::-w-
288 > group:42:rwx
289 > mask::rwx
290 > other::r-x
291
292 $ setfacl -dx group:42: ddd
293 $ getfacl -dq ddd
294 > user::rwx
295 > user:42:r--
296 > group::-w-
297 > mask::rw-
298 > other::r-x
299
300 $ ls -l | grep ddd | cut -d' ' -f1
301 > drwxr-xr-x
302
303 $ rmdir ddd
304 $ rm xxx
305
306 # Test inheritance.
307 $ mkdir ddd
308
309 $ touch ddd/xxx
310 $ getfacl -q ddd/xxx
311 > user::rw-
312 > group::r--
313 > other::r--
314
315 $ mkdir ddd/ddd
316 $ getfacl -q ddd/ddd
317 > user::rwx
318 > group::r-x
319 > other::r-x
320
321 $ rmdir ddd/ddd
322 $ rm ddd/xxx
323
324 $ setfacl -dm u::rwx,g::rx,o::rx,mask::rwx ddd
325 $ setfacl -dm g:42:rwx,u:43:r ddd
326 $ getfacl -dq ddd
327 > user::rwx
328 > user:43:r--
329 > group::r-x
330 > group:42:rwx
331 > mask::rwx
332 > other::r-x
333
334 $ touch ddd/xxx
335 $ getfacl -q ddd/xxx
336 > user::rw-
337 > user:43:r--
338 > group::r-x            # effective: r--
339 > group:42:rwx          # effective: r--
340 > mask::r--
341 > other::r--
342
343 $ mkdir ddd/ddd
344 $ getfacl -q ddd/ddd
345 > user::rwx
346 > user:43:r--
347 > group::r-x
348 > group:42:rwx          # effective: r-x
349 > mask::r-x
350 > other::r-x
351
352 $ rmdir ddd/ddd
353 $ rm ddd/xxx
354 $ rmdir ddd
355
356 # Test if we deal properly with fifos.
357 $ mkfifo fff
358 $ ls -l fff | cut -d' ' -f1
359 > prw-r--r--
360
361 $ setfacl -m u:42:r,g:43:w fff
362 $ getfacl fff
363 > # file: fff
364 > # owner: root
365 > # group: wheel
366 > user::rw-
367 > user:42:r--
368 > group::r--
369 > group:43:-w-
370 > mask::rw-
371 > other::r--
372
373 $ ls -l fff | cut -d' ' -f1
374 > prw-rw-r--+
375
376 $ setfacl -bn fff
377 $ getfacl fff
378 > # file: fff
379 > # owner: root
380 > # group: wheel
381 > user::rw-
382 > group::r--
383 > other::r--
384
385 $ ls -l fff | cut -d' ' -f1
386 > prw-r--r--
387
388 $ rm fff
389