====== 操作ログ ====== ===== Scrip ===== ==== 自動でログを取る ==== ~/.bash_profile に以下のように記述 script -q -a -f /var/log/script/`whoami`_script.log 通常は以下のように記述するんだが、前述で動いてる… P_PROC=`ps aux | grep $PPID | grep sshd | awk '{ print $11 }'` if [ "$P_PROC" = sshd: ]; then script -q -a -f /var/log/script/`whoami`_script.log exit fi ==== 時刻付きでログを取る ==== SCRIPT_FILE="`whoami`_script.log" SCRIPT_PATH="/var/log/script" touch $SCRIPT_PATH/.$SCRIPT_FILE tail -F $SCRIPT_PATH/.$SCRIPT_FILE | awk --assign awk_var="$USERNAME" '{ print strftime("%Y/%m/%d %H:%M:%S") " " $0 } {system (" ")}' >> $SCRIPT_PATH/$SCRIPT_FILE & SCRIPT_PROCESS=$! script -fq $SCRIPT_PATH/.$SCRIPT_FILE kill $SCRIPT_PROCESS & rm -f $SCRIPT_PATH/.$SCRIPT_FILE & exit ==== 時刻とユーザ名付きでログを取る ==== USERNAME="`whoami`" SCRIPT_FILE="`whoami`_script.log" SCRIPT_PATH="/var/log/script" touch $SCRIPT_PATH/.$SCRIPT_FILE tail -F $SCRIPT_PATH/.$SCRIPT_FILE | awk --assign awk_var="$USERNAME" '{ print strftime("%Y/%m/%d %H:%M:%S") " " awk_var ": " $0 } {system (" ")}' >> $SCRIPT_PATH/$SCRIPT_FILE & SCRIPT_PROCESS=$! script -fq $SCRIPT_PATH/.$SCRIPT_FILE kill $SCRIPT_PROCESS & rm -f $SCRIPT_PATH/.$SCRIPT_FILE & exit ===== psacct ===== psacctはバイナリファイルにコマンドの**実行ログのみ**を保存するサービス\\ 記録されるのは**何時・誰が・どのコマンドを実行**したかという情報に限られ、コマンドの**オプションや実行結果**は確認することができないが、保存されるlog(**/var/account/pacct**) の所有者はrootであり、バイナリ形式で保存されるため、簡単に改竄することはできない。 一方、scriptコマンドは入力したコマンドや実行結果をすべて保存するものの、保存したファイルは保護されていない為、 オペレーションログに関する運用要件がある場合、scriptコマンドとpsacctサービスを**併用**して設定することが望ましい。 ===== 参考 ===== [[https://dev.classmethod.jp/operation/logging_operation_using_script_and_psacct/|scriptとpsacctでオペレーションログを記録する]] [[https://blog.chattytak.com/2017/11/05/linux-%E6%93%8D%E4%BD%9C%E8%A8%98%E9%8C%B2%E3%82%92script%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E7%9B%A3%E6%9F%BB%E3%83%AD%E3%82%B0%E3%81%A8%E3%81%97%E3%81%A6%E8%87%AA%E5%8B%95%E5%8F%96/|Linux 操作記録をscriptコマンドで監査ログとして自動取得]] [[https://orebibou.com/2015/03/snoopy-logger%E3%81%A7%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E5%AE%9F%E8%A1%8C%E3%83%AD%E3%82%B0%E3%82%92syslog%E3%81%A7%E6%AE%8B%E3%81%99/|snoopy-loggerでコマンドの実行ログをsyslogで残す]]