'chmod -644' establecería el permiso de archivo en 000

12

Tenía un archivo con 644 ( -rw-r--r--) y quería cambiarlo a 664 ( -rw-rw-r--), después de ejecutar:

sudo chmod -664 my_file

los permisos de archivo se establecieron en 000 ( ----------).

Intentar cambiar los permisos a algo diferente a 000 parece no funcionar. ¿Que me estoy perdiendo aqui?

illgoforit
fuente
11
¿Por qué tienes un -frente de 644? Tratar sudo chmod 644 my_file. -644eliminará los derechos.
Soren A

Respuestas:

34

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
terdon
fuente