Cómo funcionan los permisos de archivos en Linux (I)

permisos archivos linux

Los permisos de archivo y directorio son parte esencial en el mundo de GNU/Linux, y constituyen una de las partes que han sido heredadas de lo que durante años había estado presente en Unix. Para una importante cantidad de usuarios que han tenido que lidiar con el hecho de llegar a esta plataforma en algún momento u otro se trata de uno de esos temas que bloquea e impone respeto, pero como todo en esta vida es simple de comprender si se nos da la ayuda adecuada.

En este post intentaremos despejar algunas dudas, y ser lo más claros, básicos y esenciales que sea posible para que todos puedan comenzar a comprender como funcionan los permisos de archivos y directorio en GNU/Linux. No es de ningún modo una guía avanzada así que quienes ya tengan experiencia en este tema pueden seguir de largo, porque vamos a intentar ser claros y detallados para aquellos que recién se inician en este sistema operativo, o aquellos que a pesar de haber estado utilizando esta plataforma durante algún tiempo todavía no tienen esto bien aprendido.

Lo primero que hay que comprender es que los permisos se dividen en tres grupos: dueño, grupo y otros, que representan los permisos de acceso que tendrá el dueño del archivo o directorio, los que tendrá un usuario que pertenezca al grupo dueño de ese archivo o directorio, y los que tendrá el resto de los usuarios del sistema. Para visualizar estos permisos podemos situarnos en cualquier directorio y ejecutar lo siguiente:

ls -l

Veremos similar a lo que tenemos en la imagen superior de este post, en donde tenemos información representada en varias filas y columnas. Estas últimas nos muestran algo como -rw-r–r–  1  root  root  164  nov 11 2014  xinitrc, y lo que vemos bien a la izquierda es lo que más nos va a interesar para comenzar a comprender de que manera podemos gestionar los permisos. Esa primera columna nos muestra 10 espacios, cada uno de ellos con un significado diferente según esté ocupado por:

  • b: dispositivo de bloque
  • c: dispositivo de caracteres (por ejemplo /dev/tty1)
  • d: directorio
  • l: vínculo simbólico (por ejemplo /usr/bin/java->/home/programas/java/jre/bin/java)
  • p: canalización con nombre (por ejemplo /proc/1/maps)
  • – permiso no asignado
  • r: lectura
  • w: escritura
  • x: ejecución

La d sólo estará presente en el primer espacio comenzando desde la izquierda, y significa que el elemento en cuestión es un directorio, por lo cual en caso de tener ese espacio ocupado con un guión “-” estaremos ante un archivo. Luego, los siguientes nueve espacios están divididos en tres grupos de tres, y el orden es siempre el siguiente: rwx, lo cual representa a los permisos de escritura, lectura y ejecución para el dueño, el grupo y los demás (otros) respectivamente.

Lo que sigue es un número que nos muestra la cantidad de enlaces hacia este archivo o directorio, cifra que muchas veces es 1, a veces puede ser 2 y unas pocas, las menos, tiene otro número. Eso no importa por ahora, o al menos no es significativo para nuestro propósito de dominar los permisos de archivo en Linux, así que sigamos por el siguiente campo ya que este sí nos interesa puesto que ese ‘root’ que vemos allí significa que el es dueño de este archivo, y el ‘root’ que vemos en la cuarta columna implica que el archivo también pertenece al grupo ‘root’. Luego, los campos que siguen representan al tamaño de inodo, la fecha y el nombre del archivo o directorio.

Con esta información en mente vamos a poder comenzar a comprender lo que sigue, que es la nomenclatura numeral para los permisos, algo bien típico de GNU/Linux, BSD y demás sistemas *nix. Además, esa nomenclatura nos servirá para poder cambiar los permisos de archivo en forma rápida mediante el comando chmod, y es lo que vamos a ver en otro post pero por ahora podemos enfocarnos en lo siguiente: permiso de lectura significa que podemos ver los contenidos de dicho archivo o directorio, escritura significa que tenemos permiso para modificar el archivo o directorio y permiso de ejecución significa que podremos ejecutar el archivo o, si estamos ante un directorio, que podremos buscar en el (es decir, hacer “ls”). Esto explica por que los archivos fundamentales en el sistema, como /usr/, /usr/bin o /usr/lib tienen permiso de ejecución habilitado pero no el de escritura excepto para el dueño, puesto que así todos los usuarios podemos ejecutar todos los comandos pero no modificar ni borrar nada hasta tanto no se nos brinden esos permisos o nos transformemos en ‘root’ mediante el comando ‘su’.


Categorías

Tutoriales, Ubuntu

Willy Klew

Ingeniero en Informática, soy un fanático de Linux, Android, la programación, redes y todo lo que tenga que ver con las nuevas tecnologías. Ex atleta, y usuario de Linux desde 1997. Ah, y un total enfermo del fútbol (sin ganas de curarse).

2 comentarios

  1.   Javier dijo

    Excelente nota!! Saludos

  2.   Mara dijo

    me cago en la inforrrmacion!!

Escribe un comentario