CentOS 명령 기록 로그를 기록하는 방법은 무엇입니까?

CentOS 명령 기록 로그를 기록하는 방법은 무엇입니까?

우분투에서 같은 것을 시도했습니다이것을 따르라.

  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 다시 시작

우분투에서의 출력:

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지시어는 사용자가 이를 변경할 수 없도록 합니다.

관련 정보