Idioma
Categoria
Pesquisar

Alterar permissões somente de diretórios ou arquivos recursivamente

Comandos úteis no terminal do linux para corrigir as permissões em grandes estruturas de arquivos e diretórios

Alterar permissões somente de diretórios ou arquivos recursivamente
Em Terminal Por Rudi Drusian Lange
Publicado em
Última atualização

Antes de começar

Tenha certeza que saiba o que esta fazendo, a alteração de permissões principalmente de forma recursiva pode trazer sérios problemas tornando arquivos, programas e pastas inacessíveis. Desfazer as alterações pode ser muito trabalhoso, cada estrutura possui particularidades em suas permissões.

Alterando para tudo

Usando o parâmetro -R do comando chmod é possível aplicar a mesma permissão recursivamente para todos os arquivos e pastas.

$ Shell

chmod -R 755 /caminho/para/dir/base

Para arquivos ou diretórios separadamente, veja adiante.

Diretórios

Para alterar a permissão de todos os subdiretórios recursivamente a partir de um diretório base:

$ Shell

# Permissão 755 (drwxr-xr-x)
find /caminho/para/diretório/base -type d -exec chmod 755 {} +

# Outra forma
chmod 755 $(find /caminho/para/diretório/base -type d)

# Para diretórios com muitos arquivos
find /caminho/para/diretório/base -type d -print0 | xargs -0 chmod 755

# Usa o diretório atual como base
find . -type d -exec chmod 755 {} +

Foram utilizadas as permissões 755 (drwxr-xr-x) que é mais comum para diretórios e é opção padrão na criação de nova pastas.

O ponto (.) representa o diretório atual e pode ser usado no lugar do caminho para o diretório base em qualquer um dos comandos acima.

Arquivos

Para alterar a permissão de todos os arquivos no diretório base definido no comando e em seus subdiretórios recursivamente:

$ Shell

# Permissão 644 (-rw-r--r--)
find /caminho/para/diretório/base -type f -exec chmod 644 {} +

# Outra forma 
chmod 644 $(find /caminho/para/diretório/base -type f)

# Para diretórios com muitos arquivos 
find /caminho/para/diretório/base -type f -print0 | xargs -0 chmod 644

# Usa o diretório atual como base
find . -type f -exec chmod 644 {} + 

Foram usadas as permissões 644 (-rw-r--r--) que é o padrão utilizado na criação de arquivos no formato texto. Usar esta permissão em um script irá remover sua permissão de execução o que o fará perder suas funcionalidades.

Referencias