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: releng/10.2/tools/regression/acltools/tools-nfs4.test 214923 2010-11-07 17:33:04Z 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$ rmdir ddd 531$ mkdir ddd 532$ chmod 0 ddd 533$ setfacl -a0 owner@:r:allow,group@:w:fi:deny,group@:wx:allow ddd 534$ ls -ld ddd | cut -d' ' -f1 535> dr---wx---+ 536 537$ rmdir ddd 538$ mkdir ddd 539$ chmod 0 ddd 540$ setfacl -a0 owner@:r:allow,group:43:w:deny,group:43:wx:allow ddd 541$ ls -ld ddd | cut -d' ' -f1 542> dr--------+ 543 544$ rmdir ddd 545$ mkdir ddd 546$ chmod 0 ddd 547$ setfacl -a0 owner@:r:allow,user:43:w:deny,user:43:wx:allow ddd 548$ ls -ld ddd | cut -d' ' -f1 549> dr--------+ 550 551# Test inheritance. 552$ rmdir ddd 553$ mkdir ddd 554$ setfacl -a0 group:43:write_data/write_acl:fin:deny,u:43:rwxp:allow ddd 555$ setfacl -a0 user:42:rx:fi:allow,group:42:write_data/delete_child:dn:deny ddd 556$ setfacl -a0 user:42:write_acl/write_owner:fi:allow ddd 557$ setfacl -a0 group:41:read_data/read_attributes:dni:allow ddd 558$ setfacl -a0 user:41:write_data/write_attributes:fn:allow ddd 559$ getfacl -qn ddd 560> user:41:-w-----A------:f--n--:allow 561> group:41:r-----a-------:-din--:allow 562> user:42:-----------Co-:f-i---:allow 563> user:42:r-x-----------:f-i---:allow 564> group:42:-w--D---------:-d-n--:deny 565> group:43:-w---------C--:f-in--:deny 566> user:43:rwxp----------:------:allow 567> owner@:--------------:------:deny 568> owner@:rwxp---A-W-Co-:------:allow 569> group@:-w-p----------:------:deny 570> group@:r-x-----------:------:allow 571> everyone@:-w-p---A-W-Co-:------:deny 572> everyone@:r-x---a-R-c--s:------:allow 573 574$ cd ddd 575$ touch xxx 576$ getfacl -qn xxx 577> user:41:-w------------:------:deny 578> user:41:-w-----A------:------:allow 579> user:42:--------------:------:deny 580> user:42:--------------:------:allow 581> user:42:--x-----------:------:deny 582> user:42:r-x-----------:------:allow 583> group:43:-w---------C--:------:deny 584> owner@:--x-----------:------:deny 585> owner@:rw-p---A-W-Co-:------:allow 586> group@:-wxp----------:------:deny 587> group@:r-------------:------:allow 588> everyone@:-wxp---A-W-Co-:------:deny 589> everyone@:r-----a-R-c--s:------:allow 590 591$ rm xxx 592$ umask 077 593$ touch xxx 594$ getfacl -qn xxx 595> user:41:-w------------:------:deny 596> user:41:-w-----A------:------:allow 597> user:42:--------------:------:deny 598> user:42:--------------:------:allow 599> user:42:r-x-----------:------:deny 600> user:42:r-x-----------:------:allow 601> group:43:-w---------C--:------:deny 602> owner@:--x-----------:------:deny 603> owner@:rw-p---A-W-Co-:------:allow 604> group@:rwxp----------:------:deny 605> group@:--------------:------:allow 606> everyone@:rwxp---A-W-Co-:------:deny 607> everyone@:------a-R-c--s:------:allow 608 609$ rm xxx 610$ umask 770 611$ touch xxx 612$ getfacl -qn xxx 613> user:41:-w------------:------:deny 614> user:41:-w-----A------:------:allow 615> user:42:--------------:------:deny 616> user:42:--------------:------:allow 617> user:42:r-x-----------:------:deny 618> user:42:r-x-----------:------:allow 619> group:43:-w---------C--:------:deny 620> owner@:rwxp----------:------:deny 621> owner@:-------A-W-Co-:------:allow 622> group@:rwxp----------:------:deny 623> group@:--------------:------:allow 624> everyone@:--x----A-W-Co-:------:deny 625> everyone@:rw-p--a-R-c--s:------:allow 626 627$ rm xxx 628$ umask 707 629$ touch xxx 630$ getfacl -qn xxx 631> user:41:--------------:------:deny 632> user:41:-w-----A------:------:allow 633> user:42:--------------:------:deny 634> user:42:--------------:------:allow 635> user:42:--x-----------:------:deny 636> user:42:r-x-----------:------:allow 637> group:43:-w---------C--:------:deny 638> owner@:rwxp----------:------:deny 639> owner@:-------A-W-Co-:------:allow 640> group@:--x-----------:------:deny 641> group@:rw-p----------:------:allow 642> everyone@:rwxp---A-W-Co-:------:deny 643> everyone@:------a-R-c--s:------:allow 644 645$ umask 077 646$ mkdir yyy 647$ getfacl -qn yyy 648> group:41:r-------------:------:deny 649> group:41:r-----a-------:------:allow 650> user:42:-----------Co-:f-i---:allow 651> user:42:r-x-----------:f-i---:allow 652> group:42:-w--D---------:------:deny 653> owner@:--------------:------:deny 654> owner@:rwxp---A-W-Co-:------:allow 655> group@:rwxp----------:------:deny 656> group@:--------------:------:allow 657> everyone@:rwxp---A-W-Co-:------:deny 658> everyone@:------a-R-c--s:------:allow 659 660$ rmdir yyy 661$ umask 770 662$ mkdir yyy 663$ getfacl -qn yyy 664> group:41:r-------------:------:deny 665> group:41:r-----a-------:------:allow 666> user:42:-----------Co-:f-i---:allow 667> user:42:r-x-----------:f-i---:allow 668> group:42:-w--D---------:------:deny 669> owner@:rwxp----------:------:deny 670> owner@:-------A-W-Co-:------:allow 671> group@:rwxp----------:------:deny 672> group@:--------------:------:allow 673> everyone@:-------A-W-Co-:------:deny 674> everyone@:rwxp--a-R-c--s:------:allow 675 676$ rmdir yyy 677$ umask 707 678$ mkdir yyy 679$ getfacl -qn yyy 680> group:41:--------------:------:deny 681> group:41:------a-------:------:allow 682> user:42:-----------Co-:f-i---:allow 683> user:42:r-x-----------:f-i---:allow 684> group:42:-w--D---------:------:deny 685> owner@:rwxp----------:------:deny 686> owner@:-------A-W-Co-:------:allow 687> group@:--------------:------:deny 688> group@:rwxp----------:------:allow 689> everyone@:rwxp---A-W-Co-:------:deny 690> everyone@:------a-R-c--s:------:allow 691 692# There is some complication regarding how write_acl and write_owner flags 693# get inherited. Make sure we got it right. 694$ setfacl -b . 695$ setfacl -a0 u:42:Co:f:allow . 696$ setfacl -a0 u:43:Co:d:allow . 697$ setfacl -a0 u:44:Co:fd:allow . 698$ setfacl -a0 u:45:Co:fi:allow . 699$ setfacl -a0 u:46:Co:di:allow . 700$ setfacl -a0 u:47:Co:fdi:allow . 701$ setfacl -a0 u:48:Co:fn:allow . 702$ setfacl -a0 u:49:Co:dn:allow . 703$ setfacl -a0 u:50:Co:fdn:allow . 704$ setfacl -a0 u:51:Co:fni:allow . 705$ setfacl -a0 u:52:Co:dni:allow . 706$ setfacl -a0 u:53:Co:fdni:allow . 707$ umask 022 708$ rm xxx 709$ touch xxx 710$ getfacl -nq xxx 711> user:53:--------------:------:deny 712> user:53:--------------:------:allow 713> user:51:--------------:------:deny 714> user:51:--------------:------:allow 715> user:50:--------------:------:deny 716> user:50:--------------:------:allow 717> user:48:--------------:------:deny 718> user:48:--------------:------:allow 719> user:47:--------------:------:deny 720> user:47:--------------:------:allow 721> user:45:--------------:------:deny 722> user:45:--------------:------:allow 723> user:44:--------------:------:deny 724> user:44:--------------:------:allow 725> user:42:--------------:------:deny 726> user:42:--------------:------:allow 727> owner@:--x-----------:------:deny 728> owner@:rw-p---A-W-Co-:------:allow 729> group@:-wxp----------:------:deny 730> group@:r-------------:------:allow 731> everyone@:-wxp---A-W-Co-:------:deny 732> everyone@:r-----a-R-c--s:------:allow 733 734$ rmdir yyy 735$ mkdir yyy 736$ getfacl -nq yyy 737> user:53:--------------:------:deny 738> user:53:--------------:------:allow 739> user:52:--------------:------:deny 740> user:52:--------------:------:allow 741> user:50:--------------:------:deny 742> user:50:--------------:------:allow 743> user:49:--------------:------:deny 744> user:49:--------------:------:allow 745> user:47:-----------Co-:fdi---:allow 746> user:47:--------------:------:deny 747> user:47:--------------:------:allow 748> user:46:-----------Co-:-di---:allow 749> user:46:--------------:------:deny 750> user:46:--------------:------:allow 751> user:45:-----------Co-:f-i---:allow 752> user:44:-----------Co-:fdi---:allow 753> user:44:--------------:------:deny 754> user:44:--------------:------:allow 755> user:43:-----------Co-:-di---:allow 756> user:43:--------------:------:deny 757> user:43:--------------:------:allow 758> user:42:-----------Co-:f-i---:allow 759> owner@:--------------:------:deny 760> owner@:rwxp---A-W-Co-:------:allow 761> group@:-w-p----------:------:deny 762> group@:r-x-----------:------:allow 763> everyone@:-w-p---A-W-Co-:------:deny 764> everyone@:r-x---a-R-c--s:------:allow 765 766$ setfacl -b . 767$ setfacl -a0 u:42:Co:f:deny . 768$ setfacl -a0 u:43:Co:d:deny . 769$ setfacl -a0 u:44:Co:fd:deny . 770$ setfacl -a0 u:45:Co:fi:deny . 771$ setfacl -a0 u:46:Co:di:deny . 772$ setfacl -a0 u:47:Co:fdi:deny . 773$ setfacl -a0 u:48:Co:fn:deny . 774$ setfacl -a0 u:49:Co:dn:deny . 775$ setfacl -a0 u:50:Co:fdn:deny . 776$ setfacl -a0 u:51:Co:fni:deny . 777$ setfacl -a0 u:52:Co:dni:deny . 778$ setfacl -a0 u:53:Co:fdni:deny . 779$ umask 022 780$ rm xxx 781$ touch xxx 782$ getfacl -nq xxx 783> user:53:-----------Co-:------:deny 784> user:51:-----------Co-:------:deny 785> user:50:-----------Co-:------:deny 786> user:48:-----------Co-:------:deny 787> user:47:-----------Co-:------:deny 788> user:45:-----------Co-:------:deny 789> user:44:-----------Co-:------:deny 790> user:42:-----------Co-:------:deny 791> owner@:--x-----------:------:deny 792> owner@:rw-p---A-W-Co-:------:allow 793> group@:-wxp----------:------:deny 794> group@:r-------------:------:allow 795> everyone@:-wxp---A-W-Co-:------:deny 796> everyone@:r-----a-R-c--s:------:allow 797 798$ rmdir yyy 799$ mkdir yyy 800$ getfacl -nq yyy 801> user:53:-----------Co-:------:deny 802> user:52:-----------Co-:------:deny 803> user:50:-----------Co-:------:deny 804> user:49:-----------Co-:------:deny 805> user:47:-----------Co-:fdi---:deny 806> user:47:-----------Co-:------:deny 807> user:46:-----------Co-:-di---:deny 808> user:46:-----------Co-:------:deny 809> user:45:-----------Co-:f-i---:deny 810> user:44:-----------Co-:fdi---:deny 811> user:44:-----------Co-:------:deny 812> user:43:-----------Co-:-di---:deny 813> user:43:-----------Co-:------:deny 814> user:42:-----------Co-:f-i---:deny 815> owner@:--------------:------:deny 816> owner@:rwxp---A-W-Co-:------:allow 817> group@:-w-p----------:------:deny 818> group@:r-x-----------:------:allow 819> everyone@:-w-p---A-W-Co-:------:deny 820> everyone@:r-x---a-R-c--s:------:allow 821 822$ rmdir yyy 823$ rm xxx 824$ cd .. 825$ rmdir ddd 826 827$ rm xxx 828 829