UNIX 호스트의 모든 파일 변경 사항 추적

UNIX 호스트의 모든 파일 변경 사항 추적

저는 도구를 평가 중이며 이 애플리케이션(pip를 사용하여 설치)에 의해 추가, 변경 또는 제거된 모든 파일(시스템 구성 파일 포함)을 식별해야 합니다.

외부 호스트에 설치되면 모든 변경 사항을 추적하여 추적된 변경 사항을 통해 애플리케이션을 다른 위치로 가져갈 수 있습니다.

저는 응용 프로그램이나 설치 로그를 찾는 것이 아니라 이 설치와 해당 응용 프로그램의 변경 사항을 찾고 있습니다.

이는 평가 중인 애플리케이션의 영향을 감사하는 데에도 유용한 시나리오입니다.

한 가지 가능한 해결책은 fswatch(https://www.ostechnix.com/monitor-file-changes-using-fswatch-linux/), 그러나 루트 디렉터리를 모니터링할 수는 없습니다.

10년 전, Norton CleanSweep(https://en.wikipedia.org/wiki/Norton_CleanSweep)는 설치 응용 프로그램을 모니터링하고 이 설치로 추가된 모든 파일과 레지스트리 항목을 추적하여 추적된 설치를 완전히 제거할 수 있습니다. 이것이 바로 내가 찾고 있는 것이지만 유닉스 박스의 경우(데비안 기반 배포판이 완벽할 것입니다)

UNIX 호스트의 모든 변경 사항을 추적하는 데 사용할 수 있는 아이디어가 있습니까?

답변1

fswatch는 루트 디렉터리를 제공할 때 작업을 올바르게 처리하지 못하므로 inotifywait(https://linux.die.net/man/1/inotifywait) 사용할 수 있습니다.

파일 변경을 기다리기 위해 inotify를 사용합니다. 다음 명령을 사용할 수 있습니다:

sudo inotifywait -m -r --exclude "(/tmp.*|/var/cache.*|/dev/pts/|/var/log.*)"  -e MOVED_TO -e CREATE -e CLOSE_WRITE -e DELETE -e MODIFY -o /tmp/my_tracked_install_files /

어디

  • -m: 모니터 모드 사용
  • -r: 재귀 경로
  • --exclude는 정규식을 사용하여 특정 디렉터리(임시 디렉터리, 로그 디렉터리 및 /dev/pts에는 불필요한 변경 사항이 많기 때문에 이러한 디렉터리)에서 이벤트를 모니터링하지 않습니다.
  • -e MOVED_TO, CREATE, CLOSE_WRITE, DELETE 및 MODIFY: 관심 있는 유일한 이벤트(inotifywait는 목록을 포함하여 모든 유형의 파일 시스템 이벤트를 캡처합니다)
  • -o: 출력 파일

inotifywait는 다른 호스트에서 작성된 nfs 파일을 캡처하지 않습니다.

inotifywatches의 수를 늘려야 할 가능성이 높습니다(예:https://stackoverflow.com/questions/535768/what-is-a-reasonable-amount-of-inotify-watches-with-linux)

cat /proc/sys/fs/inotify/max_user_watches # default is 8192
sudo sysctl fs.inotify.max_user_watches=1048576 # increase to 1048576

관련 정보