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)); }'