Usar a localização é o caminho "certo" e a única forma programática, embora haja variações:
find . -type f -exec chmod ug+rw {} + # "+" may not be on all systems
ou
find . -type f -print0 | xargs -r0 chmod ug+rw # similar to the -exec + functionality
ou o mais lento:
find . -type f -exec chmod ug+rw {} \; # in case xargs is not installed
Cada um deles seleciona um arquivo (não diretório, não symlink) e aplica o comando chmod
nele. Os dois primeiros reduzem o número de chamadas para chmod
, anexando o arquivo ao final de uma linha de comandos interna a cada vez até que um máximo seja atingido (geralmente 10), depois chama o comando e começa a reconstruir um novo comando. A última instrução gera um novo processo para cada arquivo, portanto, é menos eficiente.