2011-08-03 2 views
8

특정 파일을 수정 한 사용자를 찾는 방법에 대한 지침을 찾고 있습니다. inotify는 특정 파일을 만졌을 때 알림을받는 것이 좋지만 어떤 파일을 수정했는지 어떻게 알 수 있습니까? 나는 lsof를 사용하는 것을 생각할 수 있지만, 나는 그것이 원하는만큼 "실시간"이 아니거나 자원에 너무 많은 세금이 부과 될지도 모른다고 두려워하고있다. 실시간으로, 사용자가 파일에 명령을 단순히 실행하면 파일에 lsof을 실행할 때까지 lsof에 의해 선택되지 않을 수 있습니다.inotify - 파일을 수정 한 사용자를 찾는 방법은 무엇입니까?

답변

11

당신은 audit deamon 사용할 수 있습니다

sudo apt-get install auditd 

이 (-p wa를)

touch /tmp/myfile 

을 모니터링 할 파일을 선택 쓰기에 대한 감사를 추가 및 변경 속성 :

sudo auditctl -w /tmp/myfile -p wa -k my-file-changed 

을 파일을 터치 일부 사용자 :

touch /tmp/myfile 

확인 감사 로그 :

sudo ausearch -k my-file-changed | tail -1 

당신은 출력에

유형 = 시스템 콜 MSG = 감사 (57 1313055675.066 일) : 명령을 실행하는 사용자의 UID을 볼 수 있습니다 아치 = c000003e 콜 = 2 개 성공 = YES 출구 = 3 = A0 = 941 7ffffb6744dd A1 A2 A3 = 1B6 = 7ffffb673bb0 항목 = 1 PPID PID = 3428 = 4793 AUID = 4294967295 UID = 1000 GID EUID = 1000 = 1000,SUID = 1000 FSUID = 1000 EGID = 1000 SGID = 1000 FSGID = 1000 TTY = PTS1 SES = 4294967295 통신 = "터치"EXE = "/ 빈/터치"키 = "내-파일 변경"

자세한 내용은 man pages 또는 sample guide을 참조하십시오.

+0

굉장! 고마워. – user837208

2

이전 명령에 -i 옵션을 추가하면 사람이 읽을 수있는 형식으로 출력됩니다. uid가 서버의 실제 사용자 이름으로 변환됩니다.

ausearch -k my-file-changed -i | 꼬리 -1

관련 문제