로 시스템 호출을 추적 할 수 strace
있지만 실제로 불가피한 속도 저하가 있습니다. strace
명령이 상승 된 권한으로 실행되는 경우 루트 로 실행해야합니다 .
sudo strace -f -o foo.trace su user -c 'mycommand'
더 빠른 다른 방법은 파일 시스템 액세스 기능을 둘러싼 라이브러리를 미리로드하는 것입니다 LD_PRELOAD=/path/to/libmywrapper.so mycommand
. LD_PRELOAD
환경 변수는 상승 된 권한으로 호출 프로그램에 전달되지 않습니다. 해당 랩퍼 라이브러리의 코드를 작성해야합니다 ( “재미와 이익을위한 라이브러리 인터 포저 빌드”의 예 ). 웹에 재사용 가능한 코드가 있는지 모르겠습니다.
특정 디렉토리 계층에서 파일을 모니터링하는 경우 해당보기를 통한 모든 액세스가 기록되도록 LoggedFS 를 사용하여 파일 시스템 을 볼 수 있습니다.
loggedfs -c my-loggedfs.xml /logged-view
mycommand /logged-view/somedir
LoggedFS를 구성하려면 프로그램과 함께 제공된 샘플 구성으로 시작하고 LoggedFS 구성 파일 구문을 읽으 십시오 .
또 다른 가능성은 Linux의 감사 서브 시스템 입니다. auditd
데몬이 시작 되었는지 확인한 다음로 로그 할 대상을 구성하십시오 auditctl
. 기록 된 각 작업은 /var/log/audit/audit.log
(일반 배포시)에 기록됩니다 . 특정 파일 시청을 시작하려면
auditctl -a exit,always -w /path/to/file
디렉토리에 감시를두면 디렉토리에있는 파일과 그 하위 디렉토리도 반복적으로 감시됩니다. 감사 로그가 포함 된 디렉토리를 보지 않도록주의하십시오. 로깅을 특정 프로세스로 제한 할 수 있습니다 auditctl
. 사용 가능한 필터에 대한 매뉴얼 페이지를 참조하십시오 . 감사 시스템을 사용하려면 루트 권한이 있어야합니다.
strace
특히 Linux에 관심이 있다고 가정합니다. 옳은?