Mount Namespace
Información Básica
Un espacio de nombres de montaje es una característica del kernel de Linux que proporciona aislamiento de los puntos de montaje del sistema de archivos vistos por un grupo de procesos. Cada espacio de nombres de montaje tiene su propio conjunto de puntos de montaje del sistema de archivos, y los cambios en los puntos de montaje en un espacio de nombres no afectan a otros espacios de nombres. Esto significa que los procesos que se ejecutan en diferentes espacios de nombres de montaje pueden tener vistas diferentes de la jerarquía del sistema de archivos.
Los espacios de nombres de montaje son particularmente útiles en la contenerización, donde cada contenedor debe tener su propio sistema de archivos y configuración, aislado de otros contenedores y del sistema host.
Cómo funciona:
Cuando se crea un nuevo espacio de nombres de montaje, se inicializa con una copia de los puntos de montaje de su espacio de nombres padre. Esto significa que, en el momento de la creación, el nuevo espacio de nombres comparte la misma vista del sistema de archivos que su padre. Sin embargo, cualquier cambio posterior en los puntos de montaje dentro del espacio de nombres no afectará al padre ni a otros espacios de nombres.
Cuando un proceso modifica un punto de montaje dentro de su espacio de nombres, como montar o desmontar un sistema de archivos, el cambio es local a ese espacio de nombres y no afecta a otros espacios de nombres. Esto permite que cada espacio de nombres tenga su propia jerarquía de sistema de archivos independiente.
Los procesos pueden moverse entre espacios de nombres utilizando la llamada al sistema
setns()
, o crear nuevos espacios de nombres utilizando las llamadas al sistemaunshare()
oclone()
con la banderaCLONE_NEWNS
. Cuando un proceso se mueve a un nuevo espacio de nombres o crea uno, comenzará a utilizar los puntos de montaje asociados con ese espacio de nombres.Los descriptores de archivos y los inodos se comparten entre espacios de nombres, lo que significa que si un proceso en un espacio de nombres tiene un descriptor de archivo abierto que apunta a un archivo, puede pasar ese descriptor de archivo a un proceso en otro espacio de nombres, y ambos procesos accederán al mismo archivo. Sin embargo, la ruta del archivo puede no ser la misma en ambos espacios de nombres debido a diferencias en los puntos de montaje.
Laboratorio:
Crear diferentes Espacios de Nombres
CLI
Al montar una nueva instancia del sistema de archivos /proc
si se utiliza el parámetro --mount-proc
, se asegura de que el nuevo espacio de nombres de montaje tenga una vista precisa y aislada de la información de procesos específica de ese espacio de nombres.
Docker
Verificar en qué espacio de nombres está su proceso
Encontrar todos los espacios de nombres de montaje
```bash sudo find /proc -maxdepth 3 -type l -name mnt -exec readlink {} \; 2>/dev/null | sort -u # Find the processes with an specific namespace sudo find /proc -maxdepth 3 -type l -name mnt -exec ls -l {} \; 2>/dev/null | grep ``` ### Entrar dentro de un espacio de nombres de montaje ```bash nsenter -m TARGET_PID --pid /bin/bash ``` También, solo puedes **entrar en otro espacio de nombres de proceso si eres root**. Y no puedes **entrar** en otro espacio de nombres **sin un descriptor** que apunte a él (como `/proc/self/ns/mnt`).
Dado que los nuevos montajes solo son accesibles dentro del espacio de nombres, es posible que un espacio de nombres contenga información sensible que solo se pueda acceder desde él.
Montar algo
Referencias
Última actualización