(rootまたはuserのいずれかによって)bashに入力されたすべてのコマンドと、すべてのファイル操作をログに記録したいと思います。
このログファイルに問い合わせて非常に役立つ情報を提供できるツールを作成できるという考えです。
たとえば、これまでに入力したすべてのコマンドを1行に1つずつリストし、8〜24時間の時間差を「---」、「===」と表示すると便利です。 2014年6月24日===”24時間以上のギャップ。 「===…」セッション内の重複も排除すれば、さらに効果的です!
つまり、「flask / mod_wsgi /apacheをPython3.xにアップグレードする」などのタスクを実行すると、レコードが残され、6か月後に同じことをしなければならない場合に取得できる証跡が残ります。
同じ目的で、特定のパッケージをインストールした後にどのファイルシステムの変更が発生したかを確認すると非常に便利です。これで、構成ファイルがどこに配置されたかがわかります。
PS私はUbuntu14.04を使用しています
承認された回答:
これは実際の会計ほど包括的ではなく、ユーザーが簡単に元に戻すことができますが、実際の会計システムである必要はなく、BASHとrsyslogの両方が使用されていると仮定して、システム全体のBASHRCファイルを編集します。 :
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-commandsログファイルを追加します:
/var/log/bash_commands.log
rsyslogを保存して再起動/再ロードします。 (ローテーションによって最終的にログファイルが上書きされるため、さらに検討または構成が必要になる場合があります。)
パッケージにインストールされているすべてのファイルを表示するには:
dpkg-query -L [package_name]
したがって、ソフトウェアをインストールするときに、そのようなことを実行できます。
dpkg-query -L abc-package > /var/log/files_abc-package.log