Envolver la llamada del sistema (de manera confiable y segura)

4

¿Existe un método confiable para "envolver" las llamadas al sistema bajo Linux? (Al igual que LD_PRELOAD para envolver llamadas de función de biblioteca compartida).

¿Existe un método confiable y seguro para "envolver" las llamadas al sistema (y, tal vez, recibir señales), ese proceso no puede interrumpirse (suponiendo una implementación de Linux adecuada)?

    
pregunta Grzegorz Wierzowiecki 29.10.2011 - 12:56
fuente

2 respuestas

2

Sí. Se utiliza la interposición de llamadas al sistema. Un método portátil es usar ptrace, aunque esto puede introducir una sobrecarga de rendimiento no trivial, ya que obliga a un cambio de contexto en cada llamada al sistema. En Solaris, puedes usar / proc; / proc le permite especificar el subconjunto de llamadas al sistema que le interesa envolver, lo que le permite lograr un mejor rendimiento al costo de la compatibilidad.

Eche un vistazo a Plash, Systrace y Subterfugue, para ver algunos sistemas que usan este tipo de métodos. También vea la caja de arena de Chrome, que utiliza una variedad de mecanismos (incluido seccomp en Linux).

    
respondido por el D.W. 30.10.2011 - 02:25
fuente
1

Yo usaría una de las muchas tecnologías de virtualización disponibles. Si solo desea restringir qué recursos están disponibles para un proceso en particular, un mecanismo de cárcel como cgroups debería ser suficiente. Para obtener un mejor ajuste de lo que sucede cuando el proceso ejecuta una llamada al sistema, consulte Modo de usuario Linux .

    
respondido por el Gilles 30.10.2011 - 18:10
fuente

Lea otras preguntas en las etiquetas