OSユーザの操作ログを取得する方法
環境
AWS EC2 AmazonLinux
方法1:scriptで取得
profile.dを読み込む時だけ実行されるようにシェルを作成
#vi /etc/profile.d/script.sh
P_PROC=`ps aux | grep $PPID | grep sshd | awk '{ print $11 }'`
if tty -s;then
if [ "$P_PROC" = sshd: ]; then
script -q /var/log/script/`whoami`_`date '+%Y%m%d%H%M%S'`.log
exit
fi
fi
ifの分岐は無限ループ起こさないようにするためのポイント!
ログ保存用ディレクトリ作成
/var/log/script/は各ユーザが書き込めるようにパーミッション設定しておきます。
#mkdir /var/log/script
#chmod 777 /var/log/script
方法2:pacctで取得
amazonlinuxはデフォルトでインストールされているので起動するだけ!
簡単ですね。
chkconfigで起動有効
#chkconfig psacct on
サービスstart
#service psacct start
ログは/var/account/pacctに溜まります。
確認コマンド
ユーザのコマンド履歴が表示
#lastcomm --user **ユーザ名
例)lastcomm --user ec2-user
ls ec2-user pts/0 0.00 secs Wed Apr 1 1:22
参考URL
下記サイトを参考にさせていただきました。
http://d.hatena.ne.jp/higher_tomorrow/20110330/1301435608#20110330f3