Gestión de permisos en Linux. Cuales son y cómo interpretarlos

Home  >>  Apuntes ASIR  >>  Gestión de permisos en Linux. Cuales son y cómo interpretarlos

Gestión de permisos en Linux. Cuales son y cómo interpretarlos

En GNU/Linux el sistema de usuarios, grupos y permisos puede resultar algo confuso al inicio, pero con un poco de práctica y hábito al final resulta algo bien organizado y sencillo de entender.

Los permisos en GNU/Linux se caracterizan por el acceso que se le otorga a los usuarios y por los permisos heredados.

Tres permisos a tres categorías

Es importante que sepamos que cada directorio o archivo tiene tres tipos de permisos distintos que se otorgan a tres categorías de usuarios distintas. Además, estos permisos funcionan distinto cuando se trata de ficheros o directorios.

Los tres permisos

  • Permiso de lectura: Permite o prohíbe a un usuario abrir un archivo y poder visualizarlo. En caso de los directorios ocurre lo mismo, el usuario que con este permiso solo puede visualizar el contenido del directorio.
El primer usuario puede acceder, visualizar la carpeta y ver su contenido. El segundo usuario no puede acceder pero sí ver su contenido de forma limitada.
  • Permiso de escritura: Evita o permite a un usuario editar y borrar un archivo. Cuando se trata de un directorio; permite borrarlo, modificarlo, añadir o eliminar contenido como otros directorios o archivos.
  • Permiso de ejecución: Permite ejecutar un archivo. Un archivo que contenga un script no se podrá ejecutar si no se le otorgan estos permisos, por ejemplo. Con los directorios, permite situarse en el interior de la carpeta. Esto permite también realizar operaciones como copiar subdirectorios o crear nuevos ficheros. Si se tienen los otros dos permisos activados (aunque no tenga sentido hacerlo) solo se permitiría visualizar el contenido del directorio.
El usuario tiene todos los permisos salvo el de ejecución. No puede acceder a la carpeta, puede visualizarla con limitaciones, no puede visualizar ficheros ni crear nuevos. Esto último se debe a que requeriría estar dentro de la carpeta para hacerlo.

Las tres categorías

Al mismo tiempo, tenemos tres categorías de usuarios a los que podemos aplicar de forma individual los tres tipos de permisos anteriormente vistos. A parte de estos, existe una herramienta avanzada (llamada ACL, Access Control List) que permite gestionar los permisos a más categorías de usuarios.

  • Propietario: Este es el usuario que ha creado el fichero o el directorio.
  • Grupo: Es el grupo al que pertenece el directorio o fichero. Usualmente tiene el mismo nombre que el propietario y este es el único miembro, pero también pueden haber más usuarios, y a estos también les afectarán los permisos de grupo.
  • Otros: Esta categoría agrupa a todos los usuarios y grupos que no formen parte de las primeras dos categorías. Aquellos usuarios invitados o anónimos del sistema también forman parte de esta categoría así que conviene mantenerla muy limitada.

Cómo interpretar los permisos

Linux mantiene una estructura para visualizar permisos de forma rápida y fácil una vez se entiende. A continuación lo veremos con un ejemplo práctico.

En la imagen superior tenemos listados un directorio y un fichero llamados directorio1 y fichero1 respectivamente. Todo lo que aparece antes de los nombres es información, parte de ella la usaremos para este ejemplo.

Tipo de ficheroPermisos propietarioPermisos grupoPermisos otrosPropietarioGrupoFichero
drwxrw-r–crotofrotocontabilidaddirectorio1
rwxrwxr–crotofrotocrotofrotofichero1
  • Tipo de fichero: el primer carácter de cada fila muestra el tipo de fichero que está listando. Los más comunes son los tipo «d» (directorios) y los «-» (ficheros) aunque también hay otros como los «l» (enlaces).
  • Permisos del propietario: Los siguientes tres dígitos muestran los permisos del propietario. Dependiendo de los caracteres que aparezcan, sabremos qué permisos tiene habilitados el propietario. Cuando aparezca una «r» significa que tiene permisos de lectura, cuando sea una «w» indica los de escritura y cuando se vea una «x» indica de ejecución.
    Estos caracteres siempre aparecerán en el orden «rwx», si alguno de estos es sustituido por un guion (-) significa que no posee dicho permiso.
  • Permisos del grupo: Indica qué permisos tiene el grupo del fichero o directorio. Usualmente suele tener los mismos permisos que el usuario, o más restrictivos en su defecto. En el caso del ejemplo, el grupo no tiene permisos de ejecución (x) porque aparece un guion en su lugar.
  • Permisos de otros: Suelen ser más restrictivos que el resto. En este ejemplo, solo tienen permisos de lectura.
  • Propietario: A continuación aparece el propietario del objeto. Con esto se informa a quién afecta el primer grupo de permisos.
  • Grupo: Se informa a quién afecta el segundo grupo de permisos.
  • Nombre del fichero o directorio.

Cómo cambiar los propietarios de los permisos

En algunos casos, ya sea copiando ficheros o creando directorios, es necesario realizar cambios en los propietarios de los permisos. Sea cual sea el motivo del cambio, a continuación vamos a ver cómo realizarlo, tanto al usuario como al grupo.

Cambiar usuario propietario:

~$ sudo chown usuario_nuevo fichero

Cambiar grupo propietario:

~$ sudo chown grupo_nuevo fichero

Cambiar ambos:

~$ sudo chown usuario_nuevo:grupo_nuevo fichero

Cómo cambiar los permisos

Existen dos manteras distintas de cambiar los permisos usando un mismo comando en terminal. Explicaré los dos, ninguno es mejor que el otro, solo que dependiendo de la gestión que se vaya a hacer será más práctico realizar uno o el otro.

Cambio de permisos en sistema octal

El sistema octal divide las tres categorías y numera todas las posibles combinaciones de sus permisos en números. Parece ser complicado pero siguiendo la siguiente tabla y con un poco de práctica puede resultar mucho más sencillo que el otro sistema.

NúmeroBinarioPermisos
0000
1001–x
2010-w-
3011-wx
4100r–
5101r-x
6110rw-
7111rwx

Simplemente sustituimos los permisos que deseemos añadir por el número al que corresponden, siguiendo el orden de las categorías.

Como ejemplo usaremos el directorio de la primera imagen. Sus permisos rwxrw-r– se traducirían en 764. Con esto ya podemos ejecutar el comando.

~$ sudo chmod 764 fichero

Este comando sirve para cambiar las tres categorías de permisos.

Cambio de permisos en sistema gramatical

Utiliza un sistema entendible de pocas letras y los símbolos + y – para añadir o eliminar permisos. Primero se indica la categoría que se quiere modificar (u para el usuario, g para el grupo y o para otros), luego se añade + o – si se desea añadir o restar permisos seguido de estos (r para lectura, w para lectura y x para ejecución).

Con esto podríamos realizar varios ejemplos:

Eliminamos el permiso de escritura al usuario propietario del fichero:

~$ sudo chmod u-w fichero

Añadimos permiso de lectura y escritura a otros:

~$ sudo chmod o+r+w fichero

Dejamos solo permisos de ejecución al grupo:

~$ sudo chmod g-r-w+x fichero

Permisos especiales

Ahora que ya dominamos los permisos toca hablar de los especiales. Estos son los SUID (Set User ID), SGID (Set Group ID) y mi favorito, sticky bit. Cada uno de estos permisos sustituye a un permiso «convencional» y le incorpora características especiales.

SUID

Sustituye al permiso de ejecución del usuario, apareciendo con una s en su lugar.

Este permiso se añade a los archivos ejecutables. Permite que, cuando un usuario ejecuta un fichero, adquiera los permisos del usuario propietario de este durante el tiempo que dura la ejecución. Un ejemplo práctico para evitar muerte súbita de neuronas: El fichero «su» realiza procesos exclusivos de root así que, para funcionar, el usuario adquiere temporalmente los privilegios de root, que es el usuario propietario.

Es mejor dejar el uso de este permiso para el sistema, ya que si es añadido indebidamente puede suponer un problema de seguridad grabe. Para añadirlo a un fichero se usa el siguiente comando:

~$ sudo chmod u+s fichero

SGID

Al igual que el SUID, otorga permisos temporales, pero en esta ocasión al grupo. Para añadirlo se usa este comando:

~$ sudo chmod g+s fichero

Sticky bit

Este permiso se suele otorgar a directorios a los que todos los usuarios tienen acceso. Permite evitar que un usuario pueda borrar ficheros/directorios de otro usuario dentro de ese directorio, ya que todos tienen permiso de escritura. Es muy útil en directorios donde los usuarios deben guardar datos (por ejemplo, la carpeta compartida donde los alumnos deben subir sus trabajos), así se evita que, de forma accidental o no, un usuario borre los datos de otro. Es un permiso muy útil y que brilla por su ausencia en sistemas Windows.

~$ sudo chmod o+t directorio

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *