bashで入力されたすべてのコマンドとすべてのファイル操作を記録する方法

bashで入力されたすべてのコマンドとすべてのファイル操作を記録する方法

bashに入力したすべてのコマンド(rootまたはuser)とすべてのファイル操作を記録したいです。

私の考えは、このログファイルを照会し、非常に有用な情報を提供するためのツールを書くことができるということです。

たとえば、「- - -」を使用して8〜24時間間隔を表し、「= = =(たとえば、2014年6月24日 = = =」)を使用して入力したすべてのコマンドを1行に1つずつ一覧表示します。するのが最善です。 >24時間間隔を示します。 「===...」セッションでも重複を排除する方が良いでしょう。

つまり、特定のタスク(「Flask / mod_wsgi / apacheをPython 3.xにアップグレードする」など)を完了するたびに、6か月後に同じタスクを実行する必要があるかどうかを見つけることができます。

同じ目的で特定のパッケージをインストールした後、ファイルシステムに何が起こるのかを見てみるのも良いでしょう。これにより、設定ファイルがどこにあるかがわかります。

PS私はUbuntu 14.04を使用しています

答え1

これは実際の会計ほど包括的ではなく、ユーザーは簡単に元に戻すことができますが、実際の会計システムである必要はなく、BASHとrsyslogの両方が使用されていると仮定すると、システム全体のBASH RCファイルを編集します。

sudo -e /etc/bash.bashrc

ファイルの末尾に追加します。

export PROMPT_COMMAND='RET_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RET_VAL]"'

logger時刻、ユーザー、コマンド、コマンドの戻り値は上に記録されています。新しいファイルを使用して「local6」のロギングを設定します。

sudo -e /etc/rsyslog.d/bash.conf

内容もあります...

local6.*    /var/log/bash_commands.log

rsyslog を再起動します。

sudo service rsyslog restart

ログアウトしてください。ログイン。ログ回転:

sudo -e /etc/logrotate.d/rsyslog

同じ方法で回転できるログファイルのリストがあります。

/var/log/mail.warn
/var/log/mail.err
[...]
/var/log/message

リストに新しいbashコマンドログファイルを追加します。

/var/log/bash_commands.log

rsyslogを保存して再起動/再ロードします。 (回転は最終的にログファイルを上書きするため、より多くの考えや設定が必要になる場合があります。)

パッケージとしてインストールされているすべてのファイルを表示するには、次の手順を実行します。

dpkg-query -L [package_name]

したがって、ソフトウェアをインストールするときに同様の作業を実行できます。

dpkg-query -L abc-package > /var/log/files_abc-package.log

関連情報