要优化history命令的显示格式,使其包含IP地址和操作时间,可以通过以下几种方法实现:
export HISTTIMEFORMAT="%F %T `who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` "
nano ~/.bashrc
export HISTTIMEFORMAT="%F %T `who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` "
export HISTFILESIZE=100000
export HISTSIZE=100000
shopt -s histappend
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
source ~/.bashrc
echo 'export PROMPT_COMMAND='\''RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL] $(who -u am i | awk "{print \$NF}" | sed "s/[()]//g")"'\''' | sudo tee -a /etc/bashrc
echo 'local6.* /var/log/commands.log' | sudo tee -a /etc/rsyslog.conf
sudo systemctl restart rsyslog
执行以上配置后,history命令将显示如下格式:
1 2023-10-25 14:30:45 192.168.1.100 ls -l
2 2023-10-25 14:31:22 192.168.1.100 cd /var/log
3 2023-10-25 14:32:10 192.168.1.100 tail -f commands.log
who -u am i
命令,对于本地登录可能无法获取IP如果需要更详细的审计功能,可以考虑使用以下工具:
- auditd
:Linux审计系统
- script
命令:记录整个会话
- tlog
:终端会话记录工具