GNU/Linux >> Linux の 問題 >  >> Linux

サーバー上のすべてのユーザーの bash 履歴を検索できますか?

getent を使用 ホーム ディレクトリを列挙します。

getent passwd |
cut -d : -f 6 |
sed 's:$:/.bash_history:' |
xargs -d '\n' grep -s -H -e "$pattern" 

ホーム ディレクトリがよく知られている場所にある場合、

grep -e "$pattern" /home/*/.bash_history

もちろん、ユーザーが別のシェルまたは別の値の HISTFILE を使用している場合は、 、これではあまりわかりません。また、これは、シェルを介して実行されなかったコマンド、またはエイリアスと関数、およびユーザーの $PATH の早い段階でユーザーディレクトリにあった現在削除された外部コマンドについても通知しません。 .ユーザーが実行したコマンドを知りたい場合は、プロセス アカウンティングまたはより洗練された監査システムが必要です。コンピューターでのアクティビティの監視を参照してください。プロセスが終了した後、プロセスが実行された時間を確認する方法は?


find /home -name .bash_history | xargs grep <string>

または:

grep string $(find /home -name .bash_history)

これは、デフォルトの場所にあるホーム ディレクトリを対象とすることに注意してください。 /etc/passwd を解析した方が良いでしょう または getent を呼び出す 、その出力を解析します。

for i in $(getent passwd | cut -d: -f6 ); do grep string ${i}/.bash_history; done

できます

find /home | grep bash_history | xargs grep "whatever"

しかし、私はそれがあなたが考えていたよりもはるかに良いとは思いません.


Linux
  1. Bash履歴コマンドの使用方法

  2. バッシュ履歴の自動クリーンアップ?

  3. ファイル内の複数行パターンを検索するにはどうすればよいですか?

  1. コマンド ライン:grep に一致するすべてのファイル名を検索して置換します

  2. bash履歴の検索位置をリセット

  3. セッション間で bash 履歴を保持するにはどうすればよいですか?

  1. LinuxでのBash履歴の解析

  2. Bashスクリプトをファイルに接続できますか?

  3. Linux でロックされているすべてのユーザーを一覧表示するにはどうすればよいですか?