Você está usando -664
, basta usar 664
. E nunca use sudo
quando você não precisar. Se esse é o seu arquivo, você não precisa de sudo
:
chmod 644 my_file
Quando você executa chmod
com um -
antes do modo, você o remove. Veja man chmod
(grifo meu):
O operador + faz com que os bits do modo de arquivo selecionado sejam adicionados aos bits do modo de arquivo existente de cada arquivo; - faz com que sejam removidos ; e = faz com que eles sejam adicionados e faz com que os bits não mencionados sejam removidos, exceto que os bits de ID de grupo e usuário não mencionados de um diretório não são afetados.
Os números são:
- 1: executar
- 2: escrever
- 4: ler
Portanto, um arquivo com 777
permissões significa que todos têm o direito de executar os três, desde 1 + 2 + 4 = 7, e, portanto, definir as permissões para 7 significa permitir leitura, gravação e execução.
Se você começar com um arquivo cujo modo é 777
:
$ ls -l my_file
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file
E agora execute chmod -644
, você removerá os bits 644
e terminará com um arquivo cujo modo é 133
:
$ chmod -644 my_file; ls -l my_file
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file
Isso porque você removeu 6 (leitura (4) + gravação (2)) das permissões do proprietário, deixando apenas 1 (execução) definido e 4 (leitura) do grupo e outras permissões. O resultado é um arquivo com apenas permissões execute (1) para o proprietário e grava e executa (você desativa 4, deixando 1 e 3) permissões para o restante.
Como seu arquivo provavelmente tinha as permissões padrão para novos arquivos, então 644
, quando você executou chmod -644 my_file
, removeu todos os bits de permissão definidos e obteve um arquivo sem permissões para ninguém.
$ ls -l my_file
-rw-r--r-- 1 terdon terdon 0 May 28 13:45 my_file
$ chmod -644 my_file
$ ls -l my_file
---------- 1 terdon terdon 0 May 28 13:45 my_file
-
na frente de 644? Tentesudo chmod 644 my_file
.-644
irá remover os direitos.