setting default directory ACLs using xargs

Karl Vogel vogelke+unix at pobox.com
Sat Feb 13 22:40:57 UTC 2010


>> On Fri, 12 Feb 2010 21:08:43 -0800, 
>> Doug Sampson <dougs at dawnsign.com> said:

D> This is what led me to the workaround of:
D>     $ getfacl /aclTest/ | setfacl -d -b -n -M - /aclTest/

D> which actually works for me.  I do dread the idea of having to manually
D> apply this to all existing directories in the /data filesystem.

   If all else fails, abuse nawk:

     #!/bin/sh
     cd /data
     find . -type d -print |
         nawk '{printf "getfacl %s | setfacl -d -b -n -M - %s\n",$1,$1}' |
         sh -x
     exit 0

   If you have spaces in your filenames, you'll either have to use perl or
   do something dopey like this:

     #!/bin/sh
     cd /data
     find . -type d -print | nawk -v sq=\' '{
         printf "getfacl %s%s%s | setfacl -d -b -n -M - %s%s%s\n",
         sq, $0, sq, sq, $0, sq}' | sh -x
     exit 0

-- 
Karl Vogel                      I don't speak for the USAF or my company

Yeah, yo mama dresses you funny and you need a mouse to delete files.
                                --Markus Stumpf <maex-qmail at Space.Net>


More information about the freebsd-questions mailing list