; Vince y el mundo del software: Uso sencillo de chmod

domingo, 28 de abril de 2013

Uso sencillo de chmod

¿No les ha pasado que están en linux y no pueden acceder/escribir/ejecutar un archivo porque les sale el candadito (en modo gráfico), o les dice que no tienen permisos (en modo consola)? Una opción es logearse como root, pero eso sólo sirve si es un archivo de sistema (los cuales NO DEBEN cambiarle los permisos). Pero si es un archivo como una peli o algo así, lo mejor es cambiarle los permisos, y en vez de marearse con los "chmod a+rwx", lo más fácil es aprenderse los numeritos octales (ya que van del 0 al 7) y listo xD Acá va un minituto de menos de 140 carácteres:
Tuto rápido chmod: 0 nada, 1 ejecutar, 2 escribir, 4 leer. Los van sumando. se ponen 3: usuario, grupo, todos. ej "sudo chmod 662 archivo"

En realidad el 2 y el 3 rara vez se usan. Lo más típico es que si es un archivo común (no ejecutable) le pongas "666", y si es un ejecutable, le pongas "777". Ahora eso es útil cuando sólo tú usas el pc. Si hay más usuarios involucrados piénsalo bien, especialmente el tercer número (a todos).

Más información del tema (en inglés) acá.

 ------------------------
Edito:
¿De dónde nacen esos números? -y esto es la palta para aprendérselo-.
Es bastante sencillo. En linux los permisos son 3:  leer, escribir y ejecutar, los cuales son resumidos en "rwx" (Read, Write, eXecute).
Si han usado "ls -l", notarán que les aparecen nueve carácteres de permisos (más el primero que representa si es un archivo o carpeta). Estos permisos tienen valores booleanos, es decir o es "r" o es "-", es sí o no.
Sabiendo esto ¿Cómo podemos simplificarlo, para en vez de tener 3 carácteres, tener uno solo? Simple, transformémoslo a binario, poniéndole a cada permiso un 1 o un 0.
Por ejemplo si teníamos los tres permisos, es decir rwx; en binario sería: 111. Si tenemos sólo rw- sería: 110; y así sucesivamente.
Ahora lo único que queda es transformar ese número binario a número decimal, poniendo a cada 1 un exponente en base dos de la posición (comenzando en 0).
Así si tenemos 110, sería: (2*1)^2 + (2*1)^1 + (2*0)^0 = 4+2 = 6.
Y así es como se obtienen los valores octales de los permisos.

No hay comentarios:

Publicar un comentario