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