Recursive ACL script
Recursive ACL script
You may use/adapt this bash script to recursively add or remove ACL attributes using gpfs built-in commands
Courtesy of Agata Disks (http://csngwinfo.in2p3.fr/mediawiki/index.php/GPFS_ACL)
#!/bin/bash # USAGE # - on one directory: ./set_acl.sh dir_name # - on more directories: ./set_acl.sh 'dir_nam*' # # Path of the file that contains the ACL ACL_FILE_PATH=/agatadisks/data/acl_file.acl # Directories onto the ACLs have to be set dirs=$1 # Recursive function that sets ACL to files and directories set_acl () { curr_dir=$1 for args in $curr_dir/* do if [ -f $args ]; then echo "ACL set on file $args" mmputacl -i $ACL_FILE_PATH $args if [ $? -ne 0 ]; then echo "ERROR: ACL not set on $args" exit -1 fi fi if [ -d $args ]; then # Set Default ACL in directory mmputacl -i $ACL_FILE_PATH $args -d if [ $? -ne 0 ]; then echo "ERROR: Default ACL not set on $args" exit -1 fi echo "Default ACL set on directory $args" # Set ACL in directory mmputacl -i $ACL_FILE_PATH $args if [ $? -ne 0 ]; then echo "ERROR: ACL not set on $args" exit -1 fi echo "ACL set on directory $args" set_acl $args fi done } for dir in $dirs do if [ ! -d $dir ]; then echo "ERROR: $dir is not a directory" exit -1 fi set_acl $dir done exit 0