
どのログからすべてのユーザーが実行した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"))