マシン上のすべてのシェルで送信されたすべてのコマンドをログに記録するエレガントな方法はありますか?これは、使用頻度の低いUbuntuサーバーのコンテキストであり、人間のユーザーは私だけです。 (自動システムで使用されるユーザーアカウントはいくつかあります。)
これは目立たず、オーバーヘッドが少ないものにしたいので、script
のような簡単な方法があれば気に入っています。
時代の幕開け以来(実際には、人々が実際に使用したコンピューターサイクルごとに実際のお金を支払わなければならなかった時代からさかのぼります)Unixとそのクローンには、プロセスアカウンティング(acct
)と呼ばれるシステムが組み込まれています。システム管理者は、ユーザーが何をしているかを正確に把握しているため、それに応じて請求することができます。
acct
機能は、今日でもほとんどのUnixおよびLinuxシステムに存在しています。
このサイト: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html 有効にする方法を説明しています。
これは非常に素晴らしくて速いです すべてのシェルコマンドをログに記録する方法 :
ステップ1:
お気に入りのテキストエディタを使用して/ etc/bashrcを開き、最後に次の行を追加します。
export Prompt_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
ステップ2:
/etc/syslog.confファイルに次の行を追加して、local6をログファイルにトラップするようにsysloggerを設定します。
local6.* /var/log/cmdlog.log
snoopy を使用できます。
インストールと削除は非常に簡単です(カーネルモジュールやパッチは必要ありません)。これは適切な監査ソリューションではなく、簡単に回避できることに注意してください。
開示:私は現在スヌーピーのメンテナーです。
sudosh をシェルラッパーとして使用できます。これには、実行したすべての自動ログが含まれ、ログファイルを再生できます。 詳細については、そのWebサイトを参照してください 。