Bienvenidos a esta Guía Rápida de Linux para Hackers #8 Arquitectura de Directorios y Sistema de Archivos. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

Índice

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Lista: Lo que aprenderás en este artículo

  1. Estructura de Directorios en Linux:
    • Conceptos básicos de la jerarquía de directorios en Linux y su comparación con Windows.
    • Propósito y características de los directorios principales como /, /home, /etc, y otros.
  2. Estándar de Jerarquía del Sistema de Archivos (FHS):
    • Importancia y objetivos del estándar FHS.
    • Cómo FHS garantiza la compatibilidad y organización en las distribuciones Linux.
  3. Tipos de Archivos en Linux:
    • Archivos generales, de directorio y dispositivos.
    • Cómo se diferencian de los sistemas Windows.
  4. Comandos básicos relacionados con directorios:
    • Uso de cd, mkdir, pwd, y ls para navegar y gestionar directorios.
  5. Variables de entorno:
    • Qué son y cómo afectan a programas y procesos en Linux.
    • Variables comunes como $PATH, $USER, y $HOME.
  6. Sistema de Archivos Linux:
    • Estructura jerárquica y capas: lógica, virtual y física.
    • Principales sistemas de archivos (ext4, XFS, btrfs, etc.) y sus características.
  7. Conceptos avanzados de hacking y seguridad:
    • Uso de la estructura de directorios para escalada de privilegios y persistencia.
    • Manipulación de archivos sensibles y eliminación de rastros.

Directorios:

Aquí también tenemos que hacer un pequeño avance sobre la estructura de directorios de Linux porque si no puede que no se entienda lo que vamos a hablar sobre la variable $PATH.

En Unix la estructura de directorios es en forma de árbol similar a la de Windows . Dado que la estructura de directorios se organiza como las ramas de un árbol para localizar un punto cualquiera hay que utilizar cada uno de los directorios que conducen a ese punto desde el directorio raíz.

Nosotros lo llamaremos camino y en Linux se le suele llamar path. Se empieza en el directorio raíz representado por ‘/’ y se avanza por las ramas de ese árbol separando cada identificador por un nuevo carácter ‘/’. De esta forma ‘/usr/local/bin’ indica un lugar concreto en el árbol de directorios.

Aprovechando que estamos hablando de directorios mencionaremos que hay directorios con significado especial. Está el directorio raíz ‘/’ que ya hemos mencionado. Está el directorio ‘home’ que es el punto donde el sistema nos sitúa para trabajar cuando entramos en él.

Recordemos que en Linux normalmente no disponemos de todo el sistema para nosotros solos. Luego podemos cambiar de directorio de trabajo. El directorio de trabajo actual se representa como directorio ‘.’, El directorio anterior o directorio padre de este directorio se representa por ‘..’. Los comandos ‘cd’, ‘mkdir’ y ‘pwd’ sirven para cambiar de directorio actual, crear un directorio y averiguar en que directorio nos encontramos actualmente.

Comprender los Archivos y los Directorios

Los archivos se utilizan para almacenar datos tales como texto, gráficos y programas. Los directorios (También conocidos como «carpetas») se utilizan para proporcionar una estructura de organización jerárquica. Esta estructura es algo diferente a la que puedes estar acostumbrado si previamente trabajaste en los sistemas de Windows.

En un sistema Windows, el nivel superior de la estructura de directorios se llama Este Equipo. Cada dispositivo físico (disco duro, unidad de DVD, unidad USB, unidad de red, etc.) aparece en Este Equipo, cada uno asignado a una letra de unidad como C: o D:. Una representación visual de esta estructura:

Desde windows se ve asi:

La arquitectura de directorios en Linux: una guía detallada para hackers

La arquitectura de directorios de Linux es una de las características más distintivas y poderosas de los sistemas operativos basados en Unix.

Para los hackers, comprender esta arquitectura no solo es esencial para navegar y manipular el sistema de manera eficiente, sino también para realizar tareas avanzadas como la búsqueda de vulnerabilidades, la escalada de privilegios y la evasión de auditorías de seguridad. Este artículo ofrecerá una visión completa de la arquitectura de directorios de Linux y explicará por qué es fundamental para cualquier hacker.

¿Qué es la arquitectura de directorios en Linux?

La arquitectura de directorios en Linux es una estructura jerárquica, donde todos los archivos y directorios se organizan de manera ordenada bajo un único directorio raíz llamado /. Desde el directorio raíz, los diferentes directorios y subdirectorios se despliegan en una estructura en forma de árbol, con rutas absolutas y relativas que permiten acceder a los archivos.

A diferencia de otros sistemas operativos, en Linux todo es tratado como un archivo, incluidos dispositivos de hardware, lo que hace que esta estructura sea extremadamente flexible y poderosa.

La arquitectura de directorios sigue el estándar de jerarquía del sistema de archivos de Linux (FHS, por sus siglas en inglés), que define qué directorios deben existir y cuál es su propósito.

Tipos de archivos en el sistema Linux. 

  1.  Archivos generales : también llamados archivos ordinarios. Pueden ser imágenes, videos, programas o archivos de texto simples. Estos tipos de archivos pueden estar en formato ASCII o binario. Es el archivo más utilizado en el sistema Linux.
  2. Archivos de directorio : estos tipos de archivos son un almacén para otros tipos de archivos. Puede ser un archivo de directorio dentro de un directorio (subdirectorio).
  3. Archivos de dispositivos: en un sistema operativo similar a Windows, los dispositivos como CD-ROM y discos duros se representan con letras de unidad como F: G: H, mientras que en el sistema Linux los dispositivos se representan como archivos. Por ejemplo, /dev/sda1, /dev/sda2, etc.

Sabemos que en un sistema operativo tipo Windows, los archivos se almacenan en diferentes carpetas en diferentes unidades de datos como C: D: E: mientras que en el sistema operativo Linux/Unix los archivos se almacenan en una estructura similar a un árbol que comienza con el directorio raíz como se muestra en el siguiente diagrama. 

NOTA: Hay directorios que pueden cambiar según la distribución que sea. Las de Linux se parecen bastante, pero en general tienen lo mismo.

Igual que Windows, la estructura de directorios de Linux tiene un nivel superior, sin embargo no se llama Este Equipo, sino directorio raíz y su símbolo es el carácter / . También, en Linux no hay unidades; cada dispositivo físico es accesible bajo un directorio, no una letra de unidad. Una representación visual de una estructura de directorios típica de Linux:

La mayoría de los usuarios de Linux denominan esta estructura de directorios el sistema de archivos. Para ver el sistema de archivos raíz, introduce ls / y Observa que hay muchos directorios descriptivos incluyendo /boot, que contiene los archivos para arrancar la computadora.

Comandos

Un comando es generalmente un fichero ejecutable localizado en alguna parte de nuestro sistema. Existe una variable llamada $PATH que contiene una lista de caminos de busqueda para los comandos todos ellos separados por ‘:’. Compruebe el valor de su variable $PATH.

El Directorio Path

Usando el gráfico en la sección anterior como un punto de referencia, verás que hay un directorio llamado sound bajo el directorio llamado etc, que se encuentra bajo el directorio /. Una manera más fácil de decir esto es refiriéndose a la ruta.

En las distribuciones modernas de Linux, el directorio /etc por lo general contiene los archivos de configuración estática como lo define por el Estándar de Jerarquía de Archivos (o «FHS», del inglés «Files Hierarchy Standard»).

Una ruta de acceso te permite especificar la ubicación exacta de un directorio. Para el directorio sound la ruta de acceso sería /etc/sound. El primer carácter / representa el directorio root (o «raíz» en español), mientras que cada siguiente carácter / se utiliza para separar los nombres de directorio.

Este tipo de ruta se llama la ruta absoluta (o «aboslute path» en inglés). Con una ruta absoluta, siempre proporcionas direcciones a un directorio (o un archivo) a partir de la parte superior de la estructura de directorios, el directorio root. Más adelante en este curso cubriremos un tipo diferente de la ruta llamada la ruta relativa (o «relative path» en inglés). La siguiente gráfica muestra tres rutas absolutas adicionales:

Si un comando no está localizado en ninguno de esos caminos deberá ser referenciado indicando el camino completo ya que de otra forma no podrá ser referenciado. Si quiere saber dónde se encuentra un ejecutable use el comando which. Este comando buscará en los caminos contenidos en la variable $PATH hasta que encuentre el comando y entonces mostrará el camino completo que conduce al comando. Puede ocurrir que un comando se encuentre duplicado y que los dos sitios donde se encuentre figuren en el $PATH.

En ese caso se ejecutará el comando que se encuentre en el primer camino referenciado en el $PATH. Igualmente el comando which solo mostrará el primer camino referenciado en el $PATH. Estamos usando un comando llamado echo para mostrar valores. Vamos a localizarlo.

Echo está situado en uno de los caminos contenidos en $PATH. En resumidas cuentas $PATH es una variable que usa el intérprete de comandos para localizar los comandos. En otra lección siguiente hablaremos de ‘man’.

Es un comando que sirve para consultar el manual en linea de Linux. Pues bien existe una variable llamada $MANPATH que contiene la lista de los caminos donde el comando ‘man’ debe buscar las páginas del manual.

La variable $MANPATH será usada por el comando ‘man’ y quizás algún otro. La variable $PATH será usada por la shell y quizás por algún otro comando como por ejemplo ‘which’ del cual acabamos de hablar.

Somos conscientes de que no estamos explicando gran cosa ahora, pero son conceptos muy elementales que vamos a utilizar antes de explicar en profundidad todo el sistema de ficheros de Linux.

Más adelante también hablaremos más detenidamente sobre las variables de entorno. Estamos dando unos pequeños esbozos sobre algunas cuestiones porque hay mucha interrelación de unos conceptos con otros y resulta imposible abordar nada en profundidad al principio.

El comando which

El comando which de Linux se utiliza para localizar los archivos ejecutables o la ubicación de un programa en el sistema de archivos. Muestra la ruta donde se almacena el archivo o comando especificado.

Si tiene curiosidad por saber dónde se almacena el programa especificado, which le ayudará a identificar la ruta; es bastante sencillo de usar.

Sintaxis:

  which <nombre_del_programa>  

El comando anterior mostrará la ruta del nombre de archivo o comando especificado.

Opciones

El comando which ofrece una única opción, la opción ‘-a’. Se utiliza para mostrar todas las rutas del comando especificado. En algunos casos, nuestra máquina contiene dos rutas diferentes para el mismo programa. Por ejemplo, puede ser “/usr/bin/program” o “/usr/local/bin/program”. La opción ‘-a’ mostrará ambas rutas para el comando especificado.

Sintaxis:

 which -a <nombre_del_programa>  

Exploremos varios usos de este comando para comprenderlo mejor:

¿Cómo utilizar qué comando?

Para mostrar la ruta de cualquier archivo ejecutable, como programas y comandos, simplemente ejecute el comando which seguido del nombre del programa.

Por ejemplo, para mostrar la ruta de los archivos ejecutables del node, ejecute el comando de la siguiente manera:

 which node

Se mostrará la ruta de los archivos ejecutables del node. De manera similar, para los archivos ejecutables de Java, ejecute el comando de la siguiente manera:

Which java

Mostrará la ruta de los archivos ejecutables de Java.

Este comando solo muestra la ruta de los archivos ejecutables, por lo que ejecuta comandos solo con los argumentos disponibles en la máquina. Si pasamos algún argumento ilegal (que nuestra máquina no contiene), no arrojará ningún resultado.

Which con múltiples argumentos

Podemos mostrar varias rutas de archivos ejecutables proporcionando varios argumentos a la vez en un solo comando. Para pasar los múltiples argumentos en un comando, sepárelos con un espacio. Ejecute el comando de la siguiente manera:

 witch <comando1> <comando2> <comando3> …  

Por ejemplo, para mostrar la ruta del comando node, cat… ejecute el comando de la siguiente manera:

Estado de salida de which

El usuario de Linux tiene un estado de salida o es ejecutado por el script de shell. Si el estado de salida es 0, significa que el comando se ejecutó correctamente sin ningún error. Si el estado de salida es un número distinto de cero (es decir, de 1 a 255), significa que el comando tuvo un error y fue un fracaso.

El comando which tiene los siguientes tres estados de salida:

0: Si el estado de salida es 0, significa que se encontraron todos los argumentos y son ejecutables.

1: Si el estado de salida es 1, significa que uno o más argumentos no existen o no son ejecutables.

2: Si el estado de salida es 2, significa que se especificó una opción no válida.

La importancia de la arquitectura de directorios para los hackers

Escalada de privilegios

Uno de los objetivos más comunes para un hacker es lograr la escalada de privilegios, es decir, elevar sus permisos en el sistema para obtener control administrativo. Entender cómo se estructuran los archivos y directorios en Linux es fundamental para este proceso.

  • /etc/passwd y /etc/shadow: Estos archivos contienen información sobre los usuarios y contraseñas en el sistema. En versiones antiguas de Unix, las contraseñas se almacenaban directamente en /etc/passwd, lo que permitía a los atacantes obtenerlas fácilmente. Hoy en día, están encriptadas y almacenadas en /etc/shadow, que solo es accesible para root.
  • /bin/sbin y /usr/sbin: Los atacantes pueden intentar encontrar binarios SUID (Set User ID) que permitan la ejecución con privilegios elevados. Estos binarios pueden ser aprovechados para realizar acciones como root.
  • /proc y /sys: Estos directorios contienen datos sobre el sistema y los procesos en ejecución. Los atacantes pueden utilizarlos para recopilar información útil sobre la configuración del sistema y las vulnerabilidades potenciales.

Persistencia

Un hacker que haya comprometido un sistema intentará mantener el acceso durante el mayor tiempo posible sin ser detectado. Para ello, conocer la arquitectura de directorios de Linux es esencial.

  • /var: Los archivos de log son fundamentales para que los administradores detecten actividades sospechosas. Un atacante puede modificar o eliminar logs en /var/log para ocultar su rastro.
  • /etc/rc.local y /etc/init.d/: Estos archivos se utilizan para ejecutar scripts y programas automáticamente al iniciar el sistema. Un atacante puede modificar estos archivos para garantizar que su malware se ejecute cada vez que el sistema se reinicie.

Evasión de detección

Para evitar ser detectado, un atacante puede emplear diversas técnicas relacionadas con la manipulación de archivos y directorios en Linux.

  • Ocultamiento de archivos: Los atacantes pueden crear archivos ocultos (precedidos por un punto) en directorios comunes, como /tmp o /home/usuario, para evitar ser encontrados fácilmente.
  • Modificación de binarios del sistema: Utilizando técnicas como “rootkits”, los atacantes pueden reemplazar binarios críticos del sistema en /bin, /sbin o /usr/sbin para que no reporten correctamente la actividad del atacante. Por ejemplo, un ps modificado puede ocultar procesos maliciosos.

Ejemplos prácticos para hackers

Acceder a contraseñas encriptadas: Un atacante que consiga acceso al archivo /etc/shadow puede intentar descifrar las contraseñas utilizando herramientas como John the Ripper o hashcat. Esto permite obtener acceso a cuentas de usuario o incluso privilegios de root si se consigue descifrar la contraseña administrativa.

Uso de binarios SUID: Imagina que un hacker encuentra un archivo binario con el bit SUID activado, por ejemplo, /usr/bin/passwd, que permite a los usuarios cambiar su contraseña. Si este binario tiene una vulnerabilidad, un atacante podría explotarla para ejecutar comandos con privilegios de root.

Manipulación de logs: Supongamos que un atacante desea ocultar su presencia. Después de haber realizado un ataque, puede dirigirse a /var/log/auth.log y modificar o eliminar las entradas que registran su actividad utilizando herramientas como nano o vim.

¿Qué es un entorno informático?

El entorno informático es la plataforma (Plataforma = Sistema operativo + Procesador) donde un usuario puede ejecutar programas.

¿Qué es una variable?

En informática, una variable es un lugar donde se almacena un valor que puede ser un nombre de archivotextonúmero o cualquier otro dato . Generalmente se hace referencia a ella con su nombre simbólico, que se le asigna durante su creación. El valor almacenado de esta manera se puede visualizar, eliminar, editar y volver a guardar.

Las variables juegan un papel importante en la programación informática porque permiten a los programadores escribir programas flexibles. Como están relacionadas con el sistema operativo en el que trabajamos, es importante conocer algunas de ellas y cómo podemos influir en ellas.

Las variables de entorno son uno de los elementos clave en el funcionamiento de los sistemas operativos basados en UNIX, como Linux. No solo son utilizadas por el sistema operativo para gestionar diversas configuraciones y comportamientos, sino que también son fundamentales para cualquier persona que esté desarrollando scripts o ejecutando programas en un entorno de terminal. En este artículo vamos a profundizar en lo que son, cómo se usan, y cómo podemos manipularlas para sacarle el máximo provecho, tanto en situaciones comunes como en contextos más avanzados.

¿Qué son las variables de entorno?

Las variables de entorno son valores dinámicos que afectan a los procesos o programas de una computadora. Existen en todos los sistemas operativos, pero los tipos pueden variar. Las variables de entorno se pueden crear, editar, guardar y eliminar, y brindan información sobre el comportamiento del sistema. Las variables de entorno pueden cambiar la forma en que se comporta un programa.

Por ejemplo, la variable de entorno $LANG almacena el valor del idioma que entiende el usuario. La aplicación lee este valor de modo que a un usuario chino se le muestra una interfaz en mandarín, mientras que a un usuario estadounidense se le muestra una interfaz en inglés.

Estudiemos algunas variables de entorno comunes:

VariableDescripción
PATHEsta variable contiene una lista separada por dos puntos (:) de directorios en los que su sistema busca archivos ejecutables. Cuando se introduce un comando en la terminal, el shell busca el comando en diferentes directorios mencionados en la variable $PATH. Si se encuentra el comando, se ejecuta. De lo contrario, devuelve un error “comando no encontrado”.
USEREl nombre del usuario actual.
HOMELa ruta del directorio personal del usuario.
EDITORRuta al programa que edita el contenido de los archivos
UIDIdentificación única del usuario
TERMEmulador de terminal predeterminado
SHELLLa shell que se está utilizando (como Bash o Zsh).
LANGEspecifica la configuración regional y el idioma que utiliza el sistema.

Tipos de Variables de Entorno

Variables de Usuario

Son variables definidas por el usuario actual y solo tienen efecto dentro de la sesión o shell en la que fueron creadas. Una vez que la sesión termina, estas variables se pierden, a menos que se definan de manera persistente.

Variables Globales

Estas son variables que afectan a todos los usuarios y procesos del sistema. Generalmente se definen en archivos de configuración del sistema como /etc/environment/etc/profile, o en archivos de configuración específicos de la shell como .bashrc o .bash_profile.

Acceder a valores de variables

Para determinar el valor de una variable, utilice el comando

echo $VARIABLE

Las variables distinguen entre mayúsculas y minúsculas. Asegúrese de escribir el nombre de la variable con las mayúsculas y minúsculas correctas, de lo contrario, es posible que no obtenga los resultados deseados.

ENV

El comando ‘ env’ muestra todas las variables de entorno. El comando env o printenv puede mostrarte todas las variables de entorno que están configuradas en tu sesión actual:

Definir una variable temporalmente

Para definir una variable de entorno en la sesión actual de la shell, puedes usar el siguiente comando:

El comando env tiene más opciones que puedes explorar

export NOMBRE_VARIABLE=”valor”

Esta variable solo existirá mientras dure la sesión actual de la terminal. Si cierras la terminal, la variable desaparecerá.

Establecer nuevas variables de entorno

Puede crear su propia variable definida por el usuario, con sintaxis. Empezaremos hablando de las variables sin profundizar ahora en ello. Una variable solo es un elemento que tiene un nombre y que es capaz de guardar un valor. Para definir una variable basta poner su nombre un igual y su valor. (Ojo no dejar espacios).

NOMBRE_VARIABLE= valor_variable

Nuevamente, tenga en cuenta que las variables distinguen entre mayúsculas y minúsculas y, normalmente, se crean en mayúsculas.

En Unix y Linux las variables del sistema se llaman variables de entorno. Para consultar el valor de una variable se utiliza el nombre de la variable precedido por ‘$’.

Definir una variable de forma persistente

Si quieres que la variable de entorno se mantenga disponible en futuras sesiones, debes agregarla a los archivos de configuración de la shell. Para Bash, puedes editar el archivo .bashrc (para sesiones interactivas) o .bash_profile (para sesiones de login). Por ejemplo:

Eliminación de variables

La siguiente sintaxis se puede utilizar para eliminar una variable del sistema.

Esto solo eliminará la variable de la sesión actual, pero no de los archivos de configuración donde pueda estar definida de forma persistente.

Para ver todas las variables y sus valores se utiliza el comando set.

Para hacer la variable exportable se usa el comando ‘export’. Se puede hacer que una variable sea de solo lectura con el comando ‘readonly’. Este comando sin parámetros mostrará todas las variables que son de solo lectura. Pruebe estos comandos:

SET

Export

Añadir valores a variables existentes

A menudo querrás añadir un valor a una variable ya existente, como por ejemplo:

De esta manera, no sobreescribes el valor actual, sino que lo expandes añadiendo nuevos directorios al final.

Readonly

También  te recomendamos consultar las páginas man:

 man readonly

Resumen de Variables de entorno:

Las variables de entorno gobiernan el comportamiento de los programas en su sistema operativo .

DominioDescripción
echo $VARIABLEPara mostrar el valor de una variable
envMuestra todas las variables de entorno
NOMBRE_VARIABLE= valor_variableCrear una nueva variable
unsetEliminar una variable
export Variable=valuePara establecer el valor de una variable de entorno

La terminal tiene una configuración con diferentes valores, que se pueden acceder con las variables de entorno. Estas son muy importantes para la configuración general del sistema. Podemos guardar alias para que se queden de manera permanente con esto.

Variables de Entorno para Hackers

Para los hackers y usuarios avanzados de Linux, las variables de entorno pueden ser una herramienta poderosa. Desde la configuración del entorno para pruebas de penetración hasta la modificación del comportamiento de exploits, el dominio de estas variables te da un mayor control sobre el sistema. A continuación, algunas situaciones específicas en las que podrías encontrarlas útiles:

PATH y Escalada de Privilegios

Uno de los trucos clásicos es manipular la variable PATH para que apunte a un ejecutable malicioso que tú controlas. Si logras que un usuario con mayores privilegios (como root) ejecute un comando sin especificar su ruta completa, podrías hacer que en lugar de ejecutar el comando legítimo, ejecute tu versión maliciosa.

Por ejemplo, supongamos que has comprometido un servidor y tienes acceso limitado. Si tienes la capacidad de modificar el PATH de un administrador, podrías hacer lo siguiente:

export PATH=/ruta/a/tu/script_malicioso:$PATH

Ahora, si el administrador ejecuta un comando como ls, en lugar de ejecutar el ls del sistema, se ejecutará tu versión.

Manipulación de SHELL

Algunos exploits se basan en la manipulación de la variable SHELL para obtener acceso a una shell no restringida. Por ejemplo, si una aplicación vulnerable ejecuta comandos a través de sh, puedes intentar cambiar la variable SHELL para que apunte a un binario como /bin/bash o incluso una shell personalizada que hayas creado con fines maliciosos.

export SHELL=/bin/bash

Variables de Entorno en Explotación de Aplicaciones Web

En el contexto de aplicaciones web, las variables de entorno son útiles en situaciones como la explotación de vulnerabilidades de inyección de código o de archivo. En configuraciones incorrectas, podrías aprovechar variables como HTTP_PROXYHTTPS_PROXY y otras que controlan el tráfico saliente de las aplicaciones para redirigir ese tráfico a servidores bajo tu control.

Localización de Archivos Importantes

Los atacantes a menudo utilizan variables de entorno para localizar archivos sensibles en un sistema comprometido. Si tienes acceso a una shell restringida o a un contenedor, inspeccionar variables como HOME y LOGNAME te da pistas sobre la configuración del entorno del usuario, lo que puede ser el primer paso para elevar privilegios o moverte lateralmente en un sistema.

echo $HOME
echo $LOGNAME

Rutas y configuraciones

En el mundo de Linux, el control sobre el sistema, la personalización de su funcionamiento, y la forma en que interactúa con los usuarios y aplicaciones dependen fuertemente de cómo manejamos las rutas y configuraciones.

Entender estas rutas y los archivos que gobiernan la configuración de tu sistema es esencial para cualquier usuario avanzado o administrador.

En este artículo exploraremos en profundidad las rutas más comunes, los archivos de configuración clave y las mejores prácticas para modificar estas configuraciones sin arriesgar la estabilidad del sistema.

Estructura básica de directorios en Linux

Una de las primeras cosas que debes entender es la estructura de directorios en Linux. Todo en Linux se organiza en forma de un árbol de directorios. A diferencia de Windows, donde las unidades están separadas, Linux usa un único directorio raíz (/) a partir del cual todo lo demás está montado.

Aquí te explico las rutas más importantes:

La barra inclinada “/” – Directorio raíz

Toda la estructura de directorios en los sistemas basados en UNIX parte de un directorio raíz, también llamado directorio root, y que se simboliza por una barra inclinada o /. De este directorio, es desde donde nacen todo el resto de directorios, independientemente que estén almacenados físicamente en discos o unidades separadas.

El directorio raíz es la base del sistema de archivos. Todas las demás rutas cuelgan de este directorio. Aquí es donde comienza todo. Nunca deberías guardar archivos de usuario directamente en /.

Cualquier dirección de archivo o carpeta en Linux empieza por el directorio raíz o /, seguido de todos los directorios y subdirectorios que lo contienen, separados cada uno de ellos por /. A continuación se conocerá con más en detalle a todos los directorios principales que parten del directorio raíz, junto con sus subdirectorios más importantes y los archivos que suelen contener.

Con el comando “ls” dentro de la consola, se puede listar directorios, pero para llegar al directorio raíz, hay que utilizar el parámetro “cd /”

/bin

El directorio /bin es un directorio estático y es donde se almacenan todos los binarios necesarios para garantizar las funciones básicas a nivel de usuario. Solo almacena los ejecutables de usuario, ya que los binarios necesarios para tareas administrativas gestionadas por el usuario root o superusuario del sistema se encuentran en el directorio /sbin.

Incluye también los binarios que permiten la ejecución de varias utilidades estándar de la terminal de Linux, concretamente cat, cd, cp, echo, grep, gzip, kill, ls, mv, rm, ping, su, ps, tar y vi.

/boot

Este directorio contiene todo lo relacionado con el proceso de arranque del sistema, incluyendo el núcleo (kernel) y el gestor de arranque, como GRUB. Es crítico para que el sistema inicie.

Es un directorio estático e incluye todos los ejecutables y archivos que son necesarios en el proceso de arranque del sistema, y que deberán ser utilizados antes que el kernel empiece a dar las órdenes de ejecución de los diferentes módulos del sistema. En algunas distribuciones, es común que ese directorio se almacene en su propia partición separada del resto.

Esto suele darse sobre todo en el caso de de que utilicen LVM (Logical Volume Manager) por defecto, ya que tradicionalmente el gestor de arranque GRUB (en versiones anteriores a la 2) no podía arrancar desde LVM, por lo que se requería que estuviera en una partición separada.

De hecho, si en una instalación normal de Ubuntu o Debian optas por utilizar LVM, verás que el instalador ya te genera un esquema de particiones con el directorio boot en una partición aparte.

En estos casos, en el momento de instalar el sistema es importante prever bien el espacio que le vayas a dar a la partición, ya que a la larga, con la acumulación de diferentes actualizaciones del Kernel, es común que se quede sin espacio. Si esto sucede, puedes tener problemas a la hora de instalar futuras actualizaciones del núcleo, y debas hacer limpieza de versiones antiguas del kernel.

/dev

Aquí es donde Linux trata a los dispositivos como archivos. Contiene archivos de dispositivo que representan componentes del hardware (discos, USB, etc.). Por ejemplo, /dev/sda representa el primer disco duro.

Este directorio incluye todos los dispositivos de almacenamiento, en forma de archivos, conectados al sistema, es decir, cualquier disco duro conectado, partición, memoria USB, o CDROM conectado al sistema y que el sistema pueda entender como un volumen lógico de almacenamiento. Siendo esto así, verán que la ruta en la que se encuentra cualquier volumen (partición o dispositivo externo) conectado al sistema siempre empieza por /dev.

Este es el directorio que contiene, por decirlo de algún modo, la información de cada uno de los volúmenes, a diferencia del directorio /media que lo que contiene son solo los puntos de montaje, pero no la  información real de estos volúmenes. Para ver esto en la práctica, si se abre una ventana de terminal y se ejecuta el comando “fdisk –l” (como super usuario), se visualizará la estructura de particiones de tu sistema. Eso en cuanto a particiones. Si se trata de un dispositivo externo, el volumen estará igualmente dentro de /dev, pero en este caso varía el nombre que el sistema le asigna a dicho volumen.

/etc

Este es uno de los directorios más importantes para la administración del sistema. Contiene la mayoría de los archivos de configuración del sistema, como los scripts de inicio, configuraciones de red y configuraciones de programas instalados.

Es el encargado de almacenar los archivos de configuración tanto a nivel de componentes del sistema operativo en sí, como de los programas y aplicaciones instaladas a posteriori. Es un directorio que debería contener únicamente archivos de configuración, y no debería contener binarios.

Archivos de configuración del sistema: 

Archivos de configuraciónDescripción
/etc/bashrcLo utiliza el shell bash que contiene valores predeterminados y alias del sistema.
/etc/crontabUn script de shell para ejecutar comandos específicos en un intervalo de tiempo predefinido.
/etc/exportaciones Contiene información sobre el sistema de archivos disponible en la red.
/etc/fstabInformación de la unidad de disco y su punto de montaje.
/etc/grupo Es un archivo de texto para definir Información del Grupo de Seguridad.
/etc/grub.confEs el archivo de configuración del gestor de arranque grub.
/etc/init.d Script de inicio del servicio.
/etc/lilo.conf  Contiene el archivo de configuración del gestor de arranque lilo.
/etc/hostsInformación de IP y nombres de host correspondientes
/etc/hosts.permitirContiene una lista de hosts a los que se les permite acceder a servicios en la máquina local.
/etc/host.denegar Lista de hosts a los que se les ha denegado el acceso a servicios en la máquina local.
/etc/inittab Proceso INIT y su interacción en los distintos niveles de ejecución.
/etc/problemaPermite editar el mensaje previo al inicio de sesión.
/etc/modules.confContiene los archivos de configuración de los módulos del sistema.
/etc/motd Contiene el mensaje del día.
/etc/mtab Información de bloques montados actualmente.
/etc/contraseña  Contiene nombre de usuario, contraseña del sistema y usuarios en un archivo shadow.
/etc/imprimircap  Contiene información de la impresora.
/etc/perfil Valores predeterminados del shell Bash.
/etc/perfil.dContiene otros scripts, como scripts de aplicación, que se ejecutan después de iniciar sesión.
/etc/rc.d Evita la duplicación de scripts.
/etc/rc.d/init.d Ejecutar script de inicialización de nivel.
/etc/resolv.confDNS utilizado por el sistema.
/etc/seguridad Contiene el nombre de las terminales donde es posible iniciar sesión como root.
/etc/skelScript que inicia el nuevo directorio de inicio del usuario.
/etc/termcapUn archivo ASCII que define el comportamiento de los diferentes tipos de terminal.
/etc/X11El árbol de directorios contiene todos los archivos de configuración para el sistema X-window.

/home

Es el directorio de los usuarios estándar, y por lo tanto, el destinado a almacenar todos los archivos del usuario, como documentos, fotos, vídeos, música, plantillas, etc. También incluye archivos temporales de aplicaciones ejecutadas en modo usuario, que sirven para guardar las configuraciones de programas, etc. Dentro /home están los directorios personales de todos los usuarios, nombrados según el nombre de usuario utilizado.

Cada directorio de usuario contiene asimismo diferentes carpetas para ayudarlo a clasificar la información. Estas generalmente son: /Documentos, /Imágenes, /Música, /Plantillas y /Vídeos /, así como otros archivos y carpetas ocultas, que son los  encargados de guardar la información de configuraciones de las aplicaciones del usuario. Por cierto, y muy importante, todas los archivos y carpetas ocultas en Linux empiezan por un punto, seguido del nombre de la carpeta.

En muchas distribuciones es una práctica recomendada el hecho de ubicar el directorio /home es una partición separada del resto, por tal de facilitar que, en caso de reinstalar el sistema operativo, puedas mantener intacta la partición de la /home, y de este modo mantener todos los archivos personales.

El Directorio Home

En la mayoría de las distribuciones de Linux hay un directorio llamado home bajo el directorio root: /home. Bajo de este directorio /home hay un directorio para cada usuario del sistema. El nombre del directorio será el mismo que el nombre del usuario, por lo que un usuario llamado «carlos» tendría un directorio home llamado /home/carlos.

Tu directorio home es un directorio muy importante. Para empezar, cuando abres un shell automáticamente te ubicarás en tu directorio home, en donde harás la mayor parte de tu trabajo.

El directorio home es uno de los pocos directorios donde tienes el control total para crear y eliminar los archivos adicionales. La mayor parte de otros directorios en un sistema de archivos de Linux están protegidos con file permissions.

En la mayoría de las distribuciones de Linux, los únicos usuarios que pueden acceder a los archivos en tu directorio home eres tú y el administrador del sistema (el usuario root). Esto se puede cambiar utilizando los permisos de archivo.

Tu directorio tiene incluso un símbolo especial que puedes usar para representarlo: ~. Si tu directorio home es /home/sysadmin, puedes simplemente introducir ~ en la línea de comandos en lugar de /home/sysadmin. También puedes referirte al directorio home de otro usuario usando la notación ~usuario, donde usuario es el nombre de la cuenta de usuario cuyo directorio home quieres consultar. Por ejemplo, ~carlos sería igual a /home/carlos.

Ten en cuenta que una lista revela los subdirectorios contenidos en el directorio home. Cambiar directorios requiere atención al detalle. En los entornos de Linux son sensibles a mayúsculas y minúsculas. Cambiarnos al directorio Downloads requiere que la ortografía sea correcta – incluyendo la letra D mayúscula.

/lib

Incluye las bibliotecas esenciales que son necesarios para que se puedan ejecutar correctamente todos los binarios que se encuentran en los directorios /bin y /sbin, así como los módulos del propio kernel. En los sistemas operativos de 64 bits, además de /lib existe otro directorio denominado /lib64, referida a las bibliotecas para aplicaciones de 64 bits.

/media

Representa el punto de montaje de todos los volúmenes lógicos que se montan temporalmente, ya sean unidades externas USB, otras particiones de disco, etc. En la mayoría de distribuciones Linux, desde hace ya algún tiempo, cada vez que se monta una unidad externa, partición, etc.,esta se monta dentro del directorio /media y a su vez dentro de un directorio especifico dependiendo del usuario del sistema que monta el volumen.

/mnt

Es un directorio vacío que cumple funciones similares a /media, pero que actualmente no se suele utilizar, ya que la mayoría de distribuciones hacen uso de este último para los puntos de montaje temporales.

/opt

Algunos programas de terceros se instalan en /opt. Suele utilizarse para software adicional que no proviene directamente del gestor de paquetes de la distribución.

Vendría a ser como una extensión del directorio /usr, pero en este caso van todos aquellos archivos de solo lectura que son parte de programas auto-contenidos y que, por lo tanto, no siguen los estándares de almacenar los diferentes archivos dentro de los diferentes subdirectorios de /usr (que sería lo recomendable) Haciendo una analogía con Windows, vendría a ser algo como el directorio de “Archivos y Programas”, pero en este caso para determinados programas que ya vienen autocontenidos.

/proc

Este directorio contiene información de los procesos y aplicaciones que se están ejecutando en un momento determinado en el sistema, pero realmente no guarda nada como tal, ya que lo que almacena son archivos virtuales, por lo que el contenido de este directorio es nulo. Básicamente son listas de eventos del sistema operativo que se generan en el momento de acceder a ellos, y que no existen dentro del directorio como tales.

Archivos relacionados con procesos virtuales y pseudoprocesos:

Archivos relacionados con procesos virtuales y pseudoprocesosDescripciones
/proc/infocpuInformación de la CPU
/proc/sistemas de archivosMantiene información útil sobre los procesos que se están ejecutando actualmente.
/proc/interrupciones Mantiene la información sobre el número de interrupciones por IRQ.
/proc/ioportsContiene todas las direcciones de entrada y salida utilizadas por los dispositivos en el servidor
/proc/infomemInforma la información del uso de la memoria.
/proc/módulosActualmente utilizando el módulo del kernel.
/proc/montajeInformación del sistema de archivos montado.
/proc/estadísticaMuestra las estadísticas detalladas del sistema actual.
/proc/intercambios Contiene información del archivo de intercambio.

/root

Vendría a ser como el directorio /home del usuario root o superusuario del sistema. A diferencia de los otros usuarios, que se encuentran todos dentro de /home en sus respectivas subcarpetas, el directorio del usuario root está en su propia carpeta colgando directamente de la raíz del sistema. Como es de esperarse solamente el usuario root puede ver su contenido y modificarlo.

/sbin

Si hemos dicho que en /bin se almacenaban los binarios relativos a las funciones normales de usuario, /sbin hace lo mismo pero para los binarios relativos tareas propias del sistema operativo, y que solamente pueden ser gestionadas por el usuario root, tales como el arranque, tareas de restauración, reparación, etc.

/srv

Sirve para almacenar archivos y directorios relativos a servidores que puedas tener instalados dentro de tu sistema, ya sea un servidor web www, un servidor FTP, CVS, etc. Así, por ejemplo, en el caso de tener instalado un servidor web, sería buena idea tener el directorio web público dentro de /srv.

/sys

Al igual que /proc, contiene archivos virtuales que proveen información del kernel relativa a eventos del sistema operativo. Es en cierto modo una evolución de /proc, y a diferencia de este último, los archivos se distribuyen de forma jerárquica.

/tmp

Sirve para almacenar archivos temporales de todo tipo, ya sea de elementos del sistema, o también de diferentes aplicaciones a nivel de usuario. Es un directorio dispuesto para almacenar contenido de corta duración, de hecho en la gran mayoría de los casos se suele vaciar de forma automática en cada reinicio del sistema.

Aun así, no deben borrar su contenido de forma manual, puesto que puede contener archivos necesarios para ciertos programas o procesos que estén ejecutándose. Las aplicaciones programadas para almacenar archivos en este directorio deben asumir que solo serán recuperables en la sesión actual.

En este sentido, hay otro subdirectorio, /var/tmp, dispuesto igualmente para el almacenamiento de archivos temporales, pero cuyo contenido no se borra de forma automática tras el reinicio del sistema.

/usr

User System Resources sirve para almacenar todos los archivos de solo lectura y relativos a las utilidades de usuario, incluyendo todo el software instalado a través de los gestores de paquetes de cada distribución. Antiguamente /usr también contenía la carpeta particular de usuario, junto con todos sus documentos, vídeos, fotos, etc., pero más adelante se creó el directorio /home para este propósito, dejando /usr reservado para los archivos relativos a programas.

Archivos relacionados con el usuario:

Archivos relacionados con el usuarioDescripciones
/usr/bin Contiene la mayoría de los archivos ejecutables.
/usr/bin/X11 Enlace simbólico de /usr/bin.
/usr/incluir Contiene archivos estándar utilizados por el programa C.
/usr/compartirContiene archivos de texto compartibles independientes de la arquitectura.
/usr/lib Contiene archivos de objetos y bibliotecas.
/usr/sbinContiene comandos para Super Usuario, para Administración del Sistema.

/var

Aquí se guardan los datos que cambian con el tiempo, como registros del sistema (/var/log), archivos de bases de datos, colas de correo, y mucho más.

Contiene varios archivos con información del sistema, como archivos de logs, emails de los usuarios del sistema, bases de datos, información almacenada en la caché, información relativa a los paquetes de aplicaciones almacenados en /opt, etc. En cierto modo se podría decir que actúa a modo de registro del sistema.

Sistema de archivos Linux

El sistema de archivos es el corazón de cualquier sistema operativo, y en Linux, su comprensión es fundamental tanto para los administradores de sistemas como para los hackers. Un sistema de archivos es el método y la estructura que utiliza un sistema operativo para organizar y almacenar archivos.

Para los hackers, conocer en profundidad cómo funciona el sistema de archivos en Linux puede ser una ventaja crítica, ya que les permite navegar, manipular y ocultar información dentro del sistema. Este artículo se adentra en los aspectos más importantes del sistema de archivos en Linux y explora por qué su comprensión es vital para cualquier persona interesada en la seguridad informática.

Estructura del sistema de archivos de Linux

El sistema de archivos de Linux tiene una estructura de archivos jerárquica, ya que contiene un directorio raíz y sus subdirectorios. Se puede acceder a todos los demás directorios desde el directorio raíz. Una partición normalmente tiene solo un sistema de archivos, pero puede tener más de un sistema de archivos.

Un sistema de archivos está diseñado de manera que pueda administrar y proporcionar espacio para datos de almacenamiento no volátiles. Todos los sistemas de archivos requieren un espacio de nombres que es una metodología de organización y denominación. El espacio de nombres define el proceso de denominación, la longitud del nombre del archivo o un subconjunto de caracteres que se pueden utilizar para el nombre del archivo.

También define la estructura lógica de los archivos en un segmento de memoria, como el uso de directorios para organizar los archivos específicos. Una vez que se describe un espacio de nombres, se debe definir una descripción de metadatos para ese archivo en particular.

La estructura de datos debe admitir una estructura de directorio jerárquica; esta estructura se utiliza para describir el espacio en disco disponible y utilizado para un bloque en particular. También contiene otros detalles sobre los archivos, como el tamaño del archivo, la fecha y hora de creación, actualización y última modificación.

Además, almacena información avanzada sobre la sección del disco, como particiones y volúmenes. Los datos avanzados y las estructuras que representan contienen la información sobre el sistema de archivos almacenado en la unidad; son distintos e independientes de los metadatos del sistema de archivos. El sistema de archivos de Linux contiene una arquitectura de implementación de software de sistema de archivos de dos partes. Observe la siguiente imagen:

El sistema de archivos requiere una API (interfaz de programación de aplicaciones) para acceder a las llamadas de función para interactuar con los componentes del sistema de archivos, como archivos y directorios. La API facilita tareas como la creación, eliminación y copia de archivos. Facilita un algoritmo que define la disposición de los archivos en un sistema de archivos.

Las dos primeras partes del sistema de archivos dado se denominan conjuntamente sistema de archivos virtual de Linux . Proporciona un único conjunto de comandos para que el núcleo y los desarrolladores accedan al sistema de archivos. Este sistema de archivos virtual requiere que el controlador del sistema específico proporcione una interfaz al sistema de archivos.

Características del sistema de archivos de Linux

En Linux, el sistema de archivos crea una estructura de árbol. Todos los archivos están organizados en forma de árbol y sus ramas. El directorio superior se denomina directorio raíz (/) . Se puede acceder a todos los demás directorios de Linux desde el directorio raíz.

Algunas características clave del sistema de archivos Linux son las siguientes:

  • Especificación de rutas: Linux no utiliza la barra invertida (\) para separar los componentes, sino que utiliza la barra diagonal (/) como alternativa. Por ejemplo, al igual que en Windows, los datos pueden almacenarse en C:\ Mis documentos\ Trabajo, mientras que, en Linux, se almacenarían en /home/ Mis documentos/ Trabajo.
  • Particiones, directorios y unidades: Linux no utiliza letras de unidad para organizar las unidades como lo hace Windows. En Linux, no podemos saber si nos estamos dirigiendo a una partición, a un dispositivo de red o a un directorio “normal” y una unidad.
  • Distinción entre mayúsculas y minúsculas: el sistema de archivos de Linux distingue entre mayúsculas y minúsculas. Por ejemplo, existe una diferencia entre test.txt y Test.txt en Linux. Esta regla también se aplica a los directorios y comandos de Linux.
  • Extensiones de archivos: En Linux, un archivo puede tener la extensión ‘.txt’, pero no es necesario que un archivo tenga una extensión de archivo. Al trabajar con Shell, a los principiantes les genera algunos problemas diferenciar entre archivos y directorios. Si utilizamos el administrador de archivos gráfico, simboliza los archivos y las carpetas.
  • Archivos ocultos: Linux distingue entre archivos estándar y archivos ocultos. La mayoría de los archivos de configuración están ocultos en el sistema operativo Linux. Por lo general, no necesitamos acceder ni leer los archivos ocultos. Los archivos ocultos en Linux se representan con un punto (.) antes del nombre del archivo (por ejemplo, .ignore). Para acceder a los archivos, necesitamos cambiar la vista en el administrador de archivos o usar un comando específico en el shell.

¿Qué es el sistema de archivos de Linux?

El sistema de archivos de Linux es una estructura multifacética compuesta por tres capas esenciales. En su base, el sistema de archivos lógico sirve como interfaz entre las aplicaciones de usuario y el sistema de archivos, gestionando operaciones como abrir, leer y cerrar archivos. Por encima de esto, el sistema de archivos virtual facilita el funcionamiento simultáneo de varios sistemas de archivos físicos, proporcionando una interfaz estandarizada para la compatibilidad.

 Por último, el sistema de archivos físico es responsable de la gestión tangible y el almacenamiento de bloques de memoria física en el disco, garantizando una asignación y recuperación de datos eficientes. Juntas, estas capas forman una arquitectura cohesiva, orquestando el manejo organizado y eficiente de los datos en el sistema operativo Linux.

Estructura del sistema de archivos de Linux

Un sistema de archivos consta principalmente de 3 capas. De arriba a abajo:

Sistema de archivos lógico:

El sistema de archivos lógico actúa como interfaz entre las aplicaciones del usuario y el propio sistema de archivos. Facilita operaciones esenciales como abrir, leer y cerrar archivos. Básicamente, funciona como interfaz fácil de usar, lo que garantiza que las aplicaciones puedan interactuar con el sistema de archivos de una manera que se ajuste a las expectativas del usuario.

Sistema de archivos virtuales:

El sistema de archivos virtual (VFS) es una capa crucial que permite el funcionamiento simultáneo de varias instancias de sistemas de archivos físicos. Proporciona una interfaz estandarizada que permite que diferentes sistemas de archivos coexistan y funcionen simultáneamente. Esta capa abstrae las complejidades subyacentes, lo que garantiza la compatibilidad y la cohesión entre las distintas implementaciones de sistemas de archivos.

Sistema de archivos físicos:

El sistema de archivos físicos es responsable de la gestión y el almacenamiento tangibles de los bloques de memoria física en el disco. Se encarga de los detalles de bajo nivel de almacenamiento y recuperación de datos, interactuando directamente con los componentes de hardware. Esta capa garantiza la asignación y utilización eficientes de los recursos de almacenamiento físico, lo que contribuye al rendimiento y la fiabilidad generales del sistema de archivos.

Arquitectura de un sistema de archivos 

Características de un sistema de archivos

  • Gestión del espacio : cómo se almacenan los datos en un dispositivo de almacenamiento. Relativo a los bloques de memoria y las prácticas de fragmentación que se aplican en él.
  • Nombre de archivo : un sistema de archivos puede tener ciertas restricciones para los nombres de archivo, como la longitud del nombre, el uso de caracteres especiales y la distinción entre mayúsculas y minúsculas.
  • Directorio : los directorios/carpetas pueden almacenar archivos de manera lineal o jerárquica manteniendo una tabla de índice de todos los archivos contenidos en ese directorio o subdirectorio.
  • Metadatos : para cada archivo almacenado, el sistema de archivos almacena información diversa sobre la existencia de ese archivo, como la longitud de los datos, los permisos de acceso, el tipo de dispositivo, la fecha y hora de modificación y otros atributos. Esto se denomina metadatos.
  • Utilidades : los sistemas de archivos proporcionan funciones para inicializar, eliminar, renombrar, mover, copiar, realizar copias de seguridad, recuperar y controlar el acceso a archivos y carpetas.
  • Diseño : debido a sus implementaciones, los sistemas de archivos tienen limitaciones en la cantidad de datos que pueden almacenar.

Algunos términos importantes:

Diario:

Los sistemas de archivos con registro mantienen un registro llamado diario, que mantiene un registro de los cambios realizados en un archivo pero que aún no se han confirmado de forma permanente en el disco, de modo que en caso de una falla del sistema se puedan recuperar los cambios perdidos.

Control de versiones:

Los sistemas de archivos con versiones almacenan versiones previamente guardadas de un archivo, es decir, las copias de un archivo se almacenan en función de las confirmaciones anteriores en el disco cada minuto o cada hora para crear una copia de seguridad.

Inodo:

El nodo de índice es la representación de cualquier archivo o directorio en función de los parámetros: tamaño, permiso, propiedad y ubicación del archivo y directorio.

Ahora, llegamos a la parte donde discutimos las diversas implementaciones del sistema de archivos en Linux para dispositivos de almacenamiento en disco.

Nota: Los sistemas de archivos distribuidos y en clúster no se incluirán para simplificar esta introducción a Linux.

Tipos de sistemas de archivos en Linux

1) ext (Sistema de archivos extendido) : 

Implementado en 1992 es el primer miembro de la familia de sistemas de archivos ext. El sistema de archivos Ext significa Extended File System (Sistema de archivos extendido) . Fue desarrollado principalmente para el sistema operativo MINIX . El sistema de archivos Ext es una versión anterior y ya no se utiliza debido a algunas limitaciones.

2) ext2 : 

La segunda extensión se desarrolló en 1993. Es un sistema de archivos sin registro que se prefiere para usar con unidades flash y SSD. Resolvió los problemas de marca de tiempo separada para el acceso, la modificación de inodo y la modificación de datos. Debido a que no se registra en el registro, es lento para cargar en el momento del arranque. Ext2 es el primer sistema de archivos de Linux que permite gestionar dos terabytes de datos

3) Xiafs : 

También desarrollado en 1993, este sistema de archivos era menos potente y funcional que ext2 y ya no se utiliza en ningún lugar.

4) ext3 : 

El tercer ext desarrollado en 1999 es un sistema de archivos con registro en diario. Es confiable y, a diferencia de ext2, evita demoras prolongadas en el arranque del sistema si el sistema de archivos se encuentra en un estado inconsistente después de un apagado incorrecto. Otros factores que lo hacen mejor y diferente de ext2 son el crecimiento del sistema de archivos en línea y la indexación HTree para directorios grandes.

Como  Ext3 se desarrolló a partir de Ext2; es una versión mejorada de Ext2 y contiene compatibilidad con versiones anteriores. El principal inconveniente de Ext3 es que no es compatible con servidores porque este sistema de archivos no admite la recuperación de archivos ni la captura de instantáneas de disco.

5) JFS (Sistema de archivos con registro) :

Creado por primera vez por IBM en 1990, el JFS original fue llevado a código abierto para ser implementado para Linux en 1999. JFS funciona bien bajo diferentes tipos de carga, pero ya no se usa comúnmente debido al lanzamiento de ext4 en 2006, que brinda un mejor rendimiento.

JFS son las siglas de Journaled File System (Sistema de archivos con diario ). Es una alternativa al sistema de archivos Ext. También se puede utilizar en lugar de Ext4, donde se necesita estabilidad con pocos recursos. Es un sistema de archivos útil cuando la potencia de la CPU es limitada.

6) ReiserFS : 

Es un sistema de archivos de diario desarrollado en 2001. A pesar de sus problemas anteriores, tiene empaquetamiento de cola como esquema para reducir la fragmentación interna. Utiliza un árbol B+ que da un tiempo menos que lineal en las búsquedas y actualizaciones de directorios. Fue el sistema de archivos predeterminado en SUSE Linux hasta la versión 6.4, hasta que cambió a ext3 en 2006 para la versión 10.2.

ReiserFS es una alternativa al sistema de archivos Ext3. Tiene un rendimiento mejorado y características avanzadas. En el pasado, ReiserFS se usaba como sistema de archivos predeterminado en SUSE Linux, pero luego se cambiaron algunas políticas, por lo que SUSE volvió a Ext3. Este sistema de archivos admite dinámicamente la extensión de archivo, pero tiene algunas desventajas en el rendimiento.

7) XFS : 

XFS es un sistema de archivos con registro de 64 bits que se adaptó a Linux en 2001. Actualmente, actúa como el sistema de archivos predeterminado para muchas distribuciones de Linux. Ofrece funciones como instantáneas, desfragmentación en línea, archivos dispersos, tamaños de bloque variables y una capacidad excelente. También se destaca en operaciones de E/S paralelas.

El sistema de archivos XFS se consideró un JFS de alta velocidad, desarrollado para el procesamiento de E/S en paralelo. La NASA todavía utiliza este sistema de archivos con su servidor de gran capacidad de almacenamiento (servidor de más de 300 Terabytes).

8) SquashFS : 

Desarrollado en 2002, este sistema de archivos es de sólo lectura y se utiliza únicamente con sistemas integrados donde se necesita poca sobrecarga.

9) Reiser4 : 

Es un modelo incremental de ReiserFS. Fue desarrollado en 2004. Sin embargo, no está ampliamente adaptado ni es compatible con muchas distribuciones de Linux.

10) ext4 : 

El cuarto ext desarrollado en 2006 es un sistema de archivos con registro. Es compatible con versiones anteriores de ext3 y ext2 y ofrece varias otras funciones, algunas de las cuales son la preasignación persistente, un número ilimitado de subdirectorios, la suma de comprobación de metadatos y un gran tamaño de archivo. ext4 es el sistema de archivos predeterminado para muchas distribuciones de Linux y también es compatible con Windows y Mac.

El sistema de archivos Ext4 es el más rápido de todos los sistemas de archivos Ext. Es una opción muy compatible con los discos SSD (unidades de estado sólido) y es el sistema de archivos predeterminado en las distribuciones Linux.

11) btrfs (sistema de archivos Better/Butter/B-tree) : 

Se desarrolló en 2007. Ofrece muchas funciones, como la creación de instantáneas, la agrupación de unidades, la limpieza de datos, la autorreparación y la desfragmentación en línea. Es el sistema de archivos predeterminado para Fedora Workstation.

Btrfs significa sistema de archivos de árbol B. Se utiliza para tolerancia a fallos, reparación de sistemas, administración de funciones, configuración de almacenamiento extensa y más. No es adecuado para sistemas de producción.

12) bcachefs: 

Se trata de un sistema de archivos de copia en escritura que se anunció por primera vez en 2015 con el objetivo de tener un mejor rendimiento que btrfs y ext4. Entre sus características se incluyen cifrado completo del sistema de archivos, compresión nativa, instantáneas y suma de comprobación de 64 bits.

13) Otros :

 Linux también admite sistemas de archivos de sistemas operativos como NTFS y exFAT, pero estos no admiten la configuración de permisos estándar de Unix. Se utilizan principalmente para la interoperabilidad con otros sistemas operativos.

A continuación se muestra una tabla que enumera los criterios según los cuales se pueden comparar los sistemas de archivos:

Tenga en cuenta que hay más criterios que los que se enumeran en la tabla. Esta tabla pretende ofrecerle una idea de cómo han evolucionado los sistemas de archivos.

Tabla comparativa

 extext2Xiafsext3JFSReiserFSXFSReiser4ext4btrf
Longitud máxima del nombre de archivo (bytes)2552552482552554032  2552553976255255
Caracteres permitidos  en entradas de directorio (Cualquier byte) excepto NULexcepto NUL, /excepto NULexcepto NUL o /Cualquier Unicode  excepto NULexcepto NUL o /excepto NULexcepto NUL, /excepto NUL, /excepto NUL, /
Longitud máxima de la rutaIndefinidoIndefinidoIndefinidoIndefinidoIndefinidoIndefinidoIndefinidoIndefinidoIndefinidoIndefinido
Tamaño máximo de archivo2 GB16 GB – 2 TB64 MB16 GB – 2 TB4PB8TB8EB8 TB (en x86)16 GB – 16 TB16EB
Tamaño máximo del volumen2 GB2 TB – 32 TB2 GB2 TB – 32 TB32 PB16 TB8EB       –1EB16EB
Número máximo de archivos      –       –      –           –       –        –      –       –2^322^64
Solo metadatos  diarioNoNoNoNoNo
CompresiónNoNoNoNoNoNoNoNo
Subasignación de bloquesNoNoNoNoNoNo
EncriptaciónNoNoNoNoNoNoNoSí (experimental)No
Suma de comprobaciónNoNoNoNoNoNoParcialNoParcial

 Observaciones:

Vemos que XFS, ext4 y btrfs son los que mejor funcionan entre todos los demás sistemas de archivos. De hecho, btrfs parece ser casi el mejor. A pesar de ello, la familia de sistemas de archivos ext ha sido la predeterminada para la mayoría de las distribuciones de Linux durante mucho tiempo. Entonces, ¿qué es lo que hizo que los desarrolladores eligieran ext4 como predeterminado en lugar de btrfs o XFS? Dado que ext4 es tan importante para este debate, vamos a describirlo un poco más.

ext4 en el sistema de archivos Linux

Ext4 fue diseñado para ser compatible con versiones anteriores de ext3 y ext2, sus generaciones anteriores. Es mejor que las generaciones anteriores en los siguientes aspectos:

  • Proporciona un sistema de archivos grande como se describe en la tabla anterior.
  • Utiliza extensiones que mejoran el rendimiento de archivos grandes y reducen la fragmentación.
  • Proporciona una preasignación persistente que garantiza la asignación de espacio y memoria contigua.
  • La asignación retrasada mejora el rendimiento y reduce la fragmentación al asignar de manera efectiva grandes cantidades de datos a la vez.
  • Utiliza índices HTree para permitir un número ilimitado de subdirectorios.
  • Realiza la suma de comprobación del diario , lo que permite que el sistema de archivos se dé cuenta de que algunas de sus entradas no son válidas o están fuera de servicio después de una falla.
  • Soporte para marcas de tiempo de creación y marcas de tiempo mejoradas para inducir granularidad.
  • Cifrado transparente.
  • Permite limpiar las tablas de inodos en segundo plano, lo que a su vez acelera la inicialización. El proceso se denomina inicialización diferida .
  • Habilita las barreras de escritura de forma predeterminada, lo que garantiza que los metadatos del sistema de archivos se escriban y ordenen correctamente en el disco, incluso cuando las cachés de escritura pierden energía.

Todavía quedan algunas características en proceso de desarrollo, como la suma de comprobación de metadatos, compatibilidad con cuotas de primera clase y grandes bloques de asignación.

Sin embargo, ext4 tiene algunas limitaciones. Ext4 no garantiza la integridad de sus datos; si los datos se corrompen mientras ya están en el disco, no tiene forma de detectar o reparar dicha corrupción. El sistema de archivos ext4 no puede asegurar la eliminación de archivos, lo que se supone que provoca la sobrescritura de archivos al eliminarlos. Esto hace que los datos confidenciales terminen en el diario del sistema de archivos.

XFS 

funciona muy bien con sistemas de archivos grandes y altos grados de concurrencia. Por lo tanto, XFS es estable, pero no hay un límite claro que lo haga elegirlo en lugar de ext4, ya que ambos funcionan de manera similar. A menos que desee un sistema de archivos que resuelva directamente un problema de ext4, como tener una capacidad > 50 TiB.

Por otro lado, Btrfs , a pesar de ofrecer funciones como administración de múltiples dispositivos, suma de comprobación por bloque, replicación asincrónica y compresión en línea, no tiene el mejor rendimiento en muchos casos de uso comunes en comparación con ext4 y XFS. Varias de sus funciones pueden tener errores y provocar una reducción del rendimiento y pérdida de datos. 

Sistema de archivos de intercambio

El sistema de archivos de intercambio se utiliza para la paginación de memoria en el sistema operativo Linux durante la hibernación del sistema. Un sistema que nunca entra en estado de hibernación debe tener un espacio de intercambio igual al tamaño de su RAM.

¿Qué es el montaje en el sistema de archivos de Linux?

En Linux, el término “montar” hace referencia a los primeros días de la informática, cuando era necesario montar físicamente un disco extraíble o un paquete de cintas en un dispositivo de unidad correcto. En el paquete de discos, el sistema operativo montaría lógicamente el sistema de archivos para que los programas de aplicación, el sistema operativo y los usuarios pudieran acceder a los contenidos una vez que se los encontrara físicamente en la unidad.

En términos simples, un punto de montaje es un directorio que se crea como un componente del sistema de archivos. Por ejemplo, el sistema de archivos de inicio se ubica en el directorio /home. Los sistemas de archivos se pueden ubicar en puntos de montaje en muchos sistemas de archivos que no sean raíz, pero es menos común.

  • El sistema de archivos raíz de Linux se monta en el directorio / (directorio raíz) muy temprano dentro de la secuencia de arranque.
  • Posteriormente, los programas de inicio de Linux montan varios sistemas de archivos, ya sea mediante rc en SystemV o mediante systemd en las nuevas versiones de Linux.
  • El montaje del sistema de archivos durante el inicio lo gestiona el archivo de configuración, es decir, /etc/fstab .
  • Una forma sencilla de entenderlo es que fstab es la abreviatura de “tabla del sistema de archivos” , y es una lista de sistemas de archivos que se montarán, sus opciones y los puntos de montaje designados que pueden ser necesarios para sistemas de archivos particulares.

Los sistemas de archivos se pueden montar en un punto de montaje o directorio disponible con la ayuda del comando mount. En otras palabras, cualquier directorio que se aplique como punto de montaje no debe tener otros archivos y debe estar vacío. Linux no evitará que los usuarios monten un sistema de archivos en uno que ya esté disponible o en un directorio que incluya archivos. Se cubrirá el contenido real y solo será visible el contenido del sistema de archivos recién montado si montamos cualquier sistema de archivos en cualquier sistema de archivos o directorio existente.

Métodos de montaje de sistemas de archivos

En Linux, los sistemas de archivos deben “montarse” antes de que puedan ser utilizados. El montaje de un sistema de archivos implica asignarlo a un punto de la estructura jerárquica, permitiendo que se acceda a él a través de la ruta correspondiente.

El comando mount se utiliza para montar sistemas de archivos, y el comando umount se usa para desmontarlos. Aquí hay un ejemplo simple:

sudo mount /dev/sdb1 /mnt

Este comando monta la partición /dev/sdb1 en el directorio /mnt. A partir de este punto, el contenido de la partición será accesible en /mnt.

Resumen de puntos clave

  1. Estructura jerárquica del sistema de archivos: Linux organiza los archivos en forma de árbol, con un directorio raíz (“/”) desde el cual se accede a todos los demás directorios.
  2. Capas del sistema de archivos: Se divide en sistema de archivos lógico, virtual y físico, cada uno con funciones específicas para la gestión de datos.
  3. Características distintivas: Diferencia entre mayúsculas y minúsculas, archivos ocultos, manejo de rutas con “/”, y permite trabajar con o sin extensiones de archivo.
  4. Tipos de sistemas de archivos en Linux: Desde ext2 hasta btrfs, cada uno con diferentes ventajas y aplicaciones, siendo ext4 el más utilizado por su equilibrio entre rendimiento y compatibilidad.
  5. Montaje de sistemas de archivos: El proceso de asignar un sistema de archivos a un directorio, para que los datos sean accesibles desde ese punto en la jerarquía.
  6. Importancia para hackers: Conocer el sistema de archivos permite manipular archivos sensibles, ocultar actividad maliciosa y sortear mecanismos de seguridad.

El sistema de archivos en Linux es una pieza crítica del sistema operativo y una de las áreas más importantes que un hacker debe entender. Desde la manipulación de archivos sensibles hasta la ocultación de actividad maliciosa.

En este artículo analizamos el sistema de archivos Linux en los sistemas operativos, profundizando en sus capas, características y la arquitectura de los sistemas de archivos Linux. Proporciona una exploración exhaustiva de varias opciones, desde ext hasta opciones contemporáneas como ext4, XFS y btrfs. La tabla de comparación destaca el rendimiento superior de XFS, ext4 y btrfs, donde ext4 se destaca por su compatibilidad con versiones anteriores y mejoras de diseño.

Lista: Puntos clave del artículo y resumen

  1. Estructura de directorios:
    • Los sistemas Linux organizan todo bajo un único directorio raíz (/), con directorios específicos para configuraciones, usuarios, binarios, y más. Ejemplo: /home para los datos de los usuarios.
  2. Diferencias con Windows:
    • En Linux, no hay letras de unidad (como C: o D:); todos los dispositivos físicos se montan bajo directorios.
  3. Estándar FHS:
    • Define qué directorios deben existir y para qué sirven, asegurando compatibilidad y facilidad de uso entre distribuciones.
  4. Directorios principales:
    • /bin: comandos esenciales para usuarios.
    • /sbin: herramientas administrativas para root.
    • /etc: configuración del sistema.
    • /home: datos y configuraciones de usuarios.
  5. Tipos de archivos en Linux:
    • Todo es un archivo: textos, binarios, dispositivos, etc.
    • Archivos ocultos empiezan con . y suelen guardar configuraciones.
  6. Comandos básicos:
    • pwd: muestra el directorio actual.
    • cd: cambia de directorio.
    • ls: lista archivos y directorios.
  7. Variables de entorno:
    • $PATH: rutas donde el sistema busca comandos ejecutables.
    • $HOME: directorio del usuario actual.
    • export: define variables temporalmente en la sesión.
  8. Sistemas de archivos en Linux:
    • Extensiones como ext2, ext3, ext4, XFS, y btrfs ofrecen diferentes capacidades en términos de rendimiento, compatibilidad y funcionalidades avanzadas (e.g., journaling, compresión, y snapshots).
  9. Montaje de sistemas de archivos:
    • Para acceder a una partición o dispositivo, debe montarse en un directorio mediante comandos como mount y umount.
  10. Uso en hacking y seguridad:
    • La estructura de directorios es clave para escalada de privilegios (e.g., manipulación de /etc/passwd).
    • Modificación de logs en /var/log para ocultar actividades maliciosas.
    • Exploración de /proc y /sys para obtener información del sistema.
  11. Prácticas recomendadas:
    • Hacer respaldos antes de modificar configuraciones.
    • Verificar sintaxis con herramientas específicas como nginx -t o apachectl configtest.
    • Reiniciar servicios tras cambios en archivos de configuración.
  12. Comandos clave para hackers:
    • find / -perm -4000: busca binarios con setuid.
    • echo $PATH: visualiza rutas de comandos ejecutables.
    • nano /etc/shadow: modifica contraseñas encriptadas.

Este artículo ofrece una introducción integral a los directorios y el sistema de archivos de Linux, proporcionando una base sólida tanto para usuarios principiantes como avanzados interesados en administración y seguridad.

Pon en práctica lo aprendido

Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.

10 Preguntas basadas en el contenido

  1. ¿Qué representa el directorio raíz (/) en Linux y cuál es su importancia?
  2. ¿Cuál es la diferencia principal entre los directorios /bin y /sbin?
  3. ¿Qué contiene el directorio /etc y por qué es crítico para la configuración del sistema?
  4. ¿Qué propósito tienen los directorios /proc y /sys en Linux?
  5. Explica qué es la variable de entorno $PATH y cómo se utiliza.
  6. ¿Qué diferencia existe entre una ruta absoluta y una ruta relativa en Linux?
  7. ¿Cuáles son las características clave del sistema de archivos en Linux?
  8. ¿Qué tipo de archivos se encuentran en el directorio /dev y cómo son utilizados?
  9. Describe cómo se monta un sistema de archivos en Linux y qué comando se utiliza para desmontarlo.
  10. ¿Qué es el Estándar de Jerarquía del Sistema de Archivos (FHS) y cuál es su objetivo principal?

10 Ejercicios basados en el contenido

  1. Navega hasta el directorio raíz / y lista su contenido. Explica qué representa cada subdirectorio principal.
  2. Utiliza el comando which para encontrar la ubicación del comando ls en tu sistema.
  3. Crea una nueva variable de entorno llamada MI_VARIABLE y asígnale el valor «Aprendiendo Linux». Verifica su valor.
  4. Localiza el archivo ejecutable del programa bash utilizando una ruta absoluta.
  5. Crea una nueva carpeta llamada test_dir en tu directorio personal y muévela al directorio /tmp.
  6. Encuentra todos los binarios con permisos setuid en tu sistema utilizando el comando find.
  7. Abre y edita temporalmente el archivo /etc/hosts para agregar una nueva entrada que asocie 127.0.0.1 con mi-localhost.
  8. Visualiza las variables de entorno activas en tu sistema y explica el propósito de al menos 3 de ellas.
  9. Crea un script que imprima los directorios principales del sistema Linux y explique su función.
  10. Explora los directorios /proc y /sys y explica qué tipo de información puedes encontrar en cada uno.

Respuestas a las 10 Preguntas

  1. El directorio raíz (/) en Linux
    Representa la base de todo el sistema de archivos en Linux. Desde este directorio, se deriva toda la jerarquía de archivos y directorios. Es esencial porque organiza los archivos de forma jerárquica, permitiendo un acceso estructurado a datos y configuraciones.
  2. Diferencia entre /bin y /sbin
    • /bin: Contiene binarios esenciales que todos los usuarios pueden ejecutar.
    • /sbin: Contiene binarios del sistema utilizados principalmente por el administrador (root) para tareas de mantenimiento.
  3. El directorio /etc
    Almacena archivos de configuración global del sistema, como configuraciones de red, usuarios y servicios. Por ejemplo, /etc/passwd y /etc/hosts.
  4. Propósito de /proc y /sys
    • /proc: Contiene información en tiempo real sobre los procesos y el kernel.
    • /sys: Proporciona una interfaz al kernel para interactuar con hardware y subsistemas.
  5. Variable $PATH
    Es una lista de directorios separados por : donde la shell busca archivos ejecutables al introducir un comando.
  6. Ruta absoluta vs relativa
    • Absoluta: Comienza desde el directorio raíz, por ejemplo, /home/usuario.
    • Relativa: Comienza desde el directorio actual, por ejemplo, ../documentos.
  7. Características clave del sistema de archivos Linux
    • Sensibilidad a mayúsculas/minúsculas.
    • Uso de / como separador de rutas.
    • Organización jerárquica y extensiones opcionales para archivos.
  8. Archivos en /dev
    Representan dispositivos de hardware como discos (/dev/sda), terminales (/dev/tty), y dispositivos USB.
  9. Montaje de sistemas de archivos
    Se realiza con el comando mount. Por ejemplo, sudo mount /dev/sdb1 /mnt monta una partición en /mnt. Para desmontarlo, se usa umount.
  10. Estándar de Jerarquía de Sistema de Archivos (FHS)
    Define los directorios mínimos requeridos y su propósito, facilitando la interoperabilidad y estandarización entre distribuciones de Linux.

Respuestas a los 10 Ejercicios

  1. Navegar al directorio raíz
    • Comando: cd / && ls.
    • Subdirectorios comunes:
      • /bin: Binarios esenciales.
      • /etc: Configuración del sistema.
      • /home: Directorios de usuarios.
      • /var: Archivos variables como logs.
  2. Ubicación del comando ls
    • Comando: which ls.
    • Salida típica: /bin/ls.
  3. Crear una variable de entorno
    • Comandos: export MI_VARIABLE="Aprendiendo Linux"
      echo $MI_VARIABLE
    • Salida: Aprendiendo Linux.
  4. Localizar bash
    • Comando: which bash.
    • Ruta típica: /bin/bash.
  5. Crear y mover un directorio
    • Comandos: mkdir ~/test_dir
      mv ~/test_dir /tmp/
  6. Encontrar binarios setuid
    • Comando: find / -perm -4000 2>/dev/null.
    • Salida: Lista de archivos con bit setuid.
  7. Editar /etc/hosts
    • Comando: sudo nano /etc/hosts.
    • Entrada agregada: 127.0.0.1 mi-localhost.
  8. Visualizar variables de entorno
    • Comando: env.
    • Ejemplos:
      • USER: Usuario actual.
      • HOME: Directorio personal del usuario.
      • PATH: Rutas de búsqueda de ejecutables.
  9. Script para listar directorios principales
    • Ejemplo: #!/bin/bash
      echo "/bin: Binarios esenciales"
      echo "/etc: Configuración del sistema"
      echo "/home: Directorios de usuarios"
  10. Explorar /proc y /sys
    • /proc/cpuinfo: Información de la CPU.
    • /sys/class/net: Detalles sobre interfaces de red.

Estas preguntas y ejercicios te ayudarán a profundizar en la estructura de directorios, variables de entorno, y sistema de archivos en Linux.

No te detengas, sigue avanzando

Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

Hacker de 0 a 100 desde las bases hasta conseguir empleo

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.

Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).

Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).

El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!

Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.

Saludos amigos y happy hacking!!!