tools-nfs4-psarc.test revision 196938
1# Copyright (c) 2008, 2009 Edward Tomasz Napiera��a <trasz@FreeBSD.org> 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions 6# are met: 7# 1. Redistributions of source code must retain the above copyright 8# notice, this list of conditions and the following disclaimer. 9# 2. Redistributions in binary form must reproduce the above copyright 10# notice, this list of conditions and the following disclaimer in the 11# documentation and/or other materials provided with the distribution. 12# 13# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23# SUCH DAMAGE. 24# 25# $FreeBSD: head/tools/regression/acltools/tools-nfs4.test 196938 2009-09-07 16:26:03Z trasz $ 26# 27 28# This is a tools-level test for NFSv4 ACL functionality. Run it as root 29# using ACL-enabled kernel: 30# 31# /usr/src/tools/regression/acltools/run /usr/src/tools/regression/acltools/tools-nfs4.test 32# 33# WARNING: Creates files in unsafe way. 34 35$ whoami 36> root 37$ umask 022 38 39# Smoke test for getfacl(1). 40$ touch xxx 41$ getfacl xxx 42> # file: xxx 43> # owner: root 44> # group: wheel 45> owner@:--x-----------:------:deny 46> owner@:rw-p---A-W-Co-:------:allow 47> group@:-wxp----------:------:deny 48> group@:r-------------:------:allow 49> everyone@:-wxp---A-W-Co-:------:deny 50> everyone@:r-----a-R-c--s:------:allow 51 52$ getfacl -q xxx 53> owner@:--x-----------:------:deny 54> owner@:rw-p---A-W-Co-:------:allow 55> group@:-wxp----------:------:deny 56> group@:r-------------:------:allow 57> everyone@:-wxp---A-W-Co-:------:deny 58> everyone@:r-----a-R-c--s:------:allow 59 60# Check verbose mode formatting. 61$ getfacl -v xxx 62> # file: xxx 63> # owner: root 64> # group: wheel 65> owner@:execute::deny 66> owner@:read_data/write_data/append_data/write_attributes/write_xattr/write_acl/write_owner::allow 67> group@:write_data/execute/append_data::deny 68> group@:read_data::allow 69> everyone@:write_data/execute/append_data/write_attributes/write_xattr/write_acl/write_owner::deny 70> everyone@:read_data/read_attributes/read_xattr/read_acl/synchronize::allow 71 72# Test setfacl -a. 73$ setfacl -a2 u:0:write_acl:allow,g:1:read_acl:deny xxx 74$ getfacl -n xxx 75> # file: xxx 76> # owner: root 77> # group: wheel 78> owner@:--x-----------:------:deny 79> owner@:rw-p---A-W-Co-:------:allow 80> user:0:-----------C--:------:allow 81> group:1:----------c---:------:deny 82> group@:-wxp----------:------:deny 83> group@:r-------------:------:allow 84> everyone@:-wxp---A-W-Co-:------:deny 85> everyone@:r-----a-R-c--s:------:allow 86 87# Test user and group name resolving. 88$ rm xxx 89$ touch xxx 90$ setfacl -a2 u:root:write_acl:allow,g:daemon:read_acl:deny xxx 91$ getfacl xxx 92> # file: xxx 93> # owner: root 94> # group: wheel 95> owner@:--x-----------:------:deny 96> owner@:rw-p---A-W-Co-:------:allow 97> user:root:-----------C--:------:allow 98> group:daemon:----------c---:------:deny 99> group@:-wxp----------:------:deny 100> group@:r-------------:------:allow 101> everyone@:-wxp---A-W-Co-:------:deny 102> everyone@:r-----a-R-c--s:------:allow 103 104# Check whether ls correctly marks files with "+". 105$ ls -l xxx | cut -d' ' -f1 106> -rw-r--r--+ 107 108# Test removing entries by number. 109$ setfacl -x 4 xxx 110$ setfacl -x 4 xxx 111$ getfacl -n xxx 112> # file: xxx 113> # owner: root 114> # group: wheel 115> owner@:--x-----------:------:deny 116> owner@:rw-p---A-W-Co-:------:allow 117> user:0:-----------C--:------:allow 118> group:1:----------c---:------:deny 119> everyone@:-wxp---A-W-Co-:------:deny 120> everyone@:r-----a-R-c--s:------:allow 121 122# Test setfacl -m. 123$ setfacl -a0 everyone@:rwx:deny xxx 124$ setfacl -a0 everyone@:rwx:deny xxx 125$ setfacl -a0 everyone@:rwx:deny xxx 126$ setfacl -m everyone@::deny xxx 127$ getfacl -n xxx 128> # file: xxx 129> # owner: root 130> # group: wheel 131> everyone@:--------------:------:deny 132> everyone@:--------------:------:deny 133> everyone@:--------------:------:deny 134> owner@:--x-----------:------:deny 135> owner@:rw-p---A-W-Co-:------:allow 136> user:0:-----------C--:------:allow 137> group:1:----------c---:------:deny 138> everyone@:--------------:------:deny 139> everyone@:r-----a-R-c--s:------:allow 140 141# Test getfacl -i. 142$ getfacl -i xxx 143> # file: xxx 144> # owner: root 145> # group: wheel 146> everyone@:--------------:------:deny 147> everyone@:--------------:------:deny 148> everyone@:--------------:------:deny 149> owner@:--x-----------:------:deny 150> owner@:rw-p---A-W-Co-:------:allow 151> user:root:-----------C--:------:allow:0 152> group:daemon:----------c---:------:deny:1 153> everyone@:--------------:------:deny 154> everyone@:r-----a-R-c--s:------:allow 155 156# Make sure cp without any flags does not copy copy the ACL. 157$ cp xxx yyy 158$ ls -l yyy | cut -d' ' -f1 159> -rw-r--r-- 160 161# Make sure it does with the "-p" flag. 162$ rm yyy 163$ cp -p xxx yyy 164$ getfacl -n yyy 165> # file: yyy 166> # owner: root 167> # group: wheel 168> everyone@:--------------:------:deny 169> everyone@:--------------:------:deny 170> everyone@:--------------:------:deny 171> owner@:--x-----------:------:deny 172> owner@:rw-p---A-W-Co-:------:allow 173> user:0:-----------C--:------:allow 174> group:1:----------c---:------:deny 175> everyone@:--------------:------:deny 176> everyone@:r-----a-R-c--s:------:allow 177 178$ rm yyy 179 180# Test removing entries by... by example? 181$ setfacl -x everyone@::deny xxx 182$ getfacl -n xxx 183> # file: xxx 184> # owner: root 185> # group: wheel 186> owner@:--x-----------:------:deny 187> owner@:rw-p---A-W-Co-:------:allow 188> user:0:-----------C--:------:allow 189> group:1:----------c---:------:deny 190> everyone@:r-----a-R-c--s:------:allow 191 192# Test setfacl -b. 193$ setfacl -b xxx 194$ getfacl -n xxx 195> # file: xxx 196> # owner: root 197> # group: wheel 198> owner@:--x-----------:------:deny 199> owner@:rw-p---A-W-Co-:------:allow 200> group@:-wxp----------:------:deny 201> group@:r-------------:------:allow 202> everyone@:-wxp---A-W-Co-:------:deny 203> everyone@:r-----a-R-c--s:------:allow 204 205$ ls -l xxx | cut -d' ' -f1 206> -rw-r--r-- 207 208# Check setfacl(1) and getfacl(1) with multiple files. 209$ touch xxx yyy zzz 210 211$ ls -l xxx yyy zzz | cut -d' ' -f1 212> -rw-r--r-- 213> -rw-r--r-- 214> -rw-r--r-- 215 216$ setfacl -m u:42:x:allow,g:43:w:allow nnn xxx yyy zzz 217> setfacl: nnn: stat() 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$ getfacl -nq nnn xxx yyy zzz 226> getfacl: nnn: stat() failed: No such file or directory 227> user:42:--x-----------:------:allow 228> group:43:-w------------:------:allow 229> owner@:--x-----------:------:deny 230> owner@:rw-p---A-W-Co-:------:allow 231> group@:-wxp----------:------:deny 232> group@:r-------------:------:allow 233> everyone@:-wxp---A-W-Co-:------:deny 234> everyone@:r-----a-R-c--s:------:allow 235> 236> user:42:--x-----------:------:allow 237> group:43:-w------------:------:allow 238> owner@:--x-----------:------:deny 239> owner@:rw-p---A-W-Co-:------:allow 240> group@:-wxp----------:------:deny 241> group@:r-------------:------:allow 242> everyone@:-wxp---A-W-Co-:------:deny 243> everyone@:r-----a-R-c--s:------:allow 244> 245> user:42:--x-----------:------:allow 246> group:43:-w------------:------:allow 247> owner@:--x-----------:------:deny 248> owner@:rw-p---A-W-Co-:------:allow 249> group@:-wxp----------:------:deny 250> group@:r-------------:------:allow 251> everyone@:-wxp---A-W-Co-:------:deny 252> everyone@:r-----a-R-c--s:------:allow 253 254$ setfacl -b nnn xxx yyy zzz 255> setfacl: nnn: stat() failed: No such file or directory 256 257$ ls -l nnn xxx yyy zzz | cut -d' ' -f1 258> ls: nnn: No such file or directory 259> -rw-r--r-- 260> -rw-r--r-- 261> -rw-r--r-- 262 263$ rm xxx yyy zzz 264 265# Test applying mode to an ACL. 266$ touch xxx 267$ setfacl -a0 user:42:r:allow,user:43:w:deny,user:43:w:allow,user:44:x:allow -x everyone@::allow xxx 268$ chmod 600 xxx 269$ getfacl -n xxx 270> # file: xxx 271> # owner: root 272> # group: wheel 273> user:42:r-------------:------:deny 274> user:42:r-------------:------:allow 275> user:43:-w------------:------:deny 276> user:43:-w------------:------:allow 277> user:44:--x-----------:------:deny 278> user:44:--x-----------:------:allow 279> owner@:--------------:------:deny 280> owner@:-------A-W-Co-:------:allow 281> group@:--------------:------:deny 282> group@:--------------:------:allow 283> everyone@:-------A-W-Co-:------:deny 284> owner@:--x-----------:------:deny 285> owner@:rw-p---A-W-Co-:------:allow 286> group@:rwxp----------:------:deny 287> group@:--------------:------:allow 288> everyone@:rwxp---A-W-Co-:------:deny 289> everyone@:------a-R-c--s:------:allow 290$ ls -l xxx | cut -d' ' -f1 291> -rw-------+ 292 293$ rm xxx 294$ touch xxx 295$ chown 42 xxx 296$ setfacl -a0 user:42:r:allow,user:43:w:deny,user:43:w:allow,user:44:x:allow xxx 297$ chmod 600 xxx 298$ getfacl -n xxx 299> # file: xxx 300> # owner: 42 301> # group: wheel 302> user:42:--------------:------:deny 303> user:42:r-------------:------:allow 304> user:43:-w------------:------:deny 305> user:43:-w------------:------:allow 306> user:44:--x-----------:------:deny 307> user:44:--x-----------:------:allow 308> owner@:--x-----------:------:deny 309> owner@:rw-p---A-W-Co-:------:allow 310> group@:rwxp----------:------:deny 311> group@:--------------:------:allow 312> everyone@:rwxp---A-W-Co-:------:deny 313> everyone@:------a-R-c--s:------:allow 314$ ls -l xxx | cut -d' ' -f1 315> -rw-------+ 316 317$ rm xxx 318$ touch xxx 319$ chown 43 xxx 320$ setfacl -a0 user:42:r:allow,user:43:w:deny,user:43:w:allow,user:44:x:allow xxx 321$ chmod 124 xxx 322$ getfacl -n xxx 323> # file: xxx 324> # owner: 43 325> # group: wheel 326> user:42:r-------------:------:deny 327> user:42:r-------------:------:allow 328> user:43:-w------------:------:deny 329> user:43:-w------------:------:allow 330> user:44:--x-----------:------:deny 331> user:44:--x-----------:------:allow 332> owner@:rw-p----------:------:deny 333> owner@:--x----A-W-Co-:------:allow 334> group@:r-x-----------:------:deny 335> group@:-w-p----------:------:allow 336> everyone@:-wxp---A-W-Co-:------:deny 337> everyone@:r-----a-R-c--s:------:allow 338$ ls -l xxx | cut -d' ' -f1 339> ---x-w-r--+ 340 341$ rm xxx 342$ touch xxx 343$ chown 43 xxx 344$ setfacl -a0 user:42:r:allow,user:43:w:deny,user:43:w:allow,user:44:x:allow xxx 345$ chmod 412 xxx 346$ getfacl -n xxx 347> # file: xxx 348> # owner: 43 349> # group: wheel 350> user:42:r-------------:------:deny 351> user:42:r-------------:------:allow 352> user:43:-w------------:------:deny 353> user:43:-w------------:------:allow 354> user:44:--------------:------:deny 355> user:44:--x-----------:------:allow 356> owner@:-wxp----------:------:deny 357> owner@:r------A-W-Co-:------:allow 358> group@:rw-p----------:------:deny 359> group@:--x-----------:------:allow 360> everyone@:r-x----A-W-Co-:------:deny 361> everyone@:-w-p--a-R-c--s:------:allow 362$ ls -l xxx | cut -d' ' -f1 363> -r----x-w-+ 364 365$ mkdir ddd 366$ setfacl -a0 group:44:rwapd:allow ddd 367$ setfacl -a0 group:43:write_data/delete_child:d:deny,group@:ad:allow ddd 368$ setfacl -a0 user:42:rx:fi:allow,group:42:write_data/delete_child:d:allow ddd 369$ setfacl -m everyone@:-w-p--a-R-c--s:fi:allow ddd 370$ getfacl -n ddd 371> # file: ddd 372> # owner: root 373> # group: wheel 374> user:42:r-x-----------:f-i---:allow 375> group:42:-w--D---------:-d----:allow 376> group:43:-w--D---------:-d----:deny 377> group@:-----da-------:------:allow 378> group:44:rw-p-da-------:------:allow 379> owner@:--------------:------:deny 380> owner@:rwxp---A-W-Co-:------:allow 381> group@:-w-p----------:------:deny 382> group@:r-x-----------:------:allow 383> everyone@:-w-p---A-W-Co-:------:deny 384> everyone@:-w-p--a-R-c--s:f-i---:allow 385$ chmod 777 ddd 386$ getfacl -n ddd 387> # file: ddd 388> # owner: root 389> # group: wheel 390> user:42:r-x-----------:f-i---:allow 391> group:42:-w--D---------:-di---:allow 392> group:42:--------------:------:deny 393> group:42:-w--D---------:------:allow 394> group:43:-w--D---------:-di---:deny 395> group:43:-w--D---------:------:deny 396> group@:-----da-------:------:allow 397> group:44:--------------:------:deny 398> group:44:rw-p-da-------:------:allow 399> owner@:--------------:------:deny 400> owner@:-------A-W-Co-:------:allow 401> group@:--------------:------:deny 402> group@:--------------:------:allow 403> everyone@:-------A-W-Co-:------:deny 404> everyone@:-w-p--a-R-c--s:f-i---:allow 405> owner@:--------------:------:deny 406> owner@:rwxp---A-W-Co-:------:allow 407> group@:--------------:------:deny 408> group@:rwxp----------:------:allow 409> everyone@:-------A-W-Co-:------:deny 410> everyone@:rwxp--a-R-c--s:------:allow 411 412$ rmdir ddd 413$ mkdir ddd 414$ setfacl -a0 group:44:rwapd:allow ddd 415$ setfacl -a0 group:43:write_data/delete_child:d:deny,group@:ad:allow ddd 416$ setfacl -a0 user:42:rx:fi:allow,group:42:write_data/delete_child:d:allow ddd 417$ setfacl -m everyone@:-w-p--a-R-c--s:fi:allow ddd 418$ chmod 124 ddd 419$ getfacl -n ddd 420> # file: ddd 421> # owner: root 422> # group: wheel 423> user:42:r-x-----------:f-i---:allow 424> group:42:-w--D---------:-di---:allow 425> group:42:--------------:------:deny 426> group:42:----D---------:------:allow 427> group:43:-w--D---------:-di---:deny 428> group:43:-w--D---------:------:deny 429> group@:-----da-------:------:allow 430> group:44:r-------------:------:deny 431> group:44:r----da-------:------:allow 432> owner@:--------------:------:deny 433> owner@:-------A-W-Co-:------:allow 434> group@:--------------:------:deny 435> group@:--------------:------:allow 436> everyone@:-------A-W-Co-:------:deny 437> everyone@:-w-p--a-R-c--s:f-i---:allow 438> owner@:rw-p----------:------:deny 439> owner@:--x----A-W-Co-:------:allow 440> group@:r-x-----------:------:deny 441> group@:-w-p----------:------:allow 442> everyone@:-wxp---A-W-Co-:------:deny 443> everyone@:r-----a-R-c--s:------:allow 444 445$ rmdir ddd 446$ mkdir ddd 447$ setfacl -a0 group:44:rwapd:allow ddd 448$ setfacl -a0 group:43:write_data/delete_child:d:deny,group@:ad:allow ddd 449$ setfacl -a0 user:42:rx:allow,user:42:rx:fi:allow,group:42:write_data/delete_child:d:allow ddd 450$ setfacl -m everyone@:-w-p--a-R-c--s:fi:allow ddd 451$ chmod 412 ddd 452$ getfacl -n ddd 453> # file: ddd 454> # owner: root 455> # group: wheel 456> user:42:r-------------:------:deny 457> user:42:r-x-----------:------:allow 458> user:42:r-x-----------:f-i---:allow 459> group:42:-w--D---------:-di---:allow 460> group:42:-w------------:------:deny 461> group:42:-w--D---------:------:allow 462> group:43:-w--D---------:-di---:deny 463> group:43:-w--D---------:------:deny 464> group@:-----da-------:------:allow 465> group:44:rw-p----------:------:deny 466> group:44:rw-p-da-------:------:allow 467> owner@:--------------:------:deny 468> owner@:-------A-W-Co-:------:allow 469> group@:--------------:------:deny 470> group@:--------------:------:allow 471> everyone@:-------A-W-Co-:------:deny 472> everyone@:-w-p--a-R-c--s:f-i---:allow 473> owner@:-wxp----------:------:deny 474> owner@:r------A-W-Co-:------:allow 475> group@:rw-p----------:------:deny 476> group@:--x-----------:------:allow 477> everyone@:r-x----A-W-Co-:------:deny 478> everyone@:-w-p--a-R-c--s:------:allow 479 480$ rmdir ddd 481$ mkdir ddd 482$ setfacl -a0 group:44:rwapd:allow ddd 483$ setfacl -a0 group:43:write_data/delete_child:d:deny,group@:ad:allow ddd 484$ setfacl -a0 user:42:rx:allow,user:42:rx:fi:allow,group:42:write_data/delete_child:d:allow ddd 485$ setfacl -m everyone@:-w-p--a-R-c--s:fi:allow ddd 486$ chown 42 ddd 487$ chmod 412 ddd 488$ getfacl -n ddd 489> # file: ddd 490> # owner: 42 491> # group: wheel 492> user:42:--x-----------:------:deny 493> user:42:r-x-----------:------:allow 494> user:42:r-x-----------:f-i---:allow 495> group:42:-w--D---------:-di---:allow 496> group:42:-w------------:------:deny 497> group:42:-w--D---------:------:allow 498> group:43:-w--D---------:-di---:deny 499> group:43:-w--D---------:------:deny 500> group@:-----da-------:------:allow 501> group:44:rw-p----------:------:deny 502> group:44:rw-p-da-------:------:allow 503> owner@:--------------:------:deny 504> owner@:-------A-W-Co-:------:allow 505> group@:--------------:------:deny 506> group@:--------------:------:allow 507> everyone@:-------A-W-Co-:------:deny 508> everyone@:-w-p--a-R-c--s:f-i---:allow 509> owner@:-wxp----------:------:deny 510> owner@:r------A-W-Co-:------:allow 511> group@:rw-p----------:------:deny 512> group@:--x-----------:------:allow 513> everyone@:r-x----A-W-Co-:------:deny 514> everyone@:-w-p--a-R-c--s:------:allow 515 516# Test applying ACL to mode. 517$ rmdir ddd 518$ mkdir ddd 519$ setfacl -a0 u:42:rwx:fi:allow ddd 520$ ls -ld ddd | cut -d' ' -f1 521> drwxr-xr-x+ 522 523$ rmdir ddd 524$ mkdir ddd 525$ chmod 0 ddd 526$ setfacl -a0 owner@:r:allow,group@:w:deny,group@:wx:allow ddd 527$ ls -ld ddd | cut -d' ' -f1 528> dr----x---+ 529 530# XXX: This one is fishy. Shouldn't it be "dr---wx---+"? 531$ rmdir ddd 532$ mkdir ddd 533$ chmod 0 ddd 534$ setfacl -a0 owner@:r:allow,group@:w:fi:deny,group@:wx:allow ddd 535$ ls -ld ddd | cut -d' ' -f1 536> dr---wx---+ 537 538$ rmdir ddd 539$ mkdir ddd 540$ chmod 0 ddd 541$ setfacl -a0 owner@:r:allow,group:43:w:deny,group:43:wx:allow ddd 542$ ls -ld ddd | cut -d' ' -f1 543> dr--------+ 544 545$ rmdir ddd 546$ mkdir ddd 547$ chmod 0 ddd 548$ setfacl -a0 owner@:r:allow,user:43:w:deny,user:43:wx:allow ddd 549$ ls -ld ddd | cut -d' ' -f1 550> dr--------+ 551 552# Test inheritance. 553$ rmdir ddd 554$ mkdir ddd 555$ setfacl -a0 group:43:write_data/write_acl:fin:deny,u:43:rwxp:allow ddd 556$ setfacl -a0 user:42:rx:fi:allow,group:42:write_data/delete_child:dn:deny ddd 557$ setfacl -a0 user:42:write_acl/write_owner:fi:allow ddd 558$ setfacl -a0 group:41:read_data/read_attributes:dni:allow ddd 559$ setfacl -a0 user:41:write_data/write_attributes:fn:allow ddd 560$ getfacl -qn ddd 561> user:41:-w-----A------:f--n--:allow 562> group:41:r-----a-------:-din--:allow 563> user:42:-----------Co-:f-i---:allow 564> user:42:r-x-----------:f-i---:allow 565> group:42:-w--D---------:-d-n--:deny 566> group:43:-w---------C--:f-in--:deny 567> user:43:rwxp----------:------:allow 568> owner@:--------------:------:deny 569> owner@:rwxp---A-W-Co-:------:allow 570> group@:-w-p----------:------:deny 571> group@:r-x-----------:------:allow 572> everyone@:-w-p---A-W-Co-:------:deny 573> everyone@:r-x---a-R-c--s:------:allow 574 575$ cd ddd 576$ touch xxx 577$ getfacl -qn xxx 578> user:41:-w------------:------:deny 579> user:41:-w-----A------:------:allow 580> user:42:--------------:------:deny 581> user:42:--------------:------:allow 582> user:42:--x-----------:------:deny 583> user:42:r-x-----------:------:allow 584> group:43:-w---------C--:------:deny 585> owner@:--x-----------:------:deny 586> owner@:rw-p---A-W-Co-:------:allow 587> group@:-wxp----------:------:deny 588> group@:r-------------:------:allow 589> everyone@:-wxp---A-W-Co-:------:deny 590> everyone@:r-----a-R-c--s:------:allow 591 592$ rm xxx 593$ umask 077 594$ touch xxx 595$ getfacl -qn xxx 596> user:41:-w------------:------:deny 597> user:41:-w-----A------:------:allow 598> user:42:--------------:------:deny 599> user:42:--------------:------:allow 600> user:42:r-x-----------:------:deny 601> user:42:r-x-----------:------:allow 602> group:43:-w---------C--:------:deny 603> owner@:--x-----------:------:deny 604> owner@:rw-p---A-W-Co-:------:allow 605> group@:rwxp----------:------:deny 606> group@:--------------:------:allow 607> everyone@:rwxp---A-W-Co-:------:deny 608> everyone@:------a-R-c--s:------:allow 609 610$ rm xxx 611$ umask 770 612$ touch xxx 613$ getfacl -qn xxx 614> user:41:-w------------:------:deny 615> user:41:-w-----A------:------:allow 616> user:42:--------------:------:deny 617> user:42:--------------:------:allow 618> user:42:r-x-----------:------:deny 619> user:42:r-x-----------:------:allow 620> group:43:-w---------C--:------:deny 621> owner@:rwxp----------:------:deny 622> owner@:-------A-W-Co-:------:allow 623> group@:rwxp----------:------:deny 624> group@:--------------:------:allow 625> everyone@:--x----A-W-Co-:------:deny 626> everyone@:rw-p--a-R-c--s:------:allow 627 628$ rm xxx 629$ umask 707 630$ touch xxx 631$ getfacl -qn xxx 632> user:41:--------------:------:deny 633> user:41:-w-----A------:------:allow 634> user:42:--------------:------:deny 635> user:42:--------------:------:allow 636> user:42:--x-----------:------:deny 637> user:42:r-x-----------:------:allow 638> group:43:-w---------C--:------:deny 639> owner@:rwxp----------:------:deny 640> owner@:-------A-W-Co-:------:allow 641> group@:--x-----------:------:deny 642> group@:rw-p----------:------:allow 643> everyone@:rwxp---A-W-Co-:------:deny 644> everyone@:------a-R-c--s:------:allow 645 646$ umask 077 647$ mkdir yyy 648$ getfacl -qn yyy 649> group:41:r-------------:------:deny 650> group:41:r-----a-------:------:allow 651> user:42:-----------Co-:f-i---:allow 652> user:42:r-x-----------:f-i---:allow 653> group:42:-w--D---------:------:deny 654> owner@:--------------:------:deny 655> owner@:rwxp---A-W-Co-:------:allow 656> group@:rwxp----------:------:deny 657> group@:--------------:------:allow 658> everyone@:rwxp---A-W-Co-:------:deny 659> everyone@:------a-R-c--s:------:allow 660 661$ rmdir yyy 662$ umask 770 663$ mkdir yyy 664$ getfacl -qn yyy 665> group:41:r-------------:------:deny 666> group:41:r-----a-------:------:allow 667> user:42:-----------Co-:f-i---:allow 668> user:42:r-x-----------:f-i---:allow 669> group:42:-w--D---------:------:deny 670> owner@:rwxp----------:------:deny 671> owner@:-------A-W-Co-:------:allow 672> group@:rwxp----------:------:deny 673> group@:--------------:------:allow 674> everyone@:-------A-W-Co-:------:deny 675> everyone@:rwxp--a-R-c--s:------:allow 676 677$ rmdir yyy 678$ umask 707 679$ mkdir yyy 680$ getfacl -qn yyy 681> group:41:--------------:------:deny 682> group:41:------a-------:------:allow 683> user:42:-----------Co-:f-i---:allow 684> user:42:r-x-----------:f-i---:allow 685> group:42:-w--D---------:------:deny 686> owner@:rwxp----------:------:deny 687> owner@:-------A-W-Co-:------:allow 688> group@:--------------:------:deny 689> group@:rwxp----------:------:allow 690> everyone@:rwxp---A-W-Co-:------:deny 691> everyone@:------a-R-c--s:------:allow 692 693# There is some complication regarding how write_acl and write_owner flags 694# get inherited. Make sure we got it right. 695$ setfacl -b . 696$ setfacl -a0 u:42:Co:f:allow . 697$ setfacl -a0 u:43:Co:d:allow . 698$ setfacl -a0 u:44:Co:fd:allow . 699$ setfacl -a0 u:45:Co:fi:allow . 700$ setfacl -a0 u:46:Co:di:allow . 701$ setfacl -a0 u:47:Co:fdi:allow . 702$ setfacl -a0 u:48:Co:fn:allow . 703$ setfacl -a0 u:49:Co:dn:allow . 704$ setfacl -a0 u:50:Co:fdn:allow . 705$ setfacl -a0 u:51:Co:fni:allow . 706$ setfacl -a0 u:52:Co:dni:allow . 707$ setfacl -a0 u:53:Co:fdni:allow . 708$ umask 022 709$ rm xxx 710$ touch xxx 711$ getfacl -nq xxx 712> user:53:--------------:------:deny 713> user:53:--------------:------:allow 714> user:51:--------------:------:deny 715> user:51:--------------:------:allow 716> user:50:--------------:------:deny 717> user:50:--------------:------:allow 718> user:48:--------------:------:deny 719> user:48:--------------:------:allow 720> user:47:--------------:------:deny 721> user:47:--------------:------:allow 722> user:45:--------------:------:deny 723> user:45:--------------:------:allow 724> user:44:--------------:------:deny 725> user:44:--------------:------:allow 726> user:42:--------------:------:deny 727> user:42:--------------:------:allow 728> owner@:--x-----------:------:deny 729> owner@:rw-p---A-W-Co-:------:allow 730> group@:-wxp----------:------:deny 731> group@:r-------------:------:allow 732> everyone@:-wxp---A-W-Co-:------:deny 733> everyone@:r-----a-R-c--s:------:allow 734 735$ rmdir yyy 736$ mkdir yyy 737$ getfacl -nq yyy 738> user:53:--------------:------:deny 739> user:53:--------------:------:allow 740> user:52:--------------:------:deny 741> user:52:--------------:------:allow 742> user:50:--------------:------:deny 743> user:50:--------------:------:allow 744> user:49:--------------:------:deny 745> user:49:--------------:------:allow 746> user:47:-----------Co-:fdi---:allow 747> user:47:--------------:------:deny 748> user:47:--------------:------:allow 749> user:46:-----------Co-:-di---:allow 750> user:46:--------------:------:deny 751> user:46:--------------:------:allow 752> user:45:-----------Co-:f-i---:allow 753> user:44:-----------Co-:fdi---:allow 754> user:44:--------------:------:deny 755> user:44:--------------:------:allow 756> user:43:-----------Co-:-di---:allow 757> user:43:--------------:------:deny 758> user:43:--------------:------:allow 759> user:42:-----------Co-:f-i---:allow 760> owner@:--------------:------:deny 761> owner@:rwxp---A-W-Co-:------:allow 762> group@:-w-p----------:------:deny 763> group@:r-x-----------:------:allow 764> everyone@:-w-p---A-W-Co-:------:deny 765> everyone@:r-x---a-R-c--s:------:allow 766 767$ setfacl -b . 768$ setfacl -a0 u:42:Co:f:deny . 769$ setfacl -a0 u:43:Co:d:deny . 770$ setfacl -a0 u:44:Co:fd:deny . 771$ setfacl -a0 u:45:Co:fi:deny . 772$ setfacl -a0 u:46:Co:di:deny . 773$ setfacl -a0 u:47:Co:fdi:deny . 774$ setfacl -a0 u:48:Co:fn:deny . 775$ setfacl -a0 u:49:Co:dn:deny . 776$ setfacl -a0 u:50:Co:fdn:deny . 777$ setfacl -a0 u:51:Co:fni:deny . 778$ setfacl -a0 u:52:Co:dni:deny . 779$ setfacl -a0 u:53:Co:fdni:deny . 780$ umask 022 781$ rm xxx 782$ touch xxx 783$ getfacl -nq xxx 784> user:53:-----------Co-:------:deny 785> user:51:-----------Co-:------:deny 786> user:50:-----------Co-:------:deny 787> user:48:-----------Co-:------:deny 788> user:47:-----------Co-:------:deny 789> user:45:-----------Co-:------:deny 790> user:44:-----------Co-:------:deny 791> user:42:-----------Co-:------:deny 792> owner@:--x-----------:------:deny 793> owner@:rw-p---A-W-Co-:------:allow 794> group@:-wxp----------:------:deny 795> group@:r-------------:------:allow 796> everyone@:-wxp---A-W-Co-:------:deny 797> everyone@:r-----a-R-c--s:------:allow 798 799$ rmdir yyy 800$ mkdir yyy 801$ getfacl -nq yyy 802> user:53:-----------Co-:------:deny 803> user:52:-----------Co-:------:deny 804> user:50:-----------Co-:------:deny 805> user:49:-----------Co-:------:deny 806> user:47:-----------Co-:fdi---:deny 807> user:47:-----------Co-:------:deny 808> user:46:-----------Co-:-di---:deny 809> user:46:-----------Co-:------:deny 810> user:45:-----------Co-:f-i---:deny 811> user:44:-----------Co-:fdi---:deny 812> user:44:-----------Co-:------:deny 813> user:43:-----------Co-:-di---:deny 814> user:43:-----------Co-:------:deny 815> user:42:-----------Co-:f-i---:deny 816> owner@:--------------:------:deny 817> owner@:rwxp---A-W-Co-:------:allow 818> group@:-w-p----------:------:deny 819> group@:r-x-----------:------:allow 820> everyone@:-w-p---A-W-Co-:------:deny 821> everyone@:r-x---a-R-c--s:------:allow 822 823$ rmdir yyy 824$ rm xxx 825$ cd .. 826$ rmdir ddd 827 828$ rm xxx 829 830