我在 Ubuntu 上尝试过同样的事情按照此。
修改
/etc/bash.bashrc
将以下行添加到该文件的末尾
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
创建一个新文件
/etc/rsyslog.d/bash.conf
将行添加到文件中
local6.* /var/log/commands.log
将行添加到文件中
/etc/logrotate.d/rsyslog
/var/log/commands.log
重新启动 Rsyslog
sudo 服务 rsyslog 重新启动
Ubuntu 上的输出:
Feb 2 05:17:58 ip-172-31-21-42 ubuntu: ubuntu [1785]: su - jawad [0]
Feb 2 05:17:58 ip-172-31-21-42 ubuntu: ubuntu [1785]: su - jawad [0]
Feb 2 05:18:38 ip-172-31-21-42 ubuntu: root [1817]: service awslogs restart [0]
Feb 2 05:18:56 ip-172-31-21-42 ubuntu: message repeated 2 times: [ root [1817]: service awslogs restart [0]]
Feb 2 05:20:29 ip-172-31-21-42 ubuntu: root [1817]: service awslogs restart [0]
Feb 2 05:20:41 ip-172-31-21-42 ubuntu: root [1817]: vi /etc/passwd [0]
Feb 2 05:20:52 ip-172-31-21-42 ubuntu: root [1817]: service rsyslog restart [0]
在 Red Hat Linux 中不工作
答案1
我一直将bash
命令记录为以下命令,多年来它一直运行良好:
readonly PROMPT_COMMAND='history -a >(logger -t "commandlog $USER[$PWD] $SSH_CONNECTION")'
该readonly
指令阻止用户更改它。