Assim que você fizer isso:
PATH=$1
seu script não poderá mais localizar o programa find
. Não use $UPPER_CASE_VARS
Estou tentando escrever um script que aceita 3 argumentos como entrada.
path: onde os arquivos que queremos verificar a propriedade são encontrados.
propriedade esperada: a propriedade esperada dada como argumento 2
group: argumento 3
Haverá também um arquivo whitelist, que terá alguns dos nomes dos arquivos. Se qualquer um dos nomes de arquivo da lista de permissões for encontrado, eles deverão ser ignorados.
O script precisa imprimir uma mensagem se qualquer propriedade do arquivo não corresponder de outra forma, deve imprimir "todos os arquivos têm a propriedade esperada".
Eu cansei do script, mas não está funcionando. Não sei como trabalhar com a lógica de arquivos da lista de permissões.
Alguém por favor pode me ajudar?
#!/usr/bin/env bash
PATH=$1
Owner=$2
Group=$3
WHITELIST="(/tmp/file_whitelist.txt)"
listcount=0
whitelist_matches=0
while IFS="" read -r matchedentry; do
if [[ "$matchedentry" =~ $WHITELIST ]]; then
((whitelist_matches++))
else
echo -e "$matchedentry\r"
((listcount++))
fi
done < <(find "$PATH" -perm /u+w -user $Owner -o -perm /g+w -group $GROUP)
if (( $listcount > 0 )); then
echo "$listcount items are having by '$Owner' ($whitelist_matches whitelisted)."
else
echo "Files which are Not having correct ownership found ($whitelist_matches whitelisted)."
fi
Assim que você fizer isso:
PATH=$1
seu script não poderá mais localizar o programa find
. Não use $UPPER_CASE_VARS
Tags bash