3 minutos
Alterar permissões de forma recursiva
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 pastas:
$ find <pasta-dos-arquivos> -type d -exec chmod 755 {} \;
Para arquivos:
$ find <pasta-com-as-pastas> -type f -exec chmod 644 {} \;
Agora, a explicação do comando find
:
- -type
d
ef
indicam resdpetivamente o tipo do que se quer procurar directory e file. Oustras opções sãob
,c
,p
,s
eD
- -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 casochmod 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.