Saya ingin mengubah pengaturan riwayat untuk semua pengguna pada sistem yang saya kelola. Saya ingin memuat informasi dari terminal penghubung seperti dariwho
sysadmin:/ # who
sysadmin pts/0 Mar 26 07:11 (sysadmin.doofus.local)
Saat ini saya memodifikasi riwayat saya dengan cara-cara berikut. Saya tahu bahwa banyak dari pengaturan ini telah dibahas di sini beberapa kali. Namun, saya menarik kode ini dari " Resep Administrasi Sistem Linux oleh: Juliet Kemp " sejak lama.
shopt -s histappend
PROMPT_COMMAND='history -n;history -a'
HISTSIZE=100000
HISTFILESIZE=100000
HISTTIMEFORMAT="%m/%d/%y %T "
shopt -s histappend
memperbaiki masalah ketika Anda memiliki beberapa terminal, informasi terbuka mungkin hilang.
PROMPT_COMMAND='history -n;history -a'
meluas untuk memberikan penambahan waktu-nyata ke sejarah di beberapa terminal.
HISTSIZE=100000
HISTFILESIZE=100000
memperpanjang jumlah history
retensi
HISTTIMEFORMAT="%m/%d/%y %T
+ msgstr "awali setiap baris sejarah dengan cap waktu
Apa yang biasanya Anda dapatkan history
835 ls
836 cd ..
history
Hasil saya yang dimodifikasi saat ini
5853 03/26/12 07:16:49 ls
5854 03/26/12 07:16:50 ll
Kembali dari history
saya ingin melihat
5853 03/26/12 07:16:49 sysadmin.doofus.local ls
5854 03/26/12 07:16:50 sysadmin.doofus.local ll
001 03/26/12 05:11:29 demo_user.doofus.local cd
002 03/26/12 05:11:30 demo_user.doofus.local ll
Saya tidak "menikah" untuk melihat DNS
nama itu. Saya hanya ingin ada di sana jika menariknya dari who
atau lokasi lain tanpa perlu melakukan pencarian atau permintaan apa pun. Saya akan senang dengan alamat IP.
002 03/26/12 05:11:30 192.168.0.2 ll
Mengapa? Saya mengelola beberapa sistem di mana userid yang berbagi beberapa pengguna dari kelompok yang sama untuk melakukan tugas sehari-hari mereka. Ini akan memungkinkan saya untuk menghubungkan lokasi mereka yang sebenarnya & pengguna aktual dalam organisasi dengan apa yang mereka lakukan dalam sejarah.
Saya sadar bahwa ini tidak optimal dan ingin mengubahnya tetapi, ketika Anda berada di kapal seukuran kapal pesiar, Anda tidak berusaha membuat jepit rambut berputar. (Catatan: ketika Anda melakukannya, para penumpang mencoba untuk melemparkan Anda ke laut)
Lagi pula, sampai saya dapat memigrasikannya ke solusi yang lebih baik, saya ingin memiliki kemampuan pelacakan ini.
Juga, jika Anda memiliki rekomendasi apa pun yang sedang saya gunakan untuk history
modifikasi saya, saya akan senang mendengarnya.
Terima kasih,
Edit: 1
Saya tidak ingin menjalankan program lain atau harus mengkonfigurasi sesuatu tambahan "sesuai alasan."
Saya ingin menambahkan 0
overhead, jika saya harus menambahkannya harus kecil.
Saya percaya pengguna saya, saya hanya ingin (jika terjadi sesuatu) untuk melihat yang mana dari 10 pengguna yang masuk ke sistem dengan pengguna yang sama: kata sandi yang melakukannya. Atau, itu mungkin bukan pengguna itu bisa saja dilupakan cron
pada sistem yang melakukan koneksi sebagai pengguna untuk melakukan sesuatu. Atau aplikasi Ex: BMC Control-M
yang menghubungkan ssh
dan menjalankan tugas. Ini bukan tentang menemukan "pengguna jahat" karena dapat melacaknya dengan upaya minimal.
Edit 2:
Sistem menjalankan SLES dan RHEL
/proc
/dev
dan/home
direktori pengguna . Ini menambah overhead. Padahalhistory
sudah direkam dan informasi koneksinya diketahui oleh sistem yang menghubungkan IP dll ... Informasi ini jika belum tersedia "secara statis" dapat diatur seperti itu atau disimpan dalam variabel atau file dan input kehistory
catatan dan kinerja hit akan menjadi sangat kecil atau 0.auditd
. Saya tidak yakin apakah lognya akan memberi Anda informasi yang cukup. Kesulitan dari apa yang Anda inginkan justru mengapa akun yang dibagikan begitu dikecewakan.auditd
sangat banyak sepertiinotify
Anda harus mengatakan apa yang harus dimonitor untuk perubahan. File individual, direktori, dll. Saya tidak ingin pergi ke tingkat konfigurasi itu. Sebenarnya (saya lakukan) tetapi pada dasarnya tidak terlalu peduli. Saya haruspuppet
menangani hal-hal itu.auditd
dilengkapi dengan beban tambahan dan waktu untuk pengaturan juga. Jika akun memodifikasi sesuatu, saya masih ingin melihat kembali sejarah dan melihat siapa atau apa yang masuk dan mencoba.PROMPT_COMMAND=
hanya menjalankan perintah normal sebelum prompt berikutnya, tidak bisakah Anda menulis fungsi memanggil sed / awk yang bekerja pada baris terakhir dari file histori untuk menambahkan informasi. lalu panggil fungsi ituPROMPT_COMMAND=
untuk menambahkan data? itu akan menjadi peretasan tetapi harus melakukan pekerjaan.Jawaban:
Dari saran llua, kita dapat bekerja sedikit lebih banyak dengan sejarah. Tambahkan baris ke file BASH RC seluruh sistem, mungkin /etc/bash.bashrc.
Atur pendataan untuk "local6" di logger sistem Anda. Mungkin kira-kira seperti ini:
Mulai ulang logger sistem. Mungkin mengatur rotasi file log. Keluar; Gabung; dan, sejarah sekarang ditulis ke /var/log/commands.log dalam format seperti ini:
tanggal waktu host nama logger: username [audit_pid]: perintah [return_val]
Ini bisa disesuaikan lebih lanjut dengan selera.
sumber
Paragraf berikut menjelaskan gagasan secara umum dan ketinggalan zaman dalam beberapa aspek, tetapi Anda dapat menggunakan kemudian menggunakan yang terbaru dari halaman ini . Mari kita gunakan file besar ~ / .bash_history.archive (terpisah dari HISTFILE = ~ / .bash_history). Dan kemudian pada saat keluar dari setiap sesi bash memungkinkan menambahkan baris sejarah baru untuk itu.
Masalah pertama dengan pendekatan ini adalah: bagaimana membuat bash untuk memanggil skrip ini di setiap jalan keluar? Tentu jika Anda keluar dengan mengetikkan 'keluar' maka Anda dapat alias fungsi 'keluar' tapi saya menggunakan pintasan Ctrl-D untuk itu dan saya tidak bisa menemukan cara bagaimana menugaskannya kembali ke sesuatu tetapi tidak dibangun pada fungsi keluar.
Jadi upaya pertama adalah: melarang Ctrl-D oleh
export IGNOREEOF=10
dan tentukan kombinasi Ctrl-X ganda untuk memanggil fungsi keluar.
Tetapi pendekatan yang tepat adalah dengan menggunakan tramp keluar bash, yang merupakan solusi sempurna karena dipanggil terlepas dari cara Anda keluar dari bash: Ctrl-D, keluar, tutup jendela xterm.
trap 'archive_history' EXIT
Langkah berikut adalah menentukan baris awal di bash_history kami sehingga kami hanya dapat menyimpan baris baru dan memastikan bahwa kami menambahkan file sejarah.
Itu yang kita butuhkan di awal bash - sekarang kita tahu dari mana sejarah garis saat ini (segar) dimulai. Untuk menyimpan riwayat, tambahkan bagian selanjutnya ke ~ / .bashrc Anda.
File ~ / .inputrc harus berisi baris berikutnya untuk mendefinisikan kembali jalan pintas ke Ctrl-x x. Pada percobaan pertama Anda mungkin merasa bahwa itu adalah jalan pintas yang mengerikan, tetapi kemudian Anda terbiasa - percayalah.
Juga jika sesi bash Anda adalah sesi masuk dan Anda keluar dengan memanggil '
logout
', maka Anda dapat menambahkan baris berikutnya ke~/.bash_logout
Setelah semua tindakan yang disebutkan selesai, Anda dapat menemukan
~/.bash_history.archive
file Anda yang berisi bagian-bagian seperti iniyang secara umum dapat dibaca sebagai file histori biasa jika diinginkan.
sumber