Permisos en Linux

Índice

Hoy nos toca hablar las crípticas letras que aparecen al usar el comando ls -l. Entender los permisos es imprescindible para la seguridad y el control del sistema. A continuación intentare explicar forma clara qué son, para qué sirven y cómo puedes modificarlos de dos maneras diferentes.

Estructura de Permisos

Los permisos de un fichero en Linux se basan en un sistema de tres categorías de usuarios y tres tipos de permisos.

Las Categorías de Usuarios :

  • Propietario (u - user): El usuario que ha creado el archivo o directorio.
  • Grupo (g - group): Un grupo de usuarios que comparten un acceso común al archivo.
  • Otros (o - others): Cualquier otro usuario del sistema.

Los Tipos de Permisos (qué pueden hacer):

  • Lectura (r - read): Permite leer (read) el contenido de un archivo o listar los ficheros de un directorio.
  • Escritura (w - write): Permite modificar (write) o eliminar un archivo, o crear/eliminar ficheros dentro de un directorio.
  • Ejecución (x - execute): Permite ejecutar (execute) un archivo (si es un programa o script) o acceder a un directorio.

Cuando ejecutas el comando ls -l, se ve una cadena de 10 caracteres como esta: drwxr-xr--

  • El primer carácter (d): Indica el tipo de fichero. d para directorio, - para archivo, l para enlace simbólico, etc.
  • Los siguientes nueve caracteres (rwxr-xr--): Se dividen en tres bloques de tres, correspondientes a los permisos de propietario, grupo y otros.
    • rwx: Permisos para el propietario (lectura, escritura y ejecución).
    • r-x: Permisos para el grupo (lectura y ejecución, pero no escritura).
    • r--: Permisos para otros (solo lectura).

Método Numérico (Octal) 🔢

El método numérico es el más común y utiliza un sistema de números para representar los permisos. A cada tipo de permiso se le asigna un valor:

  • r (lectura) = 4
  • w (escritura) = 2
  • x (ejecución) = 1
  • - (sin permiso) = 0

Para establecer los permisos de una categoría, simplemente sumas los valores. Por ejemplo, rwx es 4 + 2 + 1 = 7.

El comando para cambiar permisos es chmod, y se utiliza con tres números: uno para el propietario, uno para el grupo y uno para otros.

Ejemplos:

Desde el terminal:

Da permisos de lectura, escritura y ejecución al propietario (7), y de lectura y ejecución al grupo (5) y a otros (5).

chmod 755 script.sh
Da permisos de lectura y escritura al propietario (6), y solo de lectura al grupo (4) y a otros (4).
chmod 644 documento.txt
Da permisos completos al propietario (7) y elimina todos los permisos para el grupo (0) y otros (0).
chmod 700 archivo_privado.key

Método Simbólico (Letras) 📝

Este método utiliza letras y símbolos para añadir (+), quitar (-) o establecer (=) permisos de forma más intuitiva.

  • Usuarios: u (propietario), g (grupo), o (otros), a (todos).
  • Permisos: r, w, x.
  • Operadores: + (añadir), - (quitar), = (establecer exactamente).

Ejemplos:

Desde el terminal:

Añade el permiso de ejecución (+x) solo al propietario (u).

chmod u+x script.sh
Quita el permiso de escritura (-w) solo al grupo (g).
chmod g-w documento.txt
Establece los permisos para otros (o) exactamente como solo lectura (=r), eliminando cualquier otro permiso que tuvieran.
chmod o=r archivo.conf
Añade el permiso de lectura (+r) a todos (a).
chmod a+r archivo.zip

Cambio de Propietario y Grupo 👥

Además de los permisos, es posible cambiar quién es el propietario de un fichero y a qué grupo pertenece. Para ello, se usan los comandos chown y chgrp.

Desde el terminal:

  • chown (change owner): Para cambiar el propietario. Cambia el propietario de documento.txt al usuario juan.
    chown juan documento.txt
    Cambia el propietario a juan y el grupo a desarrollo.
    sudo chown juan:desarrollo documento.txt
  • chgrp (change group): Para cambiar solo el grupo. Cambia el grupo de documento.txt a desarrollo.
    chgrp desarrollo documento.txt
    Espero que el siguiente esquema sirva de guía mas visual de todo lo anterior