Dominando la terminal de linux: los permisos y chmod

por:

 

Dominando la terminal de Linux, los permisos y chmod

 

Como ya apuntábamos en entradas anteriores, sobre la terminal de Linux, es muy importante dominar el concepto de permisos de un archivo, cambiarlo y saber cuales tenemos que poner.

¿Qué son los permisos?

Los permisos son una máscara de bits que nos permite definir quien va a poder leer, escribir y/o ejecutar este archivo.

Una máscara de bits es un conjunto de bits, donde cada posición tiene un valor específico y puede valer 1 para activar esa opción, 0 si queremos desactivar la opción.

En el caso que nos ocupa la máscara tiene 3 bits: lectura, escritura y ejecución. En este orden (el orden es importante). Por ejemplo si nosotros ponemos 101 estamos diciendo que tenemos permisos para leer el archivo y para ejecutarlo, pero no para escribirlo ya que el bit de escritura vale 0. Para un manejo más simple y sencillo se utilizan números que luego se pasan a octal. Si queremos poner, todos los permisos ponemos un 7 ya que en octal es 111.

Viendo los permisos

Como ya dijimos el otro día para ver los permisos de los archivos que están contenidos en un directorio podemos utilizar ls -l.

la terminal ejecutando ls -l
la terminal ejecutando ls -l

Si por el contrario, solo queremos ver los permisos que están asociados a un archivo podemos utilizar ls -l ruta_archivo.extension . Como en este ejemplo:

La terminal ejecutando ls -l ruta_archivo
La terminal ejecutando ls -l ruta_archivo para ver los permisos

Para una mejor visualización por pantalla, en lugar de los números de cada máscara nos sale una r de lectura, una w de escritura y una x de ejecución. Si no tenemos alguno de estos permisos nos sale un – que nos indica que ese permiso no lo tenemos. En el caso de Cywin.ico yo tengo permisos de lectura y escritura y no de ejecución.

Gestionando los permisos en Linux

En Linux, todo archivo tiene asociado por lo menos, 3 grupos de permisos. De izquierda a derecha, tenemos el grupo de permisos del dueño, los permisos del grupo de usuarios a los cuales pertenece el dueño y el grupo de permisos para el resto de usuarios. Ejemplo si tenemos 2 grupos de usuarios, administradores y alumnos y tenemos un alumno con nombre de usuario Pepe. El primero grupo de permisos son los que tiene Pepe, el segundo los que tienen los alumnos y el tercero los que tienen todos los usuarios.

chmod

chmod es el comando que nos proporciona Linux, para poder cambiar los permisos desde la terminal. Su uso es muy sencillo, solo hay que poner $ chmod num1num2num3

Cada uno de los num es un número entre 0 y 7 en octal, que representa los permisos que queremos darle. El primer número indica los permisos que queremos tener como usuario, el segundo los que le damos al grupo de usuarios al que pertenecemos y el tercero los que le damos al resto. Para conseguir el numero según los permisos que queramos dar, os dejamos esta tabla (fuente Wikipedia)

NúmeroBinarioLectura (r)Escritura (w)Ejecución (x)
0000
No-Symbol.svg
No-Symbol.svg
No-Symbol.svg
1001
No-Symbol.svg
No-Symbol.svg
Symbol OK.svg
2010
No-Symbol.svg
Symbol OK.svg
No-Symbol.svg
3011
No-Symbol.svg
Symbol OK.svg
Symbol OK.svg
4100
Symbol OK.svg
No-Symbol.svg
No-Symbol.svg
5101
Symbol OK.svg
No-Symbol.svg
Symbol OK.svg
6110
Symbol OK.svg
Symbol OK.svg
No-Symbol.svg
7111
Symbol OK.svg
Symbol OK.svg
Symbol OK.svg

 

Ejemplo de uso:

  • Quiero tener yo todos los permisos y el resto no, así no me lo copian/borran etc. $ chmod 700
La terminal ejecutando chmod 700
La terminal ejecutando chmod 700 para tener todos los permisos
  • Quiero tener yo todos los permisos y todo el mundo puede acceder a leer mi archivo, pero no me lo pueden borrar ni ejecutar. $ chmod 744
  • Quiero que tanto yo como mi grupo de usuarios, en el ejemplo otros alumnos, puedan leer y escribir el archivo, pero otros no tengan ningún permiso. $ chmod 660

El conjunto de casos es enorme, pero sabiendo como van los números, es ir buscando en la tabla y poniendo el que corresponda, para los permisos que les queramos otorgar.

4 comentarios en “Dominando la terminal de linux: los permisos y chmod”

  1. Pepe

    Hola, buenos dias. Es cierto que eres ingeniero informático? Si no le importa me gustaría hacerle unas preguntas ya que pronto elijo carrera. Le escribo esto ya que am1g01nf0rmat1c0 contiene esta pág web en su biografía. Gracias

    Responder
    • MiRoot

      Hola Pepe en verdad, ahora mismo todavía no tengo el título, pero llevo más de la mitad de la carrera ya hecha y se puede decir que soy ingeniero informático en potencia.
      En el foro de esta comunidad tenemos un apartado para universidades http://www.somosbinarios.es/foro/Forum-Universidad y además hay algunos post que te pueden resultar interesantes.
      Si todavía sigues con alguna duda, escríbenos en el foro y tanto yo como otros usuarios (algunos con la carrera terminada, otros empezando otros en módulos …) te intentaremos contestar lo mejor que podamos.

      Un saludo

      Responder
  2. Javi

    Genial tutorial para los permisos. Muy útil. Buen trabajo 😉

    Responder
    • MiRoot

      Muchas gracias, tenemos una primera parte que habla de como moverse por los directorios, crear carpetas y borrar archivos y carpetas. Las órdenes que explicamos son cd ls mkdir rmdir rm Si estás empezando seguro que las encuentras interesantes.

      Responder

Deja una Respuesta