Linuxシステムで誰がファイルを編集したり削除したりしたのかを追跡するのは難しい問題です。特に、誤ったデータベース削除のような重大な問題が発生した場合、その原因を特定するのは非常に難しくなります。通常、historyコマンドを使用して過去のコマンドを確認できますが、この履歴が削除されてしまった場合は対処が難しくなります。
しかし、Linuxのscriptコマンドを利用することで、これらの問題を解決することができます。このコマンドはターミナルセッションを記録し、どのユーザーが何をしたのかを詳細に追跡できます。
設定手順
2.1 scriptコマンドの確認
まず、scriptコマンドがインストールされているか確認します。
[root@localhost ~]# which script
/usr/bin/script
2.2 /etc/profileの編集
/etc/profileファイルの末尾に以下の内容を追加します。
[root@localhost ~]# vim /etc/profile
if [ $UID -ge 0 ]; then
exec /usr/bin/script -t 2>/var/log/script/$USER-$UID-$(date +%Y%m%d%H%M).$(date).date -a -f -q /var/log/script/$USER-$UID-$(date +%Y%m%d%H%M).log
fi
パラメータの説明:
-t: 時間データを出力-f: ログファイルをリアルタイムで表示-a: 既存のログファイルに追記-q: シリエンスモードで実行
2.3 ディレクトリの作成と権限設定
ログファイルを保存するディレクトリを作成し、適切な権限を設定します。
[root@localhost ~]# mkdir /var/log/script
[root@localhost ~]# chmod 777 /var/log/script/
2.4 環境の反映
変更を適用するために、プロファイルを読み込みます。
[root@localhost ~]# source /etc/profile
検証
新しいターミナルを開き、いくつかのコマンドを実行してみましょう。
[root@localhost ~]# cd /var/log/script/
[root@localhost script]# ll
total 16
-rw-r--r-- 1 root root 68 12月 22 15:46 root-0-201712221545.date
-rw-r--r-- 1 root root 111 12月 22 15:46 root-0-201712221545.log
-rw-r--r-- 1 root root 0 12月 22 15:46 root-0-201712221546.date
-rw-r--r-- 1 root root 5693 12月 22 15:46 root-0-201712221546.log
.logファイルには操作内容が、.dateファイルにはタイムスタンプが記録されます。
さらに、scriptreplayコマンドを使用して、記録したセッションを再現することもできます。
[root@localhost script]# scriptreplay root-0-201712221545.date root-0-201712221545.log