Saya tidak akan menggunakan alat yang rumit seperti mode pengaduan AppArmor, saya perlu alat yang mudah untuk memberi tahu saya file mana yang diakses oleh program tertentu.
linux
files
process
open-files
Boll19
sumber
sumber
fstat()
ataulstat()
info, dll.Jawaban:
Per Chris Down, Anda dapat menggunakan
strace -p
untuk memeriksa proses yang sudah berjalan , untuk melihat file apa yang dibuka dari sekarang sampai saat Anda mengakhiri strace atau proses itu sendiri selesai.Jika Anda ingin melihat file dibuka untuk seluruh durasi proses, langsung dari awal, gunakan
strace
dengan nama yang dapat dieksekusi. Menambahkan-f
memastikan bahwa setiap sub-proses bercabang dua juga dilaporkan. ContohMenggunakan
lsof
untuk melihat file apa proses saat ini telah terbukaJika Anda memiliki SystemTap, Anda dapat memantau seluruh host untuk file yang dibuka.
sumber
open
bukan satu-satunya panggilan sistem yang relevan. Misalnya dimungkinkan untuk meneruskan deskriptor file antara proses melalui soket unix, dan adaopenat
panggilan sistem yang juga dapat membuka file.strace
, lihat baris ENOENT dalam contoh.Anda dapat menggunakan
opensnoop
dari BCC, yang menggunakan eBPF di bawah tenda:Ini cukup performan karena menggunakan kprobes daripada harus me-restart syscalls, seperti
strace
halnya.Anda juga dapat melakukan ini dengan
strace
(berpotensi dengan-f
mengikuti proses yang dilacak anak-anak), tetapi cara operasinya, melibatkan restart syscalls sebagai bagian dari ptrace akan agak memperlambat aplikasi Anda:Anda juga dapat memulai aplikasi Anda dengan cara ini jika diinginkan, menggunakan
strace [executable]
, ataustrace -f [executable]
.sumber
Alat favorit saya untuk memantau file mana aplikasi dibuka adalah kerangka pemantauan yang kuat
sysdig
.Untuk memantau semua file yang terbuka dibuka oleh program bernama
exe_file
:Memantau semua file yang dibuka di server:
Membuat file jejak yang hanya akan berisi acara penulisan di direktori home (yang dapat kita periksa nanti dengan
sysdig -r writetrace.scap.gz
):Melihat segala sesuatu di tingkat syscall proses yang dinamai
exe_file
tidak:Sysdig memiliki banyak pahat, lihat hal-hal menarik yang dapat dilakukan:
Contoh Sysdig
Cara memonitor dan memecahkan masalah server Linux menggunakan sysdig
Anda juga sudah mendapatkan
dtrace
yang tidak banyak digunakan di Linux, tetapi masih banyak menggunakan sistem operasi * BSD:Selain itu
sysdig
,strace
dandtrace
, Anda juga sudah mendapatkannyaltrace
, yang merekam / memotong sinyal / pustaka dinamis / panggilan sistem yang dipanggil / diterima oleh suatu proses:Jika program ini kecil, Anda mungkin juga mempertimbangkan untuk membongkar
objdump -d exe_file
atau membongkar / mendekompilasiHopper
, untuk melihat semua file yang berhubungan dengannya.Untuk detail lebih lanjut, lihat: Memahami apa yang dilakukan biner Linux
Sebagai pendekatan pertama, saya juga akan melakukan:
Ini adalah pendekatan biaya rendah, dan dengan keberuntungan beberapa nama file mungkin hanya hadir dalam mode ASCII dalam file biner dengan keberuntungan.
Lihat juga jawaban terkait. Mengapa benar dan salah begitu besar?
Jika binari / file yang datang dengan distribusi Anda juga dapat mengambil sumber dari sumber repositori distribusi, atau repositori resmi utilitas aktual.
Sebagai sumber daya terakhir, Anda selalu dapat menggunakan alat seperti gdb atau rr untuk men-debug biner secara real time.
sumber
sysdig
bug (apakah Anda menggunakan ARM?), Kirimkan pertanyaan baru untuk itu.