]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tests/sys/acl/tools-nfs4-psarc.test
zfs: merge openzfs/zfs@e13538856
[FreeBSD/FreeBSD.git] / tests / sys / acl / tools-nfs4-psarc.test
1 # Copyright (c) 2008, 2009 Edward Tomasz NapieraƂa <trasz@FreeBSD.org>
2 #
3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions
5 # are met:
6 # 1. Redistributions of source code must retain the above copyright
7 #    notice, this list of conditions and the following disclaimer.
8 # 2. Redistributions in binary form must reproduce the above copyright
9 #    notice, this list of conditions and the following disclaimer in the
10 #    documentation and/or other materials provided with the distribution.
11 #
12 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
13 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
18 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
21 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
22 # SUCH DAMAGE.
23 #
24 #
25
26 # This is a tools-level test for NFSv4 ACL functionality with PSARC/2010/029
27 # semantics.  Run it as root using ACL-enabled kernel:
28 #
29 # /usr/src/tools/regression/acltools/run /usr/src/tools/regression/acltools/tools-nfs4-psarc.test
30 #
31 # WARNING: Creates files in unsafe way.
32
33 $ whoami
34 > root
35 $ umask 022
36
37 # Smoke test for getfacl(1).
38 $ touch xxx
39 $ getfacl xxx
40 > # file: xxx
41 > # owner: root
42 > # group: wheel
43 >             owner@:rw-p--aARWcCos:-------:allow
44 >             group@:r-----a-R-c--s:-------:allow
45 >          everyone@:r-----a-R-c--s:-------:allow
46
47 $ getfacl -q xxx
48 >             owner@:rw-p--aARWcCos:-------:allow
49 >             group@:r-----a-R-c--s:-------:allow
50 >          everyone@:r-----a-R-c--s:-------:allow
51
52 # Check verbose mode formatting.
53 $ getfacl -v xxx
54 > # file: xxx
55 > # owner: root
56 > # group: wheel
57 >             owner@:read_data/write_data/append_data/read_attributes/write_attributes/read_xattr/write_xattr/read_acl/write_acl/write_owner/synchronize::allow
58 >             group@:read_data/read_attributes/read_xattr/read_acl/synchronize::allow
59 >          everyone@:read_data/read_attributes/read_xattr/read_acl/synchronize::allow
60
61 # Test setfacl -a.
62 $ setfacl -a2 u:0:write_acl:allow,g:1:read_acl:deny xxx
63 $ getfacl -n xxx
64 > # file: xxx
65 > # owner: root
66 > # group: wheel
67 >             owner@:rw-p--aARWcCos:-------:allow
68 >             group@:r-----a-R-c--s:-------:allow
69 >             user:0:-----------C--:-------:allow
70 >            group:1:----------c---:-------:deny
71 >          everyone@:r-----a-R-c--s:-------:allow
72
73 # Test user and group name resolving.
74 $ rm xxx
75 $ touch xxx
76 $ setfacl -a2 u:root:write_acl:allow,g:daemon:read_acl:deny xxx
77 $ getfacl xxx
78 > # file: xxx
79 > # owner: root
80 > # group: wheel
81 >             owner@:rw-p--aARWcCos:-------:allow
82 >             group@:r-----a-R-c--s:-------:allow
83 >          user:root:-----------C--:-------:allow
84 >       group:daemon:----------c---:-------:deny
85 >          everyone@:r-----a-R-c--s:-------:allow
86
87 # Check whether ls correctly marks files with "+".
88 $ ls -l xxx | cut -d' ' -f1
89 > -rw-r--r--+
90
91 # Test removing entries by number.
92 $ setfacl -x 1 xxx
93 $ getfacl -n xxx
94 > # file: xxx
95 > # owner: root
96 > # group: wheel
97 >             owner@:rw-p--aARWcCos:-------:allow
98 >             user:0:-----------C--:-------:allow
99 >            group:1:----------c---:-------:deny
100 >          everyone@:r-----a-R-c--s:-------:allow
101
102 # Test setfacl -m.
103 $ setfacl -a0 everyone@:rwx:deny xxx
104 $ setfacl -a0 everyone@:rwx:deny xxx
105 $ setfacl -a0 everyone@:rwx:deny xxx
106 $ setfacl -m everyone@::deny xxx
107 $ getfacl -n xxx
108 > # file: xxx
109 > # owner: root
110 > # group: wheel
111 >          everyone@:--------------:-------:deny
112 >          everyone@:--------------:-------:deny
113 >          everyone@:--------------:-------:deny
114 >             owner@:rw-p--aARWcCos:-------:allow
115 >             user:0:-----------C--:-------:allow
116 >            group:1:----------c---:-------:deny
117 >          everyone@:r-----a-R-c--s:-------:allow
118
119 # Test getfacl -i.
120 $ getfacl -i xxx
121 > # file: xxx
122 > # owner: root
123 > # group: wheel
124 >          everyone@:--------------:-------:deny
125 >          everyone@:--------------:-------:deny
126 >          everyone@:--------------:-------:deny
127 >             owner@:rw-p--aARWcCos:-------:allow
128 >          user:root:-----------C--:-------:allow:0
129 >       group:daemon:----------c---:-------:deny:1
130 >          everyone@:r-----a-R-c--s:-------:allow
131
132 # Make sure cp without any flags does not copy copy the ACL.
133 $ cp xxx yyy
134 $ ls -l yyy | cut -d' ' -f1
135 > -rw-r--r--
136
137 # Make sure it does with the "-p" flag.
138 $ rm yyy
139 $ cp -p xxx yyy
140 $ getfacl -n yyy
141 > # file: yyy
142 > # owner: root
143 > # group: wheel
144 >          everyone@:--------------:-------:deny
145 >          everyone@:--------------:-------:deny
146 >          everyone@:--------------:-------:deny
147 >             owner@:rw-p--aARWcCos:-------:allow
148 >             user:0:-----------C--:-------:allow
149 >            group:1:----------c---:-------:deny
150 >          everyone@:r-----a-R-c--s:-------:allow
151
152 $ rm yyy
153
154 # Test removing entries by...  by example?
155 $ setfacl -x everyone@::deny xxx
156 $ getfacl -n xxx
157 > # file: xxx
158 > # owner: root
159 > # group: wheel
160 >             owner@:rw-p--aARWcCos:-------:allow
161 >             user:0:-----------C--:-------:allow
162 >            group:1:----------c---:-------:deny
163 >          everyone@:r-----a-R-c--s:-------:allow
164
165 # Test setfacl -b.
166 $ setfacl -b xxx
167 $ getfacl -n xxx
168 > # file: xxx
169 > # owner: root
170 > # group: wheel
171 >             owner@:rw-p--aARWcCos:-------:allow
172 >             group@:r-----a-R-c--s:-------:allow
173 >          everyone@:r-----a-R-c--s:-------:allow
174
175 $ ls -l xxx | cut -d' ' -f1
176 > -rw-r--r--
177
178 # Check setfacl(1) and getfacl(1) with multiple files.
179 $ touch xxx yyy zzz
180
181 $ ls -l xxx yyy zzz | cut -d' ' -f1
182 > -rw-r--r--
183 > -rw-r--r--
184 > -rw-r--r--
185
186 $ setfacl -m u:42:x:allow,g:43:w:allow nnn xxx yyy zzz
187 > setfacl: nnn: acl_get_file() failed: No such file or directory
188
189 $ ls -l nnn xxx yyy zzz | cut -d' ' -f1
190 > ls: nnn: No such file or directory
191 > -rw-r--r--+
192 > -rw-r--r--+
193 > -rw-r--r--+
194
195 $ getfacl -nq nnn xxx yyy zzz
196 > getfacl: nnn: stat() failed: No such file or directory
197 >            user:42:--x-----------:-------:allow
198 >           group:43:-w------------:-------:allow
199 >             owner@:rw-p--aARWcCos:-------:allow
200 >             group@:r-----a-R-c--s:-------:allow
201 >          everyone@:r-----a-R-c--s:-------:allow
202 >
203 >            user:42:--x-----------:-------:allow
204 >           group:43:-w------------:-------:allow
205 >             owner@:rw-p--aARWcCos:-------:allow
206 >             group@:r-----a-R-c--s:-------:allow
207 >          everyone@:r-----a-R-c--s:-------:allow
208 >
209 >            user:42:--x-----------:-------:allow
210 >           group:43:-w------------:-------:allow
211 >             owner@:rw-p--aARWcCos:-------:allow
212 >             group@:r-----a-R-c--s:-------:allow
213 >          everyone@:r-----a-R-c--s:-------:allow
214
215 $ setfacl -b nnn xxx yyy zzz
216 > setfacl: nnn: acl_get_file() failed: No such file or directory
217
218 $ ls -l nnn xxx yyy zzz | cut -d' ' -f1
219 > ls: nnn: No such file or directory
220 > -rw-r--r--
221 > -rw-r--r--
222 > -rw-r--r--
223
224 $ rm xxx yyy zzz
225
226 # Test applying mode to an ACL.
227 $ touch xxx
228 $ setfacl -a0 user:42:r:allow,user:43:w:deny,user:43:w:allow,user:44:x:allow -x everyone@::allow xxx
229 $ chmod 600 xxx
230 $ getfacl -n xxx
231 > # file: xxx
232 > # owner: root
233 > # group: wheel
234 >             owner@:rw-p--aARWcCos:-------:allow
235 >             group@:------a-R-c--s:-------:allow
236 >          everyone@:------a-R-c--s:-------:allow
237
238 $ ls -l xxx | cut -d' ' -f1
239 > -rw-------
240
241 $ rm xxx
242 $ touch xxx
243 $ chown 42 xxx
244 $ setfacl -a0 user:42:r:allow,user:43:w:deny,user:43:w:allow,user:44:x:allow xxx
245 $ chmod 600 xxx
246 $ getfacl -n xxx
247 > # file: xxx
248 > # owner: 42
249 > # group: wheel
250 >             owner@:rw-p--aARWcCos:-------:allow
251 >             group@:------a-R-c--s:-------:allow
252 >          everyone@:------a-R-c--s:-------:allow
253 $ ls -l xxx | cut -d' ' -f1
254 > -rw-------
255
256 $ rm xxx
257 $ touch xxx
258 $ chown 43 xxx
259 $ setfacl -a0 user:42:r:allow,user:43:w:deny,user:43:w:allow,user:44:x:allow xxx
260 $ chmod 124 xxx
261 $ getfacl -n xxx
262 > # file: xxx
263 > # owner: 43
264 > # group: wheel
265 >             owner@:rw-p----------:-------:deny
266 >             group@:r-------------:-------:deny
267 >             owner@:--x---aARWcCos:-------:allow
268 >             group@:-w-p--a-R-c--s:-------:allow
269 >          everyone@:r-----a-R-c--s:-------:allow
270 $ ls -l xxx | cut -d' ' -f1
271 > ---x-w-r--
272
273 $ rm xxx
274 $ touch xxx
275 $ chown 43 xxx
276 $ setfacl -a0 user:42:r:allow,user:43:w:deny,user:43:w:allow,user:44:x:allow xxx
277 $ chmod 412 xxx
278 $ getfacl -n xxx
279 > # file: xxx
280 > # owner: 43
281 > # group: wheel
282 >             owner@:-wxp----------:-------:deny
283 >             group@:-w-p----------:-------:deny
284 >             owner@:r-----aARWcCos:-------:allow
285 >             group@:--x---a-R-c--s:-------:allow
286 >          everyone@:-w-p--a-R-c--s:-------:allow
287 $ ls -l xxx | cut -d' ' -f1
288 > -r----x-w-
289
290 $ mkdir ddd
291 $ setfacl -a0 group:44:rwapd:allow ddd
292 $ setfacl -a0 group:43:write_data/delete_child:d:deny,group@:ad:allow ddd
293 $ setfacl -a0 user:42:rx:fi:allow,group:42:write_data/delete_child:d:allow ddd
294 $ setfacl -m everyone@:-w-p--a-R-c--s:fi:allow ddd
295 $ getfacl -n ddd
296 > # file: ddd
297 > # owner: root
298 > # group: wheel
299 >            user:42:r-x-----------:f-i----:allow
300 >           group:42:-w--D---------:-d-----:allow
301 >           group:43:-w--D---------:-d-----:deny
302 >             group@:-----da-------:-------:allow
303 >           group:44:rw-p-da-------:-------:allow
304 >             owner@:rwxp--aARWcCos:-------:allow
305 >             group@:r-x---a-R-c--s:-------:allow
306 >          everyone@:-w-p--a-R-c--s:f-i----:allow
307
308 $ chmod 777 ddd
309 $ getfacl -n ddd
310 > # file: ddd
311 > # owner: root
312 > # group: wheel
313 >             owner@:rwxp--aARWcCos:-------:allow
314 >             group@:rwxp--a-R-c--s:-------:allow
315 >          everyone@:rwxp--a-R-c--s:-------:allow
316
317 # Test applying ACL to mode.
318 $ rmdir ddd
319 $ mkdir ddd
320 $ setfacl -a0 u:42:rwx:fi:allow ddd
321 $ ls -ld ddd | cut -d' ' -f1
322 > drwxr-xr-x+
323
324 $ rmdir ddd
325 $ mkdir ddd
326 $ chmod 0 ddd
327 $ setfacl -a0 owner@:r:allow,group@:w:deny,group@:wx:allow ddd
328 $ ls -ld ddd | cut -d' ' -f1
329 > dr----x---+
330
331 $ rmdir ddd
332 $ mkdir ddd
333 $ chmod 0 ddd
334 $ setfacl -a0 owner@:r:allow,group@:w:fi:deny,group@:wx:allow ddd
335 $ ls -ld ddd | cut -d' ' -f1
336 > dr---wx---+
337
338 $ rmdir ddd
339 $ mkdir ddd
340 $ chmod 0 ddd
341 $ setfacl -a0 owner@:r:allow,group:43:w:deny,group:43:wx:allow ddd
342 $ ls -ld ddd | cut -d' ' -f1
343 > dr--------+
344
345 $ rmdir ddd
346 $ mkdir ddd
347 $ chmod 0 ddd
348 $ setfacl -a0 owner@:r:allow,user:43:w:deny,user:43:wx:allow ddd
349 $ ls -ld ddd | cut -d' ' -f1
350 > dr--------+
351
352 # Test inheritance.
353 $ rmdir ddd
354 $ mkdir ddd
355 $ setfacl -a0 group:43:write_data/write_acl:fin:deny,u:43:rwxp:allow ddd
356 $ setfacl -a0 user:42:rx:fi:allow,group:42:write_data/delete_child:dn:deny ddd
357 $ setfacl -a0 user:42:write_acl/write_owner:fi:allow ddd
358 $ setfacl -a0 group:41:read_data/read_attributes:dni:allow ddd
359 $ setfacl -a0 user:41:write_data/write_attributes:fn:allow ddd
360 $ getfacl -qn ddd
361 >            user:41:-w-----A------:f--n---:allow
362 >           group:41:r-----a-------:-din---:allow
363 >            user:42:-----------Co-:f-i----:allow
364 >            user:42:r-x-----------:f-i----:allow
365 >           group:42:-w--D---------:-d-n---:deny
366 >           group:43:-w---------C--:f-in---:deny
367 >            user:43:rwxp----------:-------:allow
368 >             owner@:rwxp--aARWcCos:-------:allow
369 >             group@:r-x---a-R-c--s:-------:allow
370 >          everyone@:r-x---a-R-c--s:-------:allow
371
372 $ cd ddd
373 $ touch xxx
374 $ getfacl -qn xxx
375 >            user:41:--------------:------I:allow
376 >            user:42:--------------:------I:allow
377 >            user:42:r-------------:------I:allow
378 >           group:43:-w---------C--:------I:deny
379 >             owner@:rw-p--aARWcCos:-------:allow
380 >             group@:r-----a-R-c--s:-------:allow
381 >          everyone@:r-----a-R-c--s:-------:allow
382
383 $ rm xxx
384 $ umask 077
385 $ touch xxx
386 $ getfacl -qn xxx
387 >            user:41:--------------:------I:allow
388 >            user:42:--------------:------I:allow
389 >            user:42:--------------:------I:allow
390 >           group:43:-w---------C--:------I:deny
391 >             owner@:rw-p--aARWcCos:-------:allow
392 >             group@:------a-R-c--s:-------:allow
393 >          everyone@:------a-R-c--s:-------:allow
394
395 $ rm xxx
396 $ umask 770
397 $ touch xxx
398 $ getfacl -qn xxx
399 >             owner@:rw-p----------:-------:deny
400 >             group@:rw-p----------:-------:deny
401 >            user:41:--------------:------I:allow
402 >            user:42:--------------:------I:allow
403 >            user:42:--------------:------I:allow
404 >           group:43:-w---------C--:------I:deny
405 >             owner@:------aARWcCos:-------:allow
406 >             group@:------a-R-c--s:-------:allow
407 >          everyone@:rw-p--a-R-c--s:-------:allow
408
409 $ rm xxx
410 $ umask 707
411 $ touch xxx
412 $ getfacl -qn xxx
413 >             owner@:rw-p----------:-------:deny
414 >            user:41:-w------------:------I:allow
415 >            user:42:--------------:------I:allow
416 >            user:42:r-------------:------I:allow
417 >           group:43:-w---------C--:------I:deny
418 >             owner@:------aARWcCos:-------:allow
419 >             group@:rw-p--a-R-c--s:-------:allow
420 >          everyone@:------a-R-c--s:-------:allow
421
422 $ umask 077
423 $ mkdir yyy
424 $ getfacl -qn yyy
425 >           group:41:------a-------:------I:allow
426 >            user:42:-----------Co-:f-i---I:allow
427 >            user:42:r-x-----------:f-i---I:allow
428 >           group:42:-w--D---------:------I:deny
429 >             owner@:rwxp--aARWcCos:-------:allow
430 >             group@:------a-R-c--s:-------:allow
431 >          everyone@:------a-R-c--s:-------:allow
432
433 $ rmdir yyy
434 $ umask 770
435 $ mkdir yyy
436 $ getfacl -qn yyy
437 >             owner@:rwxp----------:-------:deny
438 >             group@:rwxp----------:-------:deny
439 >           group:41:------a-------:------I:allow
440 >            user:42:-----------Co-:f-i---I:allow
441 >            user:42:r-x-----------:f-i---I:allow
442 >           group:42:-w--D---------:------I:deny
443 >             owner@:------aARWcCos:-------:allow
444 >             group@:------a-R-c--s:-------:allow
445 >          everyone@:rwxp--a-R-c--s:-------:allow
446
447 $ rmdir yyy
448 $ umask 707
449 $ mkdir yyy
450 $ getfacl -qn yyy
451 >             owner@:rwxp----------:-------:deny
452 >           group:41:r-----a-------:------I:allow
453 >            user:42:-----------Co-:f-i---I:allow
454 >            user:42:r-x-----------:f-i---I:allow
455 >           group:42:-w--D---------:------I:deny
456 >             owner@:------aARWcCos:-------:allow
457 >             group@:rwxp--a-R-c--s:-------:allow
458 >          everyone@:------a-R-c--s:-------:allow
459
460 # There is some complication regarding how write_acl and write_owner flags
461 # get inherited.  Make sure we got it right.
462 $ setfacl -b .
463 $ setfacl -a0 u:42:Co:f:allow .
464 $ setfacl -a0 u:43:Co:d:allow .
465 $ setfacl -a0 u:44:Co:fd:allow .
466 $ setfacl -a0 u:45:Co:fi:allow .
467 $ setfacl -a0 u:46:Co:di:allow .
468 $ setfacl -a0 u:47:Co:fdi:allow .
469 $ setfacl -a0 u:48:Co:fn:allow .
470 $ setfacl -a0 u:49:Co:dn:allow .
471 $ setfacl -a0 u:50:Co:fdn:allow .
472 $ setfacl -a0 u:51:Co:fni:allow .
473 $ setfacl -a0 u:52:Co:dni:allow .
474 $ setfacl -a0 u:53:Co:fdni:allow .
475 $ umask 022
476 $ rm xxx
477 $ touch xxx
478 $ getfacl -nq xxx
479 >            user:53:--------------:------I:allow
480 >            user:51:--------------:------I:allow
481 >            user:50:--------------:------I:allow
482 >            user:48:--------------:------I:allow
483 >            user:47:--------------:------I:allow
484 >            user:45:--------------:------I:allow
485 >            user:44:--------------:------I:allow
486 >            user:42:--------------:------I:allow
487 >             owner@:rw-p--aARWcCos:-------:allow
488 >             group@:r-----a-R-c--s:-------:allow
489 >          everyone@:r-----a-R-c--s:-------:allow
490
491 $ rmdir yyy
492 $ mkdir yyy
493 $ getfacl -nq yyy
494 >            user:53:--------------:------I:allow
495 >            user:52:--------------:------I:allow
496 >            user:50:--------------:------I:allow
497 >            user:49:--------------:------I:allow
498 >            user:47:--------------:fd----I:allow
499 >            user:46:--------------:-d----I:allow
500 >            user:45:-----------Co-:f-i---I:allow
501 >            user:44:--------------:fd----I:allow
502 >            user:43:--------------:-d----I:allow
503 >            user:42:-----------Co-:f-i---I:allow
504 >             owner@:rwxp--aARWcCos:-------:allow
505 >             group@:r-x---a-R-c--s:-------:allow
506 >          everyone@:r-x---a-R-c--s:-------:allow
507
508 $ setfacl -b .
509 $ setfacl -a0 u:42:Co:f:deny .
510 $ setfacl -a0 u:43:Co:d:deny .
511 $ setfacl -a0 u:44:Co:fd:deny .
512 $ setfacl -a0 u:45:Co:fi:deny .
513 $ setfacl -a0 u:46:Co:di:deny .
514 $ setfacl -a0 u:47:Co:fdi:deny .
515 $ setfacl -a0 u:48:Co:fn:deny .
516 $ setfacl -a0 u:49:Co:dn:deny .
517 $ setfacl -a0 u:50:Co:fdn:deny .
518 $ setfacl -a0 u:51:Co:fni:deny .
519 $ setfacl -a0 u:52:Co:dni:deny .
520 $ setfacl -a0 u:53:Co:fdni:deny .
521 $ umask 022
522 $ rm xxx
523 $ touch xxx
524 $ getfacl -nq xxx
525 >            user:53:-----------Co-:------I:deny
526 >            user:51:-----------Co-:------I:deny
527 >            user:50:-----------Co-:------I:deny
528 >            user:48:-----------Co-:------I:deny
529 >            user:47:-----------Co-:------I:deny
530 >            user:45:-----------Co-:------I:deny
531 >            user:44:-----------Co-:------I:deny
532 >            user:42:-----------Co-:------I:deny
533 >             owner@:rw-p--aARWcCos:-------:allow
534 >             group@:r-----a-R-c--s:-------:allow
535 >          everyone@:r-----a-R-c--s:-------:allow
536
537 $ rmdir yyy
538 $ mkdir yyy
539 $ getfacl -nq yyy
540 >            user:53:-----------Co-:------I:deny
541 >            user:52:-----------Co-:------I:deny
542 >            user:50:-----------Co-:------I:deny
543 >            user:49:-----------Co-:------I:deny
544 >            user:47:-----------Co-:fd----I:deny
545 >            user:46:-----------Co-:-d----I:deny
546 >            user:45:-----------Co-:f-i---I:deny
547 >            user:44:-----------Co-:fd----I:deny
548 >            user:43:-----------Co-:-d----I:deny
549 >            user:42:-----------Co-:f-i---I:deny
550 >             owner@:rwxp--aARWcCos:-------:allow
551 >             group@:r-x---a-R-c--s:-------:allow
552 >          everyone@:r-x---a-R-c--s:-------:allow
553
554 $ rmdir yyy
555 $ rm xxx
556 $ cd ..
557 $ rmdir ddd
558 $ rm xxx
559
560 # Test basic recursive setting of ACLs.
561 $ mkdir ddd
562 $ touch ddd/xxx
563 $ mkdir ddd/eee
564 $ touch ddd/eee/yyy
565 $ setfacl -R -m owner@:full_set:f:allow,group@:full_set::allow,everyone@:full_set::allow ddd
566 $ getfacl -q ddd
567 >             owner@:rwxpDdaARWcCos:f------:allow
568 >             group@:rwxpDdaARWcCos:-------:allow
569 >          everyone@:rwxpDdaARWcCos:-------:allow
570 $ getfacl -q ddd/xxx
571 >             owner@:rwxpDdaARWcCos:-------:allow
572 >             group@:rwxpDdaARWcCos:-------:allow
573 >          everyone@:rwxpDdaARWcCos:-------:allow
574 $ getfacl -q ddd/eee
575 >             owner@:rwxpDdaARWcCos:f------:allow
576 >             group@:rwxpDdaARWcCos:-------:allow
577 >          everyone@:rwxpDdaARWcCos:-------:allow
578 $ getfacl -q ddd/eee/yyy
579 >             owner@:rwxpDdaARWcCos:-------:allow
580 >             group@:rwxpDdaARWcCos:-------:allow
581 >          everyone@:rwxpDdaARWcCos:-------:allow
582
583 $ rm -r ddd