Estaba revisando el unshare
comando y de acuerdo con su página de manual,
unshare - run program with some namespaces unshared from parent
También veo que hay un tipo de espacio de nombres listado como,
mount namespace
mounting and unmounting filesystems will not affect rest of the system.
¿Cuál es exactamente el propósito de este espacio de nombres de montaje ? Estoy tratando de entender este concepto con la ayuda de algún ejemplo.
Respuestas:
La ejecución
unshare -m
le da al proceso de llamada una copia privada de su espacio de nombres de montaje, y también comparte los atributos del sistema de archivos para que ya no comparta su directorio raíz, el directorio actual o los atributos de umask con ningún otro proceso.Entonces, ¿qué dice el párrafo anterior? Probemos y comprendamos con un ejemplo simple.
Terminal 1:
Hago los siguientes comandos en la primera terminal.
El último comando me da la salida como,
tmpfs /tmp/tmp.7KtrAsd9lx tmpfs rw,relatime,size=1024k 0 0
Ahora, hice los siguientes comandos también.
La salida del
ls
comando es,Entonces, ¿cuál es el gran problema al hacer todo esto? ¿Por qué debería hacerlo?
Abro otra terminal ahora ( terminal 2 ) y hago los siguientes comandos.
El resultado es el siguiente.
Los archivos
hello
yhelloagain
no son visibles e incluso inicié sesión como root para verificar estos archivos. Entonces, la ventaja es que esta característica nos permite crear un sistema de archivos temporal privado que incluso otros procesos propiedad de root no pueden ver ni navegar.Desde la página de manual de
unshare
,La memoria que se utiliza para el espacio de nombres es VFS, que proviene del núcleo. Y, si lo configuramos en primer lugar, podemos crear entornos virtuales completos en los que somos el usuario root sin permisos de root.
Referencias
El ejemplo se enmarca utilizando los detalles de esta publicación de blog . Además, las citas de esta respuesta son de esta maravillosa explicación de Mike . Otra lectura maravillosa sobre esto se puede encontrar en la respuesta de aquí .
fuente
this feature makes it possible for us to create a private temporary filesystem that even other root-owned processes cannot see or browse through.
Y en comparación conchroot
, loschroot
archivos son visibles para otros. Esto es sorprendente, y esa oración probablemente debería estar en la parte superior de la respuesta. + 1ed.nsenter
puede ingresar el espacio de nombres y ver los archivos temporales. Suponiendo que solo una no compartida (la que posee el tempdir), entoncessudo nsenter -t $(pgrep -P $(ps aux | grep unshare | grep -v grep | awk '{print $2}')) -m -p
permitirá que se vea el contenidoSi tiene instalado bubblewrap en su sistema, puede hacerlo fácilmente en un solo paso:
En el ejemplo anterior, bash interno tendrá su propia vista en / tmp.
Solución inspirada en la respuesta de @ Ramesh-s: ¡gracias por ello!
fuente