Estou tentando escrever um script que recupere as permissões de um grupo de arquivos e diretórios. Em seguida, verifique cada permissão para ver se estão definidas corretamente.
Se as permissões não estiverem configuradas corretamente, eu gostaria que ele ecoasse quais permissões de diretório ou grupo de arquivos estavam incorretamente configuradas.
Até agora, o que tenho é que usei 'find' para encontrar recursivamente todos os arquivos e diretórios dentro de um determinado diretório e, em seguida, execute stat para retornar as permissões atuais. Da lista de permissões retornada, uso uma declaração if-then para verificar se algum arquivo ou diretório tem permissões diferentes do esperado. Isso é realizado pelo operador! = E usando a correspondência de padrões. Portanto, todos os arquivos devem ter permissões definidas para 444 e diretórios para 555 e, se não retornar, as permissões estão erradas.
for site in $(echo /var/www/*)
do
permcheckfile=$(find $site -type f -exec stat -c '%a' '{}' +)
permcheckdir=$(find $site -type d -exec stat -c '%a' '{}' +)
if [[ $permcheckfile != *444 ]]
then
echo "$site file permissions are wrong"
else
echo "$site file permissions are correct"
fi
if [[ $permcheckdir != *555 ]]
then
echo "$site directory permissions are wrong"
else
echo "$site directory permissions are correct"
fi
done
O problema encontrado com o script acima é, por vezes, que ele retornará falsos positivos e não tenho idéia do motivo.
Alguém tem uma ideia de onde estou indo errado? Existe uma maneira melhor de realizar o que estou tentando alcançar? Qualquer ajuda ou sugestão seria muito apreciada. Obrigado pelo seu tempo e ajuda