Estás usando -664, solo usa 664en su lugar. Y nunca lo use sudocuando no lo necesite. Si ese es su archivo, no necesita sudo:
chmod 644 my_file
Cuando corres chmodcon un -antes del modo, eliminarás ese modo. Ver man chmod(énfasis mío):
El operador + hace que los bits de modo de archivo seleccionados se agreguen a los bits de modo de archivo existentes de cada archivo; - hace que se eliminen ; y = hace que se agreguen y hace que se eliminen los bits no mencionados, excepto que los bits de ID de grupo y usuario de grupo no mencionados no se ven afectados.
Los números son:
- 1: ejecutar
- 2: escribir
- 4: leer
Por lo tanto, un archivo con 777permisos significa que todos tienen derecho a hacer los tres, ya que 1 + 2 + 4 = 7, y por lo tanto, establecer los permisos en 7 significa permitir leer, escribir y ejecutar.
Si comienza con un archivo cuyo modo es 777:
$ ls -l my_file
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file
Y ahora ejecute chmod -644, eliminará los bits 644y terminará con un archivo cuyo modo es 133:
$ chmod -644 my_file; ls -l my_file
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file
Esto se debe a que eliminó 6 (lectura (4) + escritura (2)) de los permisos del propietario, dejando solo 1 conjunto (ejecución) y 4 (lectura) del grupo y otros permisos. El resultado es un archivo con solo permisos de ejecución (1) para el propietario, y escribe y ejecuta (desactiva 4, dejando 1 y 3) permisos para el resto.
Debido a que su archivo presumiblemente tenía los permisos predeterminados para los archivos nuevos, entonces 644, cuando ejecutó chmod -644 my_file, eliminó todos los bits de permisos establecidos y obtuvo un archivo sin permisos para nadie.
$ 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
-frente de 644? Tratarsudo chmod 644 my_file.-644eliminará los derechos.