すべてのユーザーが実行したsudoコマンドの詳細

すべてのユーザーが実行したsudoコマンドの詳細

どのログからすべてのユーザーが実行したsudoコマンドの詳細を取得できますか?作業ディレクトリ、コマンド、ユーザーを含める必要があります。これを行うためのシェルスクリプトを提供してください。

答え1

ディストリビューションによって異なります。

$ sudo grep sudo /var/log/secure

または

$ sudo grep sudo /var/log/auth.log

これは作る:

Nov 14 09:07:31 vm1 sudo: pam_unix(sudo:auth): authentication failure; logname=gareth uid=1000 euid=0 tty=/dev/pts/19 ruser=gareth rhost=  user=gareth
Nov 14 09:07:37 vm1 sudo: gareth : TTY=pts/19 ; PWD=/home/gareth ; USER=root ; COMMAND=/bin/yum update
Nov 14 09:07:53 vm1 sudo: gareth : TTY=pts/19 ; PWD=/home/gareth ; USER=root ; COMMAND=/bin/grep sudo /var/log/secure

この例では、コマンドを実行するユーザーはsudo:- の後ろにあります。gareth

PWDディレクトリです。

USERこの例では、gareth- で実行しているユーザーです。root

COMMAND実行するコマンドです。

したがって、上記の例では、garethを使用してこの例をsudo実行しyum updateて実行します。それ以前は間違ったパスワードを入力しました。

また、ローリングログファイルがある可能性があります。/var/log/secure*

最新システムの場合:

$ sudo journalctl _COMM=sudo

非常に似た出力を提供します。

答え2

Garethソリューションの「結果フィルタ」です。 (説明ではなく投稿タイトルでお越しの方のため)

すべてのユーザーがsudoで実行するコマンドのみをまとめたリストを提供します。

$sudo journalctl _COMM=sudo  | sed -e '/COMMAND/!d' -e 's/.*COMMAND=//' -e 's/.*bin\///'

sedが利用できない場合の回避策

$sudo journalctl _COMM=sudo | grep COMMAND

C&Pの結果はGoogleスプレッドシートに保存されます。

B1セルでのC&Pの数式

=arrayformula(REGEXREPLACE(A1:A,".*AND=/usr/bin/(.*)","$1"))

関連情報