Saya ingin mencatat setiap perintah yang diketik ke bash (baik oleh root atau pengguna) serta setiap operasi file.
Idenya adalah saya dapat menulis alat yang dapat menginterogasi file log ini dan memberikan informasi yang sangat berguna.
Misalnya, akan sangat bagus untuk membuat daftar semua perintah yang pernah diketik, satu per baris, dengan “- – -” untuk jeda waktu 8-24 jam dan “===mis. 24 Juni 2014 ===” untuk jeda>24 jam. Jika itu juga menghilangkan duplikat dalam sesi “===…” bahkan lebih baik!
Itu berarti bahwa setiap kali saya menyelesaikan beberapa tugas seperti "upgrade flask/mod_wsgi/apache ke Python 3.x" catatan tertinggal, jejak yang bisa saya ambil jika saya harus melakukan hal yang sama enam bulan kemudian.
Untuk tujuan yang sama, akan sangat menyenangkan untuk melihat perubahan sistem file apa yang terjadi setelah menginstal paket tertentu. Itu akan memberi tahu saya di mana file konfigurasi diletakkan.
PS Saya menggunakan Ubuntu 14.04
Jawaban yang Diterima:
Ini tidak sekomprehensif akuntansi nyata, dan dapat dibatalkan dengan mudah oleh pengguna, tetapi dengan asumsi itu tidak harus menjadi sistem akuntansi nyata dan bahwa baik BASH dan rsyslog sedang digunakan, edit file BASH RC seluruh sistem :
sudo -e /etc/bash.bashrc
Tambahkan ke akhir file itu:
export PROMPT_COMMAND='RET_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]+[ ]*//" ) [$RET_VAL]"'
Di atas, logger
mencatat waktu, pengguna, perintah, dan nilai pengembalian perintah. Siapkan logging untuk “local6” dengan file baru:
sudo -e /etc/rsyslog.d/bash.conf
Dan isinya…
local6.* /var/log/bash_commands.log
Mulai ulang rsyslog:
sudo service rsyslog restart
Keluar. Masuk. Rotasi log:
sudo -e /etc/logrotate.d/rsyslog
Ada daftar file log untuk diputar dengan cara yang sama…
/var/log/mail.warn
/var/log/mail.err
[...]
/var/log/message
Tambahkan file log bash-commands baru dalam daftar itu:
/var/log/bash_commands.log
Simpan dan mulai ulang/muat ulang rsyslog. (Rotasi pada akhirnya akan menimpa file log, jadi mungkin diperlukan lebih banyak pemikiran atau konfigurasi.)
Untuk melihat semua file yang telah diinstal oleh sebuah paket:
dpkg-query -L [package_name]
Jadi Anda bisa menjalankan sesuatu seperti itu saat menginstal perangkat lunak.
dpkg-query -L abc-package > /var/log/files_abc-package.log