2012-04-18 3 views
4

필자가 작성한 애플리케이션의 경우 모든 프로세스가 특정 파일에 액세스하고 해당 정보를 로그 파일로 덤프하고 싶습니다. 프로세스 중 하나가이 파일을 삭제할 것이므로 프로세스 이름도 알고 싶습니다.Linux에서 파일 액세스 모니터링

파일 액세스를 모니터링하기 위해 INotify 라이브러리를 사용할 수는 있지만 파일에 액세스하는 프로세스 이름을 제공하지 않습니다. 이 문제는 리눅스에서도 Auditctl 패키지를 사용하여 가능할 수 있습니다. 그러나이 옵션도 사용할 수 없습니다 :-(

최종 고객이 프로그램을 실행할 준비가되었지만 준비가되지 않은 이유는 실제로 제어 된 환경입니다 새 패키지를 설치하거나 기존 유틸리티로 변경합니다.

+0

프로그래밍에 관한 것이 아니라 더 많은 시스템 관리. serverfault로 이동 투표. – Konerak

+0

@konerak : 시스템 관리가 아닙니다. 이러한 도구가 모두있는 경우이 작업을 수행하는 코드를 작성하고 싶습니다. 나는 Auditctl과 같은 도구를 사용할 수 없다고 언급했다. – Geek

+2

아하, 고마워. 왜 그 패키지를 사용할 수 없는지 우리에게 말할 수 있습니까? 더 이상 설명하지 않고 "나는 그 중 하나를 사용할 수 없다"는 이유로 다른 패키지를 거부 할 것을 제안하지 않습니다. – Konerak

답변

1

안정적으로 단독 사용자 공간에서 리눅스에 직접 연결된 파일 액세스를 감사 할 수 없습니다.

을 당신은 lsof를 함께 폴링 수 있지만 사이의 접근을 감지하지 못하고 위험을 것입니다 폴링의 오버 헤드가 발생하지 않도록하고 이벤트 손실을 피하는 것이 원래의 dnotify 모듈 (inotify ...에 의해 폐기 된)의 목적이었습니다. 감사 시스템 파일을 열 때 사용자 식별을 제공합니다.

파일을 NFS 서버로 이동할 수 있으면 NFS 로깅을 사용하여 파일에 대한 액세스를 기록 할 수 있습니다.

고객이 프로덕션 서버이거나 라이브 서버가 될 개발 서버 인 경우 새 패키지를 설치하지 않을 수도 있습니다. 다음 개발 또는 테스트 서버에서 감사 설정 권한을 요청하는 것을 고려해야합니다.