Não há bala mágica aqui. As permissões carregam informações que nem sempre são redundantes.
Se você tivesse feito isso em um diretório de sistema, seu sistema estaria em um estado muito ruim, porque você precisaria se preocupar com bits setuid e setgid e com arquivos que não deveriam ser legíveis pelo mundo e com arquivos que deveriam ser graváveis em grupo ou mundo.
Em um diretório por usuário, você precisa se preocupar com arquivos que não devem ser legíveis pelo mundo. Ninguém pode ajudá-lo lá.
Quanto à executabilidade, uma boa regra geral seria fazer com que tudo que não parece ser executado possa ser executável. O kernel pode executar scripts cujos dois primeiros bytes são #!
, binários ELF cujos quatro primeiros bytes estão \x7fELF
onde \x7f
está o byte com o valor 12 e alguns tipos de arquivos mais raros (a.out, qualquer coisa registrada binfmt_misc
). Portanto, o comando a seguir deve restaurar suas permissões para um estado razoável (assume bash 4 ou zsh, caso contrário, use find
para percorrer a árvore de diretórios; aviso digitado diretamente no navegador):
for x in **/*; do
if ! [ -f "$x" ]; then continue; fi # skip all but regular files
case $(head -c 4 "$x") in
"#!"??) :;; # skip script
"\x7fELF") :;; # skip ELF executable
*) chmod a-x "$x";;
esac
done
Observe que existe uma maneira simples de fazer backup e restaurar permissões de uma árvore de diretórios, no Linux e possivelmente em outras unidades com suporte a ACL:
getfacl -R >saved-permissions
setfacl --restore=saved-permissions
/
ou em outro diretório?