Recursive ACL script
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Recursive ACL script
You may use/adapt one of the following bash scripts to recursively add or remove ACL attributes using gpfs built-in commands
Courtesy of Gabriel Devenyi
#!/bin/bash # USAGE # - on one directory: ./set_acl.sh aclfile dir_name # - on more directories: ./set_acl.sh aclfile dir1_name dir2_name ... # # Based on a contributed script by Gabriel Devenyi. # set -euo pipefail aclfile="$1" shift for dir in "$@" do find "${dir}" -type d -exec mmputacl -i "${aclfile}" {} \; -exec mmputacl -d -i "${aclfile}" {} \; find "${dir}" -type f -exec mmputacl -i "${aclfile}" {} \; done
Courtesy of Agata Disks
(http://csngwinfo.in2p3.fr/mediawiki/index.php/GPFS_ACL)
This script is a bit more verbose and precise in its error messages
#!/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