Linux Permisos en Archivos y Directorios🐧


En esta sección, aprenderemos a otorgar y revocar permisos en archivos de Linux/Unix. Este proceso es esencial para gestionar cuidadosamente a qué usuarios y grupos se les permite la lectura, escritura y ejecución de un archivo. No todos los archivos deberían ser accesibles o ejecutables por todos los usuarios del sistema, ya que esto puede dar lugar a vulnerabilidades potenciales en la seguridad. La correcta administración de permisos es una medida preventiva clave para proteger tus datos y mantener la integridad del sistema.


Importancia de Permisos en Sistemas Linux/Unix

Supongamos que estamos en nuestro servidor Linux, y tenemos archivos con extensión .sh. Estos scripts están escritos en Bash o Zsh y pueden configurar el sistema o guardar información sensible, como credenciales de usuario o configuraciones críticas. Ahora, imagina que uno de estos archivos es ejecutable y contiene comandos que se ejecutan con permisos de root. Si accidentalmente se le asigna un permiso de 777, cualquier usuario podría leer, modificar o ejecutar este archivo, ¡incluso con acceso a comandos que deberían estar reservados para el administrador!

Darle permisos tan amplios puede ser un riesgo grave, ya que un usuario con malas intenciones o que simplemente no debería tener acceso podría manipular configuraciones importantes o robar datos. Para evitar esto, lo mejor es ajustar los permisos a una configuración más restrictiva, como 600, que solo permite que el propietario lea y escriba el archivo, sin dar acceso a otros. De esta forma, mantenemos el control y minimizamos riesgos innecesarios de seguridad.


Tipos de Permisos en Linux y Unix

En Linux y sistemas Unix, los permisos de archivos y directorios se gestionan utilizando un sistema de permisos basado en tres tipos:

1. Tipos de Permisos

  • Lectura (r):
    • Archivos: Permite leer el contenido del archivo.
    • Directorios: Permite listar los archivos y subdirectorios en el directorio.
  • Escritura (w):
    • Archivos: Permite modificar el contenido del archivo.
    • Directorios: Permite agregar, eliminar y renombrar archivos dentro del directorio.
  • Ejecución (x):
    • Archivos: Permite ejecutar el archivo como un programa.
    • Directorios: Permite acceder al directorio y utilizarlo como un camino en una ruta de archivos.

2. Representación de Permisos

Los permisos se pueden representar de dos maneras: simbólica y octal.

Representación Simbólica

Los permisos se expresan en forma de letras:

  • r para lectura
  • w para escritura
  • x para ejecución
  • - si no se tiene el permiso

Por ejemplo, en la representación rwxr-xr--:

  • Propietario: rwx (lectura, escritura y ejecución)
  • Grupo: r-x (lectura y ejecución)
  • Otros: r-- (solo lectura)

3. Formato de Tipo de Permisos

El formato de permisos en Linux se presenta en una cadena de 10 caracteres que incluye:

  • Tipo de archivo: El primer carácter indica el tipo (por ejemplo, - para archivo regular, d para directorio, l para enlace simbólico).
  • Permisos del propietario: Los siguientes tres caracteres indican los permisos del propietario.
  • Permisos del grupo: Los siguientes tres caracteres indican los permisos del grupo.
  • Permisos de otros: Los últimos tres caracteres indican los permisos para otros usuarios.

Por ejemplo:

-rw-r--r--

Desglose:

  • -: Archivo regular.
  • rw-: Propietario tiene permisos de lectura y escritura.
  • r--: Grupo tiene permiso de lectura.
  • r--: Otros tienen permiso de lectura.

4. Categoría de Usuarios

Los permisos se aplican a tres categorías de usuarios:

  • Propietario (u): El usuario que es dueño del archivo o directorio.
  • Grupo (g): Un grupo de usuarios que comparten permisos sobre el archivo o directorio.
  • Otros (o): Todos los demás usuarios que no son ni el propietario ni parte del grupo.

5. Representación Octal

La representación octal utiliza números para expresar los permisos:

  • 4: Lectura (r)
  • 2: Escritura (w)
  • 1: Ejecución (x)
  • 0: Sin permiso (-)

Los permisos se suman para cada categoría. Por ejemplo:

  • 7 (4+2+1) = rwx (lectura, escritura y ejecución)
  • 6 (4+2) = rw- (lectura y escritura)
  • 5 (4+1) = r-x (lectura y ejecución)
  • 4 = r-- (solo lectura)

Ejemplos de Representación Octal

  • chmod 755 archivo: Establece permisos como rwxr-xr-x:
    • Propietario: rwx (lectura, escritura y ejecución)
    • Grupo: r-x (lectura y ejecución)
    • Otros: r-x (lectura y ejecución)
  • chmod 644 archivo: Establece permisos como rw-r--r--:
    • Propietario: rw- (lectura y escritura)
    • Grupo: r-- (solo lectura)
    • Otros: r-- (solo lectura)
  • chmod 700 directorio: Establece permisos como rwx------:
    • Propietario: rwx (lectura, escritura y ejecución)
    • Grupo: --- (sin permisos)
    • Otros: --- (sin permisos)

6. Ejemplos Comunes

  • chmod 777 archivo: Da permisos completos a todos (lectura, escritura y ejecución).
  • chmod 600 archivo: Solo permite al propietario leer y escribir el archivo.
  • chmod 444 archivo: Solo permite a todos leer el archivo (sin escritura ni ejecución).

7. Comandos Relacionados

  • chmod: Cambia los permisos de un archivo o directorio.
    Uso:
    chmod [opciones] permisos archivo
    
  • chown: Cambia el propietario de un archivo o directorio.
    Uso:
    chown usuario:grupo archivo
    
  • chgrp: Cambia el grupo asociado a un archivo o directorio.
    Uso:
    chgrp grupo archivo
    

8. Cómo Utilizar

  1. Para cambiar permisos:
    Usa chmod seguido de la representación octal o simbólica. Por ejemplo, para dar permisos de lectura y escritura al propietario y solo lectura al grupo y otros:
    chmod 644 archivo.txt
    
  2. Para cambiar propietario:
    Si quieres cambiar el propietario de un archivo a usuario y el grupo a grupo:
    chown usuario:grupo archivo.txt
    
  3. Para ver permisos:
    Usa ls -l para listar archivos y mostrar sus permisos.
    ls -l
    

8.Conclusion

Manejar los permisos en Linux/Unix es clave para mantener todo bajo control. No es solo un tema de “quién puede hacer qué”, sino de asegurarse de que los archivos y configuraciones críticas no estén al alcance de cualquiera. Saber cómo funcionan los permisos de lectura, escritura y ejecución, y cómo asignarlos de forma correcta, es el primer paso para evitar que usuarios no autorizados tengan acceso innecesario a tu sistema.

Ajustar los permisos a configuraciones más estrictas como 600 o 700 para archivos importantes te ayuda a limitar el acceso solo a quienes realmente necesitan esos permisos. Evita a toda costa los 777 — esos permisos abiertos pueden meter a tu sistema en problemas serios. Al final del día, se trata de mantener el control y reducir las chances de que alguien haga un mal uso de tus archivos.

Así que, ya sabes: define bien quién tiene acceso, qué puede hacer, y mantén tu sistema tan seguro como tus configuraciones de permisos te lo permitan.

Ejercicios de Gestión de Permisos en Linux/Unix

  • Verificar permisos de un archivo:
    • Usa el comando ls -l para mostrar los permisos de un archivo específico (por ejemplo, archivo.txt).
  • Cambiar permisos a lectura y escritura para el propietario:
    • Usa chmod para dar permisos de lectura y escritura al propietario de un archivo.
  • Agregar permisos de ejecución a un archivo:
    • Modifica los permisos de un archivo de script (por ejemplo, script.sh) para que sea ejecutable, pista también se utiliza chmod.
  • Quitar permisos de escritura para el grupo:
    • Usa chmod para eliminar el permiso de escritura de un archivo (por ejemplo, documento.txt) para el grupo.