Eu estava fazendo uma alteração recursiva em massa de permissões de alguns arquivos que eu havia migrado para um sistema unix. Alterei-os para ug + rw, mas depois descobri que não podia atravessar subdiretórios. Eu olhei para a página de manual chmod
e não vi nenhuma explicação para excluir diretórios, então pesquisei um pouco e descobri que as pessoas costumavam find
alterar recursivamente as permissões nos diretórios para 'executar' para usuário e grupo. Eu fiz isso e depois pude olhar para eles.
Mas parecia-me que eu seria capaz de fazer essa descoberta chmod
- alterar recursivamente os arquivos para leitura / gravação, mas não tornar os diretórios intransferíveis. Eu fiz isso da maneira 'certa' ou existe uma maneira mais simples de fazer isso?
fonte
find
para definir todas as permissões de arquivo para 600 e todas as permissões de diretório para 700. (Cheguei aqui através dos meus googlings sobre o assunto.) Se isso puder ser feito com um únicochmod -R
comando, fique à vontade para me corrigir.chmod -R u=rwX,go= /path
faz quase o que você deseja: define todos os diretórios para 700 e todos os arquivos para 600 ou 700, dependendo se o bit de execução já está definido ou não, e acho que é a coisa certa a fazer .find
comando que você escreveu foi muito útil como modelo. :)O uso de find é o caminho 'certo' e o único caminho programático, embora haja variações:
ou
ou o mais lento:
Cada um deles seleciona um arquivo (não diretório, nem link simbólico) e aplica o
chmod
comando nele. Os dois primeiros reduzem o número de chamadaschmod
anexando o arquivo ao final de uma linha de comando interna a cada vez até que seja atingido o máximo (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.fonte