DTrace는 특정 파일에 적용된 모든 chmod를 캡처합니다.

DTrace는 특정 파일에 적용된 모든 chmod를 캡처합니다.

Mac OS X 디렉토리 아래에는 사용자가 자신의 기본 설정에 따라 액세스할 수 있는 파일이 /audit있습니다 .chmod

chmod시간, 사용자 및 파일 chmod, 특히 후자를 기록하여 모든 파일에 수행된 모든 작업을 감사 해야 합니다 .

dtrace -n 'syscall::chmod:entry'이벤트를 감지 할 수 있습니다 . 첫 번째 매개변수를 어떻게 읽을 수 있나요 chmod?

man 2 chmod경로가 첫 번째 매개변수에 있음을 알려줍니다.

chmod(const char *path, mode_t mode);

그런데 어떻게 읽을 수 있나요 args[0]? 제가 하는 방식이 잘못된 것 같습니다. 항목이 실제 시스템 호출과 일치하지 않는 것일 수도 있습니다.

모니터링할 수 있는 프로브가 있는 경우 액세스를 위해 제공되는 매개변수와 유형이 무엇인지 어떻게 확인할 수 있습니까? 데이터 레이아웃에 따라 일부 포인터를 역참조해야 한다고 가정합니다.

답변1

인수는 에 있지만 arg0이는 실제 문자열이 아닌 호출자의 사용자 공간 주소입니다. 또한 다음으로 포장해야 합니다 copyinstr().

dtrace -n 'syscall::chmod:entry { printf("%d %s", uid, copyinstr(arg0)); }'

관련 정보