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.