xref: /freebsd/tests/sys/acl/tools-nfs4-psarc.test (revision 5f4c09dd85bff675e0ca63c55ea3c517e0fddfcc)
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
584