~/.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はバイナリファイルにコマンドの実行ログのみを保存するサービス
記録されるのは何時・誰が・どのコマンドを実行したかという情報に限られ、コマンドのオプションや実行結果は確認することができないが、保存されるlog(/var/account/pacct) の所有者はrootであり、バイナリ形式で保存されるため、簡単に改竄することはできない。
一方、scriptコマンドは入力したコマンドや実行結果をすべて保存するものの、保存したファイルは保護されていない為、
オペレーションログに関する運用要件がある場合、scriptコマンドとpsacctサービスを併用して設定することが望ましい。