특정 명령으로 어떤 파일에 어떤 변경 사항이 적용되었는지 어떻게 알 수 있나요? 아니면 이를 가로챌 수도 있나요?

특정 명령으로 어떤 파일에 어떤 변경 사항이 적용되었는지 어떻게 알 수 있나요? 아니면 이를 가로챌 수도 있나요?

프로그램이 있다고 해보자mysterion실행하면 일부 파일이 수정될 수 있습니다. 이것이 해로운지 알아내기 위해 최소한 어떤 파일이 어떻게 수정되었는지 알 수 있는 방식으로 실행하고 싶습니다. 또는 다른 프로그램을 여기에 연결하여 승인할지 거부할지 결정할 수도 있습니다. 변화앞으로심지어 그런 일도 일어납니다. 단계별 디버깅보다 더 간단한 방법이 있습니까?

물론 "변경 사항 식별" 부분에서는 전체 파일 시스템과 diff그 이상의 스냅샷을 찍을 수 있지만 이는 아마도 큰 망치로 너트를 제동하는 것과 같을 것입니다...

답변1

모니터링 부분(샌드박스 없이)은 간단히 다음을 실행하여 수행할 수 있습니다.

strace -o file.log -e trace=file /path/to/your/binary

물론 이것은 약간의 "잡담"입니다. 따라서 약간의 후처리를 수행해야 할 수도 있습니다. strace일반적으로 같은 이름의 패키지에 포함되어 있습니다. 특별한 64비트 버전도 있습니다.

답변2

당신은 다음과 같은 것을 사용할 수 있습니다시스템 추적이렇게 하면 권한 없이 샌드박스에서 프로그램을 실행할 수 있습니다. 그런 다음 ptrace를 사용하여 프로그램이 열려고 하는 파일 처리를 확인할 수 있습니다.

SELinux를 사용하는 경우 다른 옵션은 다음을 사용하는 것입니다.SELinux 샌드박스. 여기에서 열 수 있는 파일을 제한하고, 파일을 전혀 열 수 없게 만드는 등의 작업을 할 수 있습니다.

AppArmor를 사용하여 이러한 작업을 수행할 수 있는 방법이 있다고 생각합니다. 하지만 안타깝게도 저는 의미 있는 제안을 제공할 만큼 AppArmor에 익숙하지 않습니다.

관련 정보