No voy por herramientas complicadas como el modo de queja AppArmor, necesito herramientas fáciles para decirme a qué archivos accede un programa específico.
linux
files
process
open-files
Boll19
fuente
fuente

fstat()olstat()información, etc.Respuestas:
Según Chris Down, puede usar
strace -ppara examinar un proceso que ya se está ejecutando , para ver qué archivos se abre desde ahora hasta el momento en que termina la secuencia o el proceso termina.Si desea ver los archivos abiertos durante todo el proceso, desde el principio, utilícelos
stracecon el nombre del ejecutable. Agregar-fasegura que cualquier subproceso bifurcado también sea reportado. EjemploUtilizando
lsofpara ver qué archivos tiene abierto actualmente un procesoSi tiene SystemTap, puede monitorear todo el host en busca de archivos abiertos.
fuente
openno es la única llamada al sistema relevante. Por ejemplo, es posible pasar descriptores de archivo entre procesos a través de un socket Unix, y existe laopenatllamada al sistema que también puede abrir un archivo.strace, vea las líneas ENOENT en el ejemplo.Puede usar
opensnoopde BCC, que usa eBPF bajo el capó:Esto es bastante eficiente ya que usa kprobes en lugar de tener que reiniciar las llamadas al sistema, como lo
stracehace.También puede hacer esto con
strace(posiblemente-fpara seguir los elementos secundarios del proceso rastreado), pero su forma de operar, que implica reiniciar syscalls como parte de ptrace , ralentizará un poco su aplicación:También puede iniciar su aplicación de esta manera si lo desea, usando
strace [executable]ostrace -f [executable].fuente
Mi herramienta favorita para monitorear qué archivos abre una aplicación es el poderoso marco de monitoreo
sysdig.Para monitorear todos los archivos abiertos abiertos por un programa llamado
exe_file:Supervisión de todos los archivos abiertos en el servidor:
Crear un archivo de rastreo que solo contendrá eventos de escritura en directorios de inicio (que podemos inspeccionar más adelante con
sysdig -r writetrace.scap.gz):Al ver todo a nivel de syscall, un proceso llamado
exe_filehace:Sysdig tiene muchos cinceles, vea más cosas interesantes que puede hacer:
Ejemplos de Sysdig
Cómo monitorear y solucionar problemas de un servidor Linux usando sysdig
También tiene
dtraceque no se usa mucho en Linux, pero todavía se usa mucho con los sistemas operativos * BSD:Además
sysdig,straceydtracetambién tieneltrace, qué graba / intercepta señales / bibliotecas dinámicas / llamadas al sistema que son llamadas / recibidas por un proceso:Si el programa es pequeño, también puede considerar desarmarlo
objdump -d exe_fileo desarmarlo / descompilarloHopper, para ver todos los archivos con los que trata.Para obtener más detalles, consulte: Comprender qué está haciendo un binario de Linux
Como primer enfoque, también haría:
Es un enfoque de bajo costo, y con suerte, algunos de los nombres de los archivos podrían estar presentes en modo ASCII en el archivo binario con suerte.
Ver también la respuesta relacionada ¿Por qué son tan verdaderos y falsos tan grandes?
Si los archivos binarios / archivos que vienen con la distribución también puede buscar las fuentes de los repositorios de fuentes de la distribución, o los repositorios oficiales de la utilidad real.
Como último recurso, siempre puede usar herramientas como gdb o rr para depurar el binario en tiempo real.
fuente
sysdigerror (¿está utilizando ARM?), Publique una nueva pregunta para él.