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ディレクティブは、ユーザーがそれを変更できないようにします。

関連情報