Tanto chown como chmod oferecem uma opção -R que torna a recursiva. Estes dois comandos fazem quase tudo o que você quer e são bastante rápidos:
chmod -R u=rwX,go=rX *
chown -R nobody:nogroup *
O modo u=rwX define o modo de usuário para ler e gravar e, com a condição de que o arquivo / diretório já tenha permissão de execução para alguém, eXecute. Assim, isso mantém a permissão de execução nos diretórios, mas não promove outros arquivos a serem executados, a menos que já tenham esse atributo. go=rX concede permissão de leitura em grupo e outra e, na mesma condição, permissão de execução.
O comando chown -R nobody:nogroup * mudará o proprietário para nobody e group para nogroup para todos os arquivos recursivamente.
Esses comandos funcionam em arquivos ocultos em todos os diretórios recorridos. O glob * não seleciona os arquivos ocultos no diretório atual. Isso pode ser solucionado (1) especificando-os explicitamente ou (2) definindo a opção dotglob do bash: shopt -s dotglob .
Remover permissão de execução
Se você tiver arquivos normais que precisam ter sua permissão de execução removida, aqui está um aumento de velocidade para isso:
find -type f -executable -exec chmod a-x {} +
Como o acima termina com + em vez de \; , o find colocará tantos nomes de arquivo na linha de comando chmod quanto possível. Isso reduz bastante o número de vezes que um processo precisa ser criado para executar chmod .
Além disso, a opção -executable reduz o número de nomes de arquivos processados estritamente para aqueles que precisam da permissão de execução removida.