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 -p
para 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
strace
con el nombre del ejecutable. Agregar-f
asegura que cualquier subproceso bifurcado también sea reportado. EjemploUtilizando
lsof
para ver qué archivos tiene abierto actualmente un procesoSi tiene SystemTap, puede monitorear todo el host en busca de archivos abiertos.
fuente
open
no 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 laopenat
llamada al sistema que también puede abrir un archivo.strace
, vea las líneas ENOENT en el ejemplo.Puede usar
opensnoop
de 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
strace
hace.También puede hacer esto con
strace
(posiblemente-f
para 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_file
hace: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
dtrace
que no se usa mucho en Linux, pero todavía se usa mucho con los sistemas operativos * BSD:Además
sysdig
,strace
ydtrace
tambié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_file
o 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
sysdig
error (¿está utilizando ARM?), Publique una nueva pregunta para él.