This is something I knocked up a while ago just to keep an eye on a directory structure for permissions changes, excluding upload directories and other things:
#!/bin/bash ignore[0]="./public_html/blog/wp-content/uploads" ignore[1]="./bb-attachments" cd unset unsecure i i=0 while IFS= read -r -d $'\0' file; do unsecure[i++]="$file" # or however you want to process each file done < <(find . -perm /go+w -print0 2>/dev/null) for dodgy in ${unsecure[@]}; do guilty=1 for entry in ${ignore[@]}; do if [[ "$dodgy" =~ $entry ]]; then unset guilty fi done if [ $guilty ]; then echo "Unknown unsecure directory : $dodgy" fi done