sudo chown -R www:www ./
e, se você não quiser o diretório de propriedade de www, basta alterá-lo novamente.
Howdy ... Eu estou olhando para chmod 777 um monte de arquivos. Alternativamente, uma vez que é mais seguro, eu também poderia me contentar com um chown www: www desses arquivos para torná-los acessíveis pela web.
Agora, como eu tenho mais de 400.000 arquivos, sudo chmod -R 777 ./*
e sudo chown -R www:www ./*
não funcionaram, retornando apenas com "Arg list too long"
Alguns googling apareceram find
e xargs
, mas isso não funcionou para o meu conjunto de arquivos, já que alguns dos arquivos tinham sublinhados no nome. Eu não tenho certeza porque isso iria quebrar o script, mas aconteceu. O comando:
find ./ -name "*" | xargs chmod 777
Veja um snippet anônimo da árvore de diretórios:
files
\- 28934723
\- file1.xml
\- file2.txt
\- 34905834
\- file1.xml
\- file2.txt
\- 21398230
\- file1.xml
\- file2.txt
Tanto quanto eu posso dizer de man find
, ele deve recorrer a subdiretórios automaticamente, mas não tenho certeza. Quando eu executei o comando acima, alguns dos arquivos foram alterados, mas a maioria dos diretórios permaneceu o mesmo (mesmas permissões).
Agradecemos antecipadamente por qualquer ajuda que vocês possam oferecer:)
Não consigo ver por que a seguinte linha de comando não funcionou:
find . -print0 |xargs -0 chmod 777
Ou mais simples, chmod 777 -R .
Se você puder ajudar, tente limitar as permissões. Se você está tentando dar acesso total a www e você está em um sistema de redhat com acl disponível (pode ser necessário remontar), tente:
setfacl -R -m user:www:rwx the_parent_directory
e setfacl -d -R -m user:www:rwx the_parent_directory
e repita com o usuário substituído por grupo se necessário.
Se a sua lista de argumentos for muito longa e você não puder usar o diretório completo, isso funcionará (mas será mais lento):
find . -type d -exec setfacl -d -R -m user:www:rwx '{}'; setfacl -R -m user:www:rwx '{}' \;
Se houver arquivos lá também não cobertos por diretórios, você precisará executá-los novamente para aqueles (tenho certeza que alguém irá me informar sobre um switch para setfacl para fazer apenas o diretório principal):find . -type f -exec setfacl -m user:www:rwx '{}' \;
Você pode usar o mesmo método para fazer o 777 também (similar aos xargs mas eu prefiro assim, parece mais limpo:
find . -exec chmod 777 '{}' \;
como para os sublinhados, não deveria ser um problema (é possível que eles estivessem sendo interpretado pelo pipe ou algo assim), mas se forem:
find . -name \*_\* -exec chmod 777 '{}' \;