어떤 로그에서 모든 사용자가 실행한 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"))