Details zu Sudo-Befehlen, die von allen Benutzern ausgeführt werden

9

Aus welchem ​​Protokoll kann ich Details zu Sudo-Befehlen abrufen, die von einem beliebigen Benutzer ausgeführt werden. Es sollte das Arbeitsverzeichnis, den Befehl und den Benutzer enthalten. Es ist hilfreich, wenn Sie mir dazu ein Shell-Skript zur Verfügung stellen können

Rakesh R Nair
quelle

Antworten:

22

Abhängig von Ihrer Distribution; einfach:

$ sudo grep sudo /var/log/secure

oder

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

was gibt:

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

Der Benutzer, der den Befehl ausführt, steht in diesem Fall hinter dem sudo:- gareth.

PWD ist das Verzeichnis.

USERist der Benutzer, garethder als - rootin diesem Beispiel ausgeführt wird.

COMMAND ist der Befehl ausgeführt.

Daher wird in dem obigen Beispiel garethverwendet sudozu laufen yum updateund lief dann in diesem Beispiel. Davor gab er das falsche Passwort ein.

Auf neueren Systemen:

$ sudo journalctl _COMM=sudo

gibt eine sehr ähnliche Ausgabe.

garethTheRed
quelle
0

Ein "Ergebnisfilter" für Gareths Lösung. (für diejenigen, die nach Posttitel angekommen sind, nicht nach Beschreibung)

Bietet Ihnen eine saubere Liste von Nur-Befehlen, die von allen Benutzern als sudo ausgeführt werden.

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

Problemumgehung, wenn sed nicht verfügbar ist

$sudo journalctl _COMM=sudo | grep COMMAND

C & P-Ergebnisse in Google Sheets

In Zelle B1 C & P diese Formel

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