Pregunta ¿Por qué se invierte el argumento de os.umask ()? (umask 0o000 hace chmod 0o777)


En la mayoría de los lugares, los permisos se definen como un número octal en el formato de 0777. Pero UNIX umask comando (por lo tanto os.umask()) necesita 0o000 para producir los bits de permiso de 0o777 y 0o022 igual a 0o755 en mi entendimiento.

Escuché que UNIX umask está invertido por alguna razón y no entiendo la razón detrás de esto. ¿Podría alguien explicar esta inconsistencia?


11
2017-07-02 12:52


origen


Respuestas:


No hay una inconsistencia real, ya que la relación entre umask y chmod puede escribirse puramente con ecuaciones. Aparentemente, umask establece lo opuesto a chmod, fue creado así en los viejos tiempos.

Ejemplo: 022 (el valor por defecto habitual umask) crea 755. Funciona así:

  • 7 - 0 = 7 se convierte en el primer byte
  • 7 - 2 = 5 se convierte en el segundo y tercer byte

Usando este ejemplo, umask 777 crea un archivo con chmod 000, umask 112 será igual a chmod 664. Por lo que sé, esto sucedió porque el umask comando fue creado originalmente para indicar qué bits de permiso el archivo NO tener después de que se ha creado (de ahí la inversión).

Si bien puede ser molesto, no es difícil acostumbrarse a él. Solo piensa cómo lo harías chmod sus archivos, y restar el byte que desea de 7y obtendrás el umask valor. O, cuando estás en el IDE, escribiendo tu código, no uses umask, sino crear el archivo (con el valor predeterminado umask por supuesto) y luego usar, en Python, os.chmod() en lugar.


11
2017-07-02 13:05