Detalhes sobre os comandos sudo executados por todos os usuários

10

A partir de qual log posso obter detalhes sobre os comandos sudo executados por qualquer usuário. Ele deve conter o diretório de trabalho, comando, usuário. Será útil se você puder me fornecer um script de shell para fazer isso

Rakesh R Nair
fonte

Respostas:

23

Dependendo da sua distribuição; simplesmente:

$ sudo grep sudo /var/log/secure

ou

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

que dá:

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

O usuário que está executando o comando está após o sudo:- garethneste caso.

PWD é o diretório

USERé o usuário que garethestá executando como - rootneste exemplo.

COMMAND é o comando executado.

Portanto, no exemplo acima, garethcostumava sudoexecutar yum updatee, em seguida, executou este exemplo. Antes disso, ele digitou a senha incorreta.

Em sistemas mais recentes:

$ sudo journalctl _COMM=sudo

dá uma saída muito semelhante.

garethTheRed
fonte
0

Um "filtro de resultados" para a solução de Gareth. (para aqueles que chegaram pelo título da postagem, não pela descrição)

Fornece uma lista limpa de apenas comandos, executada como sudo, por todos os usuários.

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

Solução alternativa se sed indisponível

$sudo journalctl _COMM=sudo | grep COMMAND

Resultados da C&P nas planilhas do Google

Na célula B1 C&P, esta fórmula

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