Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 2

Gestionar Permisos con chmod y chown

Recommended resources

¡Hola! Continuemos con tu formación. En la lección anterior, establecimos las bases para moverte y gestionar archivos en la terminal de Linux. Ahora que sabes cómo crear y organizar tu espacio de trabajo, es hora de abordar un concepto absolutamente crítico para un pentester: el control de acceso.

En esta leción, aprenderás a configurar quién puede leer, escribir o ejecutar archivos y directorios. Dominar los comandos chmod y chown no es solo una tarea administrativa; es una habilidad de hacking fundamental. Las configuraciones de permisos incorrectas son una de las vulnerabilidades más comunes y una puerta de entrada para escalar privilegios en un sistema. Entender este mecanismo te permitirá tanto identificar estas debilidades en un objetivo como asegurar los archivos y herramientas que despliegues en un sistema comprometido.

El Modelo de Seguridad de Linux: Propietarios y Permisos

Linux es, por diseño, un sistema operativo multiusuario. Para evitar que un usuario pueda acceder o modificar los archivos de otro, implementa un modelo de seguridad basado en dos conceptos clave: la propiedad y los permisos.

  1. Propiedad (Ownership): Cada archivo y directorio pertenece a un usuario (el propietario) y a un grupo.
  2. Permisos (Permissions): Se definen tres niveles de acceso para cada archivo:
    • Lo que puede hacer el propietario (user).
    • Lo que pueden hacer los miembros del grupo (group).
    • Lo que pueden hacer todos los demás (others).

Para cada uno de estos niveles, se pueden conceder tres tipos de permisos:

  • Lectura (r - read): Ver el contenido de un archivo o listar el contenido de un directorio.
  • Escritura (w - write): Modificar un archivo, o crear/eliminar/renombrar archivos dentro de un directorio.
  • Ejecución (x - execute): Ejecutar un archivo (como un script o programa) o acceder a un directorio (usando cd).

Esta "chuleta" visual resume muy bien estos conceptos. Presta especial atención a las secciones "Basic Permissions" y "Types & Ownership".

Esta chuleta resume los permisos básicos (r/w/x), los tipos de usuario (propietario, grupo, otros) y los comandos principales como `chmod` y `chown`.

Para profundizar en estos conceptos fundamentales, te pido que leas las primeras secciones del siguiente artículo. Se explica de forma muy clara cómo se estructura el sistema de permisos.

Permisos en Linux explicados fácil: guía completa de chmod, chown y sudo

Este artículo de Floopware te guiará a través de los fundamentos de los permisos en Linux de una manera muy directa.

Concéntrate en las secciones desde el inicio hasta entender los 3 niveles de usuarios. Luego, estudia detenidamente la sección "Cómo ver permisos en Linux" para aprender a interpretar la salida del comando ls -l, que es algo que usarás constantemente.


Modificando Permisos con chmod

El comando chmod (change mode) es la herramienta que utilizarás para cambiar los permisos de un archivo o directorio. Puedes usarlo de dos maneras: modo simbólico y modo numérico.

1. Modo Simbólico: Es más intuitivo. Usas letras para especificar a quién (u, g, o, a para todos), qué operación hacer (+ para añadir, - para quitar, = para establecer) y qué permiso (r, w, x).

  • chmod u+x mi_script.sh : Añade permiso de ejecución para el usuario.
  • chmod g-w archivo_confidencial.txt : Quita el permiso de escritura para el grupo.
  • chmod o=r archivo_publico.txt: Establece los permisos para "otros" a solo lectura.

2. Modo Numérico (Octal): Es más rápido y muy común en guías y scripts. A cada permiso se le asigna un valor numérico:

  • r (lectura) = 4
  • w (escritura) = 2
  • x (ejecución) = 1

Sumas los valores para cada nivel (propietario, grupo, otros) para obtener un número de 3 dígitos.

Esta tabla muestra la correspondencia entre el número octal (0-7), su representación binaria y los permisos de lectura (r), escritura (w) y ejecución (x) que representa.

Por ejemplo:

  • chmod 755 mi_directorio:
    • Propietario: 7 (4+2+1) -> rwx
    • Grupo: 5 (4+1) -> r-x
    • Otros: 5 (4+1) -> r-x
      (Permisos típicos para directorios y scripts ejecutables).
  • chmod 644 mi_archivo.txt:
    • Propietario: 6 (4+2) -> rw-
    • Grupo: 4 -> r--
    • Otros: 4 -> r--
      (Permisos típicos para archivos de texto normales).

Ahora, vuelve al artículo anterior para ver en detalle cómo funciona chmod.

Permisos en Linux explicados fácil: guía completa de chmod, chown y sudo

Continuamos con el mismo recurso para aprender a aplicar los conceptos.

Lee la sección "Qué es chmod", prestando atención a los ejemplos de ambos modos, simbólico y numérico.


Cambiando la Propiedad con chown

Mientras que chmod ajusta qué se puede hacer con un archivo, chown (change owner) cambia quién es el dueño. Esto es crucial cuando necesitas transferir el control de un archivo a otro usuario o servicio (por ejemplo, al usuario www-data para que un servidor web pueda acceder a él).

La sintaxis más común y recomendada es:
chown usuario:grupo nombre_del_archivo

Por ejemplo, para que el archivo config.php pertenezca al usuario www-data y al grupo www-data:
sudo chown www-data:www-data config.php

Nota el uso de sudo. Como estás cambiando la propiedad de un archivo, a menudo necesitarás privilegios de superusuario para hacerlo, algo que exploraremos más adelante.

Para entender mejor chown, vamos a la última lectura de esta lección.

Permisos en Linux explicados fácil: guía completa de chmod, chown y sudo

Finalizaremos con los conceptos de propiedad y algunos consejos de seguridad.

Lee la sección "Qué es chown" para entender su funcionamiento. Después, es muy importante que leas la sección sobre el error de usar chmod 777. Como pentester, buscar archivos con permisos 777 es una de las primeras cosas que harás en un sistema, ya que indica una configuración de seguridad muy pobre.


Demostración Práctica

La teoría es importante, pero ver estos comandos en acción es la mejor manera de consolidar tu conocimiento. El siguiente video muestra un escenario práctico donde se gestionan los permisos para diferentes usuarios y grupos.

Permisos por usuario y grupos en Ubuntu 22.04 | Curso GNU/Linux | N° 12

Este video del canal Software Lion demuestra de manera práctica cómo funcionan los permisos en un escenario con múltiples usuarios.

Primero, mira cómo se interpretan los permisos con ls -l en esta sección. A continuación, observa cómo se usa chown para cambiar el propietario y el grupo de un archivo en este ejemplo. Finalmente, presta mucha atención a la demostración de chmod con notación numérica para dar permisos de escritura al grupo, y cómo se comprueba el resultado.


✏️ Ejercicio Práctico

Pongamos en práctica lo aprendido. Vas a simular dos situaciones muy comunes en pentesting: preparar un script de explotación y restringir el acceso a un archivo con información sensible.

Abre tu terminal y sigue los pasos:

  1. Preparar un script:

    • Crea un archivo vacío llamado exploit.sh: touch exploit.sh
    • Mira sus permisos por defecto: ls -l exploit.sh. Notarás que no tiene permiso de ejecución (x).
    • Intenta "ejecutarlo": ./exploit.sh. Recibirás un error de "Permission denied".
    • Ahora, dale permisos de ejecución solo a tu usuario. Usa el modo numérico. El permiso rwx para ti (7) y ningún permiso para los demás (00) es una buena práctica.
      chmod 700 exploit.sh
      
    • Verifica los permisos de nuevo con ls -l exploit.sh. Verás que ahora aparece la x y los permisos son rwx------.
  2. Asegurar un archivo sensible:

    • Imagina que has encontrado un archivo con contraseñas, pass.txt, que es legible por todos. Simulémoslo:
      echo "admin:password123" > pass.txt
      sudo chmod 644 pass.txt 
      ls -l pass.txt
      
      Verás que tiene permisos rw-r--r--. Cualquier usuario en el sistema podría leerlo.
    • Tu objetivo es restringir el acceso para que solo el propietario (en este caso, tú) pueda leerlo y escribirlo.
      chmod 600 pass.txt
      
    • Verifica de nuevo con ls -l pass.txt. Los permisos ahora deberían ser rw-------, mucho más seguros.
  3. Cambiar propiedad (simulación):

    • Ahora, imagina que necesitas que este archivo pertenezca al administrador del sistema (root).
      sudo chown root:root pass.txt
      
      Introduce tu contraseña si te la pide.
    • Verifica por última vez con ls -l pass.txt. Verás que el propietario y el grupo ahora son root. Si intentaras editarlo (nano pass.txt), te daría un error de permisos, porque ya no eres el dueño.

Conclusión

¡Excelente trabajo! Hoy has dominado una de las piedras angulares de la seguridad en Linux. Saber manipular la propiedad y los permisos de los archivos es indispensable para moverte con sigilo y eficacia en un sistema objetivo.

Puntos clave:

  • Linux controla el acceso mediante propietarios (usuario, grupo) y permisos (r, w, x).
  • El comando ls -l es tu herramienta para inspeccionar los permisos y la propiedad actuales.
  • chmod modifica los permisos, ya sea en modo simbólico (ej. u+x) o numérico (ej. 755).
  • chown cambia el propietario y el grupo de un archivo (ej. chown user:group file).
  • Desde la perspectiva de un pentester, los permisos mal configurados (como 777 o archivos sensibles legibles por todos) son vulnerabilidades que debes buscar activamente.

En la próxima lección, "Filtrar y buscar información en archivos usando grep, pipes y redirecciones", construiremos sobre lo que has aprendido. Ahora que sabes cómo navegar y controlar archivos, te enseñaré a buscar eficientemente información valiosa dentro de ellos, como contraseñas, claves de API o datos de configuración, una tarea esencial en la fase de reconocimiento y post-explotación.