
Tengo una aplicación que accede al archivo /etc/hostname. Esta aplicación debe ejecutarse 1 instancia por máquina. Sin embargo, para fines de depuración, estoy ejecutando varias instancias en la misma máquina.
Por lo tanto, me gustaría tener un /etc/hostname diferente (y quizás otros archivos) diferente para cada uno sin tener que cambiar manualmente el código para buscar esos archivos en diferentes rutas.
Ejecutar cada instancia en un contenedor no es una opción factible ya que la aplicación aprovecha un socket sin formato a través de una interfaz inalámbrica (¿Es posible siquiera dar acceso directo a la interfaz de un contenedor?)
Sólo pretendía "engañar" a cada instancia de la aplicación para acceder a archivos diferentes al acceder al mismo archivo real.
¿Cómo puedo hacer esto?
Respuesta1
Puedes hacer esto confirejail
.
Firejail es un programa SUID que reduce el riesgo de violaciones de seguridad al restringir el entorno de ejecución de aplicaciones que no son de confianza utilizando espacios de nombres de Linux y seccomp-bpf. Permite que un proceso y todos sus descendientes tengan su propia vista privada de los recursos del kernel compartidos globalmente, como la pila de red, la tabla de procesos y la tabla de montaje.
Ejemplo:
# cat /etc/hostname
myhost
# firejail --noprofile --quiet --writable-etc --bind=/etc/timezone,/etc/hostname cat /etc/hostname
Europe/Warsaw
Probablemente querrás definir algunos perfiles para ejecutar fácilmente varias instancias de la aplicación. Estudiar man 1 firejail
y man 5 firejail-profile
.