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.