Ini bukan cara Anda mendekati masalah. Setelah Anda memberikan akses shell ke pengguna, Anda mempercayakan pengguna itu untuk melakukan apa pun yang ia memiliki izin yang tepat. Lupakan pembuatan perintah, ada terlalu banyak cara untuk menjalankan perintah di sistem Unix apa pun.
Misalnya, pengguna dapat memulai klien email (satu-satunya perintah yang dicatat pine
, misalnya), di sana ia memilih "Tulis" yang dimulai VI, dan dari VI ia meluncurkan perintah apa pun yang ia inginkan :!cmd
. Perintah ini tidak dicatat di mana pun, dan dari sudut pandang sistem, itu seperti aplikasi pembantu yang dipanggil oleh VI, seperti grep atau sortir. Satu-satunya perintah yang dicatat oleh shell adalah pine
.
Tampaknya apa yang sebenarnya Anda inginkan disebut audit . Aktifkan subsistem audit dan gunakan auditctl
perintah dan auditd
daemon dari paket audit untuk mengontrol apa yang dicatat. Informasi lebih lanjut ada di halaman buku panduan auditctl (8) .
Perhatikan bahwa mencatat setiap proses instantiasi mungkin juga tidak optimal. Sebagai contoh, sederhana ./configure
untuk paket perangkat lunak (dibuat menggunakan autotools) terkenal untuk membuat ribuan Instansiasi proses. Ini akan membanjiri log audit dengan begitu banyak kebisingan sehingga menjadi sangat sulit untuk menganalisisnya nanti.
Bagi saya sepertinya Anda sedang mencari sesuatu seperti rootsh ( halaman manual ). Mengutip halaman manual:
Terlepas dari namanya, ini dapat digunakan untuk semua pengguna.
sumber
Anda mungkin lebih baik meminta pengguna menggunakan sudo (atau yang serupa) untuk menjalankan perintah yang Anda pedulikan, dan mempercayai pengguna pada tingkat tertentu. Ketika Anda semakin dekat dengan "sepenuhnya mengendalikan" hal-hal, semakin sulit untuk melacak apa yang mereka lakukan. Saya baru-baru ini melihat alat seperti ini, misalnya. Kebanyakan mereka hanya membuat log yang sulit untuk dikelola jika Anda memiliki cukup pengguna dan mesin untuk membuat hal seperti itu bermanfaat. :)
Pertimbangkan semua informasi yang akan Anda hasilkan. Berapa banyak yang Anda pedulikan? Mungkin sangat sedikit - jadi Anda menghasilkan log yang sebagian besar tidak berharga. Mengaudit hal-hal yang benar-benar Anda pedulikan, seperti yang disarankan orang lain, mungkin membuat Anda mencapai kondisi akhir yang lebih baik.
sumber
Bash dapat dikompilasi dengan dukungan syslog sejak 4.1.
Ini tidak mudah (proses akuntansi mungkin lebih baik untuk itu), tetapi sebagian besar interaksi pengguna; volume harus lebih mudah dikelola dan Anda akan dapat beralih ke sesuatu yang lebih rinci jika mencurigai sesuatu yang abnormal.
Yang mengatakan, ini sangat mengganggu dan sebagai pengguna saya akan mengharapkan peringatan privasi yang sangat spesifik sebelum Anda mulai melakukan itu.
sumber
Ada juga sudosh ( http://sudosh.sourceforge.net ) yang akan melakukan sesi logging. Anda memiliki opsi untuk menjalankannya sebagai shell yang ditentukan untuk pengguna atau melalui sudo. Ini melacak timing untuk setiap sesi juga sehingga Anda dapat memutar ulang sesi dan menontonnya (termasuk sesi edit dan yang lainnya).
sumber