¿Cómo falsificar / burlar un directorio utilizado por una aplicación binaria como otro directorio?

9

Supongamos que hay una aplicación binaria que siempre escribe sus datos /tmp.

¿Cómo podría simular / burlar /tmppor el bien de este binario como algún otro directorio (por ejemplo home/tmp)?

Supongamos que no tengo forma de modificar este binario para obligarlo a usar un directorio diferente.

Nobilis
fuente

Respuestas:

11

Puede ejecutar la aplicación en un chrootentorno, es decir, /la aplicación ve que no es real /. Crea una nueva jerarquía completa del sistema de archivos y monta ( --bind) todo lo que necesita en él. El punto relevante es: Se puede montar el verdadero ~/tmpa la /tmpdel chrootmedio ambiente.

En lugar de usar chroot(que requiere privilegio de superusuario), puede hacer más o menos lo mismo con los contenedores de Linux ( lxc). No estoy familiarizado, lxcpero como es un proceso de usuario normal para el sistema host, no necesita ser el superusuario para tales configuraciones dentro del contenedor.

Hauke ​​Laging
fuente
Gran respuesta, no había oído hablar de ninguno chrooto lxcser capaz de hacer esto. También es realmente bueno saber que hay una manera de lograrlo sin ser un superusuario.
Nobilis
3
@Nobilis 98 faltan votos a favor para que esto sea reconocido como una gran respuesta ...
Hauke ​​Laging
2
Tenga cuidado, sin embargo, que chrootrequiere una configuración adicional (va a sustituir la totalidad de /, no sólo /tmp, por lo que cualquier acceso a /etc, /var, etc, también habrá dentro de la "cárcel") y crea problemas de seguridad de su propio (el programa "encarcelado" puede ser capaz de manipular partes del sistema de archivos que normalmente estarían prohibidas si no tiene cuidado con los permisos al configurar su falsificación /).
IMSoP
@IMSoP ¿Le importaría explicar con más detalle "es posible que pueda manipular partes del sistema de archivos que normalmente estarían prohibidas"?
Hauke ​​Laging
@HaukeLaging Si lo nuevo /no está restringido a ser escrito solo por root, el usuario "encarcelado" puede crear o reemplazar archivos que parecen estar en ubicaciones clave del sistema, como /etc/passwd; Esto se puede utilizar para la escalada de privilegios que no sería posible fuera de chroot. Muchos servidores FTP de Linux, que tradicionalmente se utilizan chrootpara ocultar el resto del sistema de archivos, ahora se niegan a hacerlo si un usuario no root puede escribir en el directorio.
IMSoP
8

La mayoría del software compatible con POSIX honraría la variable de entorno TMPDIR , por ejemplo

env TMPDIR=~/mytmp  /path/to/application
HBruijn
fuente