2011-07-11 21:44:59 +0000 2011-07-11 21:44:59 +0000
30
30

Linuxで他のユーザのコマンド履歴を表示するには?

他のユーザーのコマンド履歴を表示するには?

私は自分のマシンの管理者です。/home/user_name/.bash_historyを見ることで通常の履歴を見ることができますが、そのuser_namesudoをしていた時のコマンドを見ることができません。

あるユーザが実行した全てのコマンドを表示する方法はありますか?

回答 (6)

23
23
23
2011-07-11 21:51:46 +0000

Debian ベースのオペレーティングシステムでは、doingtail /var/log/auth.log | grep usernameshould はユーザの sudo の履歴を取得することができます。ユーザの通常コマンド+sudoコマンドの統一されたコマンド履歴を取得する方法はないと思います。

RHEL ベースのオペレーティングシステムでは、/var/log/secure の代わりに /var/log/auth.log をチェックする必要があるでしょう。

5
5
5
2015-11-04 21:51:20 +0000

以下をテストしたところ、見事に動作しました。

sudo vim /home/USER_YOU_WANT_TO_VIEW/.bash_history
2
2
2
2011-07-11 21:52:18 +0000

sudo somecommand のようにユーザがコマンドを発行した場合、そのコマンドはシステムログに表示されます。

eg, sudo -s, sudo su, sudo sh, /root/.bash_history などでユーザがシェルをスポーンした場合、そのコマンドはルートユーザの履歴、つまり 0x6& などに表示される可能性があります。

1
1
1
2019-01-16 07:16:45 +0000

以下のコマンドを使用してください

sysdig -c spy_users

sysdig インストールされていない場合 , ここに をインストールしてください。

1
1
1
2016-01-03 19:43:19 +0000

ここでは # zless /var/log/auth* が便利です。これは圧縮されたファイルも開きます。:n を使って前へ、または後ろへとジャンプすることができます。

あるいは、例えば :p を使うこともできます。これについて詳しくは Arch Linux wiki を読んで下さい。

-1
-1
-1
2018-09-30 16:38:21 +0000

このロジックは、他の多くの目的にも適用されます。
そして、/home/ ファイルシステムから各ユーザの .sh_history を読み出す方法は?何千人もいるとしたら?

#!/bin/ksh
last |head -10|awk '{print $1}'|
 while IFS= read -r line
 do
su - "$line" -c 'tail .sh_history'
 done

ここに がスクリプトです。

関連する質問

6
10
5
37
6