Me gustaría que una herramienta de línea de comandos falle si abre un archivo en particular para escribir.
¿Hay alguna manera de modificar el entorno (tal vez a través de cgroups) de la herramienta de línea de comandos, de modo que el comando/proceso obtenga (por ejemplo) "permiso denegado"?
chmod aw file no funciona. El proceso parece unlink() y luego volver a crear el archivo.
Sé que puedo ver las llamadas al sistema de un proceso con strace . Pero, ¿hay alguna manera de alterar algunas llamadas para que el proceso obtenga un resultado diferente?
strace tiene una opción llamada -e inject o simplemente --inject que se puede usar para alterar las llamadas al sistema del rastreador. ( Ver página de manual aquí )
En particular, se puede combinar con la opción -P para rastrear solo las llamadas al sistema que acceden a una ruta específica.
Dado que las llamadas se respetan en el orden en que se cargan desde las bibliotecas compartidas, puede usar LD_PRELOAD para cargar una biblioteca personalizada antes que las bibliotecas del sistema y secuestrar su ejecución. Esto es utilizado por muchos aceleradores de tarjetas de red como OpenOnload de Solarflare/Xilinx.
https://sumit-ghosh.com/articles/hijacking-library-functions-code-injection-ld-preload/