xargs + chmod - arquivo ou diretório não encontrado

1

Estou tentando alterar de forma recursiva a permissão de todos os arquivos e diretórios do meu projeto.

Eu encontrei um postar no fórum do magento dizendo que eu posso usar estes comandos:

find ./ -type f | xargs chmod 644
find ./ -type d | xargs chmod 755
chmod -Rf 777 var
chmod -Rf 777 media

Funcionou por find ./ -type d | xargs chmod 755 .

O comando find ./ -type f retornou muitos arquivos, mas eu recebo chmod: access to 'fileXY.html' not possible: file or directory not found em todos os arquivos, se eu executar find ./ -type f | xargs chmod 644 .

Como posso resolver isso?

PS: Eu sei que ele recomendou usar a permissão 777 para minha pasta var e media, o que é um risco de segurança, mas o que mais deveríamos usar?

    
por Black 01.06.2018 / 14:32

2 respostas

4

Suponho que você esteja encontrando arquivos cujos nomes contenham caracteres que fazem com que xargs os divida, por exemplo. espaço em branco. Para resolver isso, supondo que você esteja usando uma versão de find e xargs que suporta as opções apropriadas (que são originadas nas variantes GNU e não são especificadas por POSIX), você deve usar os seguintes comandos: / p>

find . -type f -print0 | xargs -0 chmod 644
find . -type d -print0 | xargs -0 chmod 755

ou melhor ainda,

chmod -R a-x,a=rX,u+w .

que tem as vantagens de ser mais curto, usando apenas um processo, e sendo suportado por POSIX chmod (veja esta resposta para detalhes).

Sua pergunta sobre media e var é bastante ampla. Se você tiver interesse em respostas específicas, sugiro que você faça uma pergunta à parte com mais informações sobre o uso que você faz dos diretórios.

    
por 01.06.2018 / 14:35
2

Que tal:

find ./ -type d -exec chmod 755 {} +

esta é a solução portátil canônica que lida até mesmo com novas linhas em nomes de arquivos.

    
por 01.06.2018 / 15:26