Como eu alteraria todos os arquivos para 644 e todas as pastas para 755 usando chmod
no linux
prompt de comando? (Terminal)
http://superuser.com
:: P, mas esta pergunta me ajudou aqui, obrigado.
chmod -R u+rwX,go+rX,go-w /foo
Como eu alteraria todos os arquivos para 644 e todas as pastas para 755 usando chmod
no linux
prompt de comando? (Terminal)
http://superuser.com
:: P, mas esta pergunta me ajudou aqui, obrigado.
chmod -R u+rwX,go+rX,go-w /foo
Respostas:
Uma abordagem poderia estar usando find:
find /desired_location -type d -print0 | xargs -0 chmod 0755
find /desired_location -type f -print0 | xargs -0 chmod 0644
sudo find /your/location -type f -exec chmod 644 {} \;
por arquivos e sudo find /your/location -type d -exec chmod 755 {} \;
de diretórios
chmod -R a=r,u+w,a+X /foo
?
unable to execute /bin/chmod: Argument list too long
A maneira mais fácil é fazer:
chmod -R u+rwX,go+rX,go-w /path/to/dir
o que basicamente significa:
para ch
ange arquivo mod
es -R
ecursively dando:
u
ser: r
ler, ritar w
e X
executar permissões,g
roup e outros o
usuários: r
leram e X
executam permissões, mas não -w
rituais.Observe que X
tornará um diretório executável, mas não um arquivo, a menos que já esteja pesquisável / executável.
+X
- tornar um diretório ou arquivo pesquisável / executável por todos, se já estiver pesquisável / executável por qualquer pessoa.
Por favor, verifique man chmod
para mais detalhes.
Veja também: Como chmod todos os diretórios, exceto os arquivos (recursivamente)? na SU
O mais curto que eu pude pensar é:
chmod -R a=r,u+w,a+X /foo
que funciona no GNU / Linux e acredito no Posix em geral (da minha leitura de: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html ).
O que isso faz é:
É importante ressaltar que a permissão da etapa 1 limpa todos os bits de execução; portanto, a etapa 3 apenas adiciona novamente os bits de execução para diretórios (nunca arquivos). Além disso, todas as três etapas acontecem antes da recursão de um diretório (portanto, isso não é equivalente a, por exemplo,
chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo
como o a = r remove x dos diretórios, então o chmod não pode recursá-los.)
Mais fácil para mim lembrar é duas operações:
chmod -R 644 dirName
chmod -R +X dirName
O + X afeta apenas diretórios.
Em https://help.directadmin.com/item.php?id=589, eles escrevem:
Se você precisar de uma maneira rápida de redefinir seus dados public_html para 755 para diretórios e 644 para arquivos, poderá usar algo como isto:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
Eu testei e ... funciona!
Isso funcionou para mim:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
find /A -type X -exec chmod Y '{}' \;
Faça as duas coisas de uma só vez com:
find -type f ... -o -type d ...
Como em, encontre o tipo f OU o tipo d e faça o primeiro ... para arquivos e o segundo ... para dirs. Especificamente:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
Deixe de fora --changes
se deseja que ele funcione silenciosamente.
Se você precisar de uma maneira rápida de redefinir seus dados public_html para 755 para diretórios e 644 para arquivos, poderá usar algo como isto:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
Além disso, se você sabe que o PHP é executado como usuário e não como "apache", é possível definir os arquivos PHP como 600, para um nível extra de segurança, por exemplo:
find . -type f -name '*.php' -exec chmod 600 {} \;
Você pode encontrar esse recurso aqui: https://help.directadmin.com/item.php?id=589
Isso também pode funcionar:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.