파일을 수정하는 프로세스 찾기 [복제]

파일을 수정하는 프로세스 찾기 [복제]

프로덕션 서버의 특정 파일이 무작위로 수정되고 있는데, 이는 로그 활동과 관련이 없는 것으로 보입니다. 어떤 프로그램이 이런 일을 하는지는 알 수 없었고, 의심되는 부분도 많았습니다. 범인을 어떻게 찾을 수 있나요?

항상 동일한 파일, 동일한 경로에 있지만 다른 서버와 다른 시간에 있습니다. 이 상자는 다음에 의해 관리됩니다.인형, 그러나 파일이 수정되는 동안 꼭두각시 로그에는 활동이 표시되지 않습니다.

어떤 프로세스가 이 파일을 수정하고 있는지 찾는 데 도움이 되는 커널 후크, 도구 또는 기술은 무엇입니까?


lsof는 파일이 매우 빠르게 열리고 수정되고 닫히므로 이러한 상황에는 적합하지 않습니다. 폴링에 의존하는 솔루션(예: lsof 자주 실행)은 좋지 않습니다.


  • 운영 체제: 데비안 테스트됨
  • 커널: Linux, 2.6.32~3.9, 32비트 및 64비트.

답변1

auditd를 사용하고 파일을 모니터링하는 규칙을 추가할 수 있습니다.

auditctl -w /path/to/that/file -p wa

그런 다음 기록될 항목을 관찰하십시오 /var/log/audit/audit.log.

답변2

찾고 있는 프로그램에 여전히 파일이 열려 있으면 다음 명령을 사용할 수 있습니다.

 sudo lsof /path/to/file/being/modified

다음 스크립트를 사용하여 작은 루프에서 호출할 수도 있습니다 getfileusers.sh.

 #!/bin/sh

 FILE=$1

 while true; do
    lsof "${FILE}"
 done > /tmp/fileusers.log

그런 다음 호출하십시오.

 sudo ./getfileusers.sh /path/to/file/being/modified

마지막으로 /tmp/fileusers.log누가 파일을 만졌는지 확인하세요.

답변3

SystemTap은 다음을 사용하여 이를 수행할 수 있습니다.Inode 모니터링 스크립트.

답변4

실시간으로 캡처할 수 있는 경우(예: 파일에 액세스 중) lsof를 실행하여 프로세스를 찾을 수 있습니다.

$ while :; do echo foo >> bar.txt; done &
$ sudo lsof bar.txt
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
bash    25723 terdon    1u   REG    8,6  5015796 16647496 bar.txt

관련 정보