Saya ingin melihat semua perintah bash yang telah dijalankan pada server Linux di beberapa akun pengguna. Distribusi spesifik yang saya gunakan adalah CentOS 5.7. Apakah ada cara untuk mencari file .bash_history secara global di server atau apakah itu akan menjadi proses yang dibuat di rumah locate | cat | grep
? (Aku ngeri hanya mengetik itu).
sumber
getent passwd | cut -d : -f 6 | sed "s:$:/.bash_history:" | xargs -d'\n' -I{} sh -c "[ -f {} ] && echo {}" | xargs -d'\n' grep -Hn -e "$pattern"
{}
seperti ini sangat berbahaya. Nama file diinterpolasi langsung dalam skrip. Jika Anda memiliki nama file (di sini: nama pengguna) yang berisi, ucapkan,$(rm -rf /)
atau;rm -rf /;
, perintah akan dieksekusi. Selalu berikan nama file sebagai argumen ke skrip shell, jangan pernah gunakan{}
mekanisme find atau xargs .Kalau tidak:
Perhatikan bahwa ini mencakup direktori home di lokasi default. Akan lebih baik untuk mem
/etc/passwd
- parsing atau memohongetent
, dan parsing output dari itu.sumber
Anda bisa melakukannya
Tapi saya tidak berpikir itu jauh lebih baik daripada apa yang Anda pikirkan.
sumber