如何记录CentOS的命令历史日志?

如何记录CentOS的命令历史日志?

我在 Ubuntu 上尝试过同样的事情按照此

  1. 修改/etc/bash.bashrc

  2. 将以下行添加到该文件的末尾

    export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
    
  3. 创建一个新文件/etc/rsyslog.d/bash.conf

  4. 将行添加到文件中

    local6.*    /var/log/commands.log
    
  5. 将行添加到文件中/etc/logrotate.d/rsyslog

    /var/log/commands.log
    
  6. 重新启动 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指令阻止用户更改它。

相关内容