Alterar permissões de forma recursiva

 linux

As permissões padrões para arquivos e pastas são respectivamente 755 e 644.

Nota: arquivos do sistema podem ter permissões diferentes

A situação, você seleciona um arquivo e faz backup no HD externo ou transfere para outra pessoa usando um pen drive. Quando o arquivo é tranferido para um hd externo ou pen drive a permissão é alterada para 777, quando o arquivo é transferido para o computador de destino, você pode alterar as permissões para os padrões de arquivo/pasta e este post é para voltar a essa permissão, mais utilizada em sistemas Linux, para isso utilizaremos os comandos:

  • find
  • chmod

Nota: os comandos são recursivos.

Para arquivos:

$ find <pasta-dos-arquivos> -type d -exec chmod 755 {} \;

Para pastas:

$ find <pasta-com-as-pastas> -type f -exec chmod 644 {} \;

Agora, a explicação do comando find:

  • -typed e f indicam respetivamente o tipo do que se quer procurar directory e file. Oustras opções são b, c, p, s e D
  • -exec indica um comando a ser executado

Explicando o -exec:

  • chmod 644 comando a ser executado.
  • {} indica o input, o find faz um loop onde cada resultado gera um input e esse input é passado como argumento para o comando, neste caso chmod 644 atráves do {}.
  • ** como o {} indica os argumentos, o \ indica que acabaram os argumentos.
  • ; indica o fim do comando que é executado pelo -exec, utilizado como delimitador.

Mas e o chmod? Altera permissões de pasta e de arquivos, 755 e 644 são números octais que representam as letras da primeira coluna, da saída do comando:

$ ls -lh
-rw-rw-r-- 1 flaverton flaverton   13 Mai 30 16:15 teste2.py
-rw-rw-r-- 1 flaverton flaverton   46 Mai 30 16:33 teste.py
-rw-rw-r-- 1 flaverton flaverton  148 Mai 30 16:33 teste.pyc

Nota: sim, estes arquivos, são os utilizados no post de ontem Python com main.

  • - alguns tipos especiais de arquivo, como sockets e links utilizam essa coluna.
  • rw- usuário dono do arquivo/pasta.
  • rw- grupo que tem permissões no arquivo/pasta.
  • r— outros que podem mexer no arquivo/pasta.

As permissões podem ser expressas em rwx (letras) ou 755 (números, formato octal).

A sintaxe do chmod é:

$ chmod <flags> <permissão> <arquivo-ou-pasta>

Existem algumas “dicas” interessantes, para executar (bem utilizado com arquivos .sh):

$ chmod +x arquivo.sh

Torna o arquivo executável para o usuário, r para read (leitura) e w para write (escrita). Se o + adiciona, o - retira.

Para maiores informações, consulte as referências.

Referências


comments powered by Disqus