¿Por qué usar `chmod 644` en lugar de` chmod u = rw, go = r, … `?

He estado trabajando en * nix durante algunos años, y una de las cosas a las que no me puedo acostumbrar son los permissions octales en el código. ¿Hay alguna otra razón que no sea la longitud de línea para preferir chmod 644 ... sobre chmod u=rw,go=r ... ?

PD: No estoy buscando una explicación de los permissions octales. Sé cómo funcionan, y está bien explicado en el manual. Me pregunto por qué octal parece ser preferible a la forma más legible para los humanos.

Solutions Collecting From Web of "¿Por qué usar `chmod 644` en lugar de` chmod u = rw, go = r, … `?"

Usar los códigos octales tiene dos ventajas que puedo pensar, ninguna de las cuales es tan grande:

  1. Son más cortos, más fáciles de escribir.
  2. Algunas cosas solo las entienden, y si las usa rutinariamente, no se estará rascando la cabeza (o corriendo hacia la documentation) cuando se encuentre con una. Por ejemplo, tienes que usar octal para chmod en Perl o C.

A veces, las utilidades realmente simples no manejarán las versiones "amigables"; especialmente en los sitios de usuarios que no son de GNU.

Además, algunas utilidades escupen octal. Por ejemplo, si ejecuta umask para ver cuál es su umask actual, la escupirá en octal (aunque en bash, umask -S sí es simbólico).

Entonces, en resumen, yo diría que la única razón para preferirlos es escribir less caracteres, pero que incluso si eliges no usarlos, debes saber cómo se mapean para que puedas descifrar un código octal si corres en una de las cosas que solo ocurre octal. Pero no necesita saber de inmediato que 5 maps a rx , solo necesita saberlo.

Supongo que he estado usando octal por mucho time.

7 es rwx (hacer cualquier cosa con él), 5 es rx (tengo que leerlo para ejecutarlo), 6 es wr (cualquier file de datos que necesite modificar), 4 es r (le dejaremos verlo), y 0 es – (lo siento, nada aquí para ver). Y el order es Yo, Nosotros, Todos. Estas son las combinaciones básicas.

755 Puedo cambiarlo y ejecutarlo, todos los demás pueden ejecutarlo.

644 Puedo cambiarlo, todos los demás pueden leerlo.

444 Solo lectura para todos, estamos aquí.

500 Puedo ejecutarlo, no quiero que cambie, todos los demás manos.

Para mí, es corto, al grano. 9 caracteres y una especificación de file y seguir adelante.

Nunca disfruté la representación octal, siempre he rwxr-xr-x por la rwxr-xr-x recta rwxr-xr-x , ya que me parece más simple. Sin embargo, por lo que veo, la representación octal existe para que realmente sea más fácil para nosotros recordar (no veo cómo funciona eso).

El único otro posible beneficio que veo octal traer a la table es la falta de ambigüedad. Las 8 diferentes configuraciones de bits de permiso están representadas por un único número distinto, que estoy seguro ayuda a algunas personas a poner accidentalmente una w donde no deberían tener.

Lamentablemente, sin embargo, he memorizado esta tabla:

 # rwx 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 

Creo que la razón es otra vez: la historia. Al principio, los valores octales eran los únicos. Los simbólicos vinieron después.

Prefiero los simbólicos. Especialmente si desea cambiar los valores existentes sin tocar otras partes.

Como chmod -R u=rwx,g-w+X,o=- haz eso en octal …

Tenga en count que los modos octales pueden eliminar los bits setuid y setgid en algunos sistemas.

Fedora 16:

 $ mkdir dir $ chmod 2775 dir $ stat -c %a dir 2775 $ chmod 770 dir $ stat -c %a dir 2770 

(el 2 se conserva)

FreeBSD 9:

 $ mkdir dir $ chmod 2775 dir $ stat -f %Mp%Lp dir 2775 $ chmod 770 dir $ stat -f %Mp%Lp dir 0770 

(el 2 convirtió en 0 )

Si desea cambiar los permissions de un file o directory, puede ser mejor simplemente especificar los bits que desea cambiar (por ejemplo, chmod o= dir o chmod o-rwx dir en el ejemplo anterior).

La historia explica por qué existen los modos octales, pero creo que la funcionalidad es la razón por la cual existe la forma mnemónica. Y todos los puntos sobre otras herramientas que usan exclusivamente modos octales son perfectamente válidos y creo que debes aprenderlos y conocerlos. Sin embargo, encuentro que los administradores conservadores no ven la verdadera utilidad que proviene de la forma mnemónica.

La forma octal, especialmente cuando se usa recursivamente, tiende a obligar a los administradores a hacer cosas estúpidas. O, más bien, los resultados de negligencia añadidos en que resulta estúpido. Cada vez que se encuentra con una carpeta con muchos files de text y el bit x establecido, tiene testings.

¿Por qué alguien establecería el bit x así? Porque es difícil no hacerlo a less que use la forma mnemónica para los modos. Considere que desea restablecer los permissions en /var/www y no ejecuta ningún CGI antiguo, por lo que debe eliminarse el bit x . Sin embargo, el bit x sirve para otro propósito en los directorys. Entonces terminas haciendo algo (como root ) como:

 chmod -R 666 /var/www find /var/www -type d -exec chmod 777 {} \; 

Sin embargo, si estuvieras usando la forma mnemotécnica, podrías darle una "receta":

 chmod -R a=rwX /var/www 

que es la forma abreviada de chmod -R ugo=rwX /var/www (logrando el mismo pero diferente path: chmod -R ax,a+rwX /var/www ).

Pero hay otra cosa que es más trivial que no se puede lograr con los modos octales. No puede ajustar el user o group u other máscara individualmente con la forma octal.

En resumen: es como comparar un bisturí (mnemotécnico) y un cuchillo de cocina afilado (octal) … pero todavía tienes que saber los bits del modo octal por otras razones 🙂

La razón por la cual los modos octales son todavía preferidos , creo, no implica más mecanografía en la forma mnemónica, sino administradores demasiado conservadores. Y sí, 2013 llamadas, esos administradores demasiado conservadores todavía existen y están aquí para quedarse por algún time.

Cuando tiene que modificar los permissions de los files todo el time , aprecia los 3 caracteres. Muchas veces uso las versiones + o - para cambiar los permissions.

Por ejemplo, creo un nuevo PHP, Python u otro script en mi carpeta de Apache. chmod a+x es todo lo que hago para que pueda ejecutarse. Lo leí como "todo más ejecutar". Ahora sé que va a funcionar, y solo necesitaba 3 caracteres.

Otras veces uso 644 y 755 automáticamente. Solo lo pienso, 644 significa un file, 755 significa un guión.

Se adapta muy bien a la configuration de umask, que generalmente se da en escritura octal (en pam o fstab ).

Sugiero que una razón importante es que la representación octal coincide estrechamente con lo que ves con ls -l (o, más bien, lo hace cuando conviertes mentalmente entre octal y binary).