ターミナルのすべてのセッションで実行されたすべてのコマンドの時間とユーザーに関する情報を取得するためのターミナルコマンド

ターミナルのすべてのセッションで実行されたすべてのコマンドの時間とユーザーに関する情報を取得するためのターミナルコマンド

どのユーザーがいつターミナルでどのコマンドを実行したかを知りたいです。たとえば、いずれかのユーザーが「rmdir abc」を実行して特定のディレクトリを削除した場合、どのコマンドをいつ実行したかを知る必要があります。また、これを単一のセッションで必要とするのではなく、ログを維持するのと同じようにこのデータを利用できるようにして、任意の時点で分析できるようにする必要があります。

私もそのコマンドを試しhistory、時間も追加しましたが、コマンドの「ユーザー」は表示されず、セッション ベースなので、~/.bash_historyセッションが終了しない限り、データはファイルに追加されません。また、~/.bash_history時間とユーザーも表示されないので、役に立ちません。どなたか助けていただけないでしょうか。システムの起動時からどのユーザーがどのコマンドをいつ実行したかを確認したいだけです。

答え1

ユーザーが実行したコマンドを確認するにはsudo vim /home/USER_YOU_WANT_TO_VIEW/.bash_history

さらに詳しくはAUTHログを確認してくださいtail /var/log/auth.log | grep username

次のような同様の質問を試してください:bash 履歴でタイムスタンプを表示するにはどうすればいいですか?

答え2

それはすべてのユーザー自身の bash 履歴ファイルにあると思います。.bash 履歴ファイルのリストを取得して cat するだけです。

cd /home
find |grep .bash_history

出力:

./gediz/.bash_history

猫よりも

cat ./gediz/.bash_history

forループで実行できます

a=find ...
for i in $a
do
echo $a
cat $i
done

while ループを使用して Ubuntu の起動用のサービスを作成したり、rc.local ファイルを編集したりすることで、すべてのユーザーの .bash_history を各ループで安全な場所にバックアップできます。これにより、ユーザーが自分の .bash_history を削除した場合でも、実行された内容を確認できます。

関連情報