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