個々のアクティブTTYのbash履歴を表示する

個々のアクティブTTYのbash履歴を表示する

私はチームのシステム管理者がログインしている他のユーザーのために他の端末で何が起こっているのかを監視するのに役立つスクリプトを書いています。

今私が経験している問題の1つは、入力されたコマンドを表示する方法です。ユーザーが終了または入力するまで履歴が保存されないことを知っていますが、history -aコンテンツを表示する方法が必要です。メモリのどこかに保存されていても記録に残ります。

あなたはどこかに保存されていますか/proc/${pid_of_users_bash}?一意の文字列(EG:、echo "foobarbaz"次にgrep for)をエコーするコマンドを入力してみました。フヴァーズ/proc/PIDディレクトリのフラットファイルをリンクしましたが、幸運ではありませんでした。

PROMPT_COMMAND設定や設定に関連しないソリューションを持つ人がいる場合histappend(例:これら)、本当にありがとうございます。

ベストアンサー1

Bashは希望する情報を提供しません。ユーザーが設定を上書きしやすいCOMMAND_PROMPTので、設定を避けたいと思います。histappendただし、ユーザーが各コマンドの前にスペースを設定して挿入すると、HISTCONTROL="ignorespace"コマンドが履歴に保存されるのを完全に無効にすることができます。したがって、監視を望まないユーザーはbash履歴を介して確実に監視できません。

個々のセッションを一時的に監視できますstrace。ユーザー bash の PID を検索し、 を呼び出すと、strace -p <bash-pid> 2>&1 |grep "read(0,"スペルエラーや編集コマンドなど、ユーザーが入力したすべての文字を表示できます。

ソフトウェアパッケージはほとんどのLinuxディストリビューションに付属していますauditd。管理者が過去のシステム活動に関する情報を取得できるように、システムコンポーネントを監視および監査します。 PAMモジュールはpam_tty_auditTTYアクティビティ監査と連携し、auditdTTYアクティビティ監査を有効または無効にします。車輪を再発明しpam_tty_audit

おすすめ記事