dotfiles/script/attrnorm
2025-01-24 10:01:12 +01:00

42 lines
1.3 KiB
Bash
Executable file

#! /bin/bash
## file: app/appointment-messenger/node_modules/lodash/fp/pullAllBy.js
#USER jessica rw-
#GROUP jessica rw-
#other r--
FILE_REGEX="^#[[:space:]]+file:[[:space:]]+(.*)$"
PERMS_REGEX="USER[[:space:]]+([[:alnum:]]+)[[:space:]]+(([r\-])([w\-])([x\-]))([[:space:]]+(([r\-])([w\-])([x\-])))?"
FILE_UNUSED=0
getfacl -p -R -t "$1" | while read LINE ; do
if [[ "$LINE" =~ $FILE_REGEX ]] ; then
FILENAME="${BASH_REMATCH[1]}"
FILE_UNUSED=1
fi
if [[ "$LINE" =~ $PERMS_REGEX ]] ; then
PERMS="$LINE"
PERMS_READ="${BASH_REMATCH[3]}"
PERMS_WRITE="${BASH_REMATCH[4]}"
PERMS_EXEC="${BASH_REMATCH[5]}"
ACTUAL="${BASH_REMATCH[2]}"
DEFAULTS="${BASH_REMATCH[7]}"
ACTUAL_OTHER="${ACTUAL//[w]/-}"
if ((FILE_UNUSED)) ; then
setfacl -m "group::$ACTUAL" "$FILENAME"
setfacl -m "other::$ACTUAL_OTHER" "$FILENAME"
if [[ ! -z "$DEFAULTS" ]] ; then
DEFAULTS_OTHER="${DEFAULTS//[w]/-}"
setfacl -d -m "group::$DEFAULTS" "$FILENAME"
setfacl -d -m "other::$DEFAULTS_OTHER" "$FILENAME"
fi
fi
fi
done