파일 액세스 이벤트 차단

파일 액세스 이벤트 차단

나는 다른 응용 프로그램이 파일을 열거나 쓰려고 할 때를 알 수 있고 이 액세스를 차단할 수 있는 코드를 작성하고 싶습니다. 가능합니까? 어떻게?

예를 들어 비디오가 포함된 zip 파일의 경우 VLC로 파일을 열면 도구에서 VLC가 파일을 열지 못하게 하고 임시 폴더에 아카이브의 압축을 푼 다음 vlc를 사용하여 비디오를 다시 엽니다.

나는 아이디어가 얼마나 나쁜지 관심이 없으며 개인적인 호기심과 기술적 도전에 더 관심이 있습니다. 이것은 zip 및 VLC와 관련이 없으며 내 파일 컨테이너입니다.

저는 Linux 커널을 처음 사용합니다.

답변1

리눅스 보안 모듈파일과 같은 리소스에 대한 액세스를 제어하도록 설계되었습니다.

LSM은 필수 액세스 제어 모듈을 성공적으로 구현하는 데 필요한 모든 것을 제공하도록 설계되었습니다... LSM은 중요한 내부 커널에 액세스하기 위해 사용자 수준 시스템 호출이 이루어지는 모든 지점에서 "후크"(모듈에 대한 상향 호출)를 커널에 삽입합니다. inode 및 작업 제어 블록.

이를 달성하려면 "호출되었습니다. VLC가 비디오가 포함된 zip 파일을 열고 있습니다."와 같은 이벤트를 해당 파일의 압축을 풀고 압축을 푼 파일의 이름을 반환하는 사용자 공간 프로세스에 전달하는 장치 드라이버를 만들어야 한다고 open()생각합니다. , LSM 모듈은 이를 실제 커널 open호출에 전달합니다. 그런 다음 해당 close()호출에서 압축이 풀린 비디오 파일을 삭제할 수 있도록 LSM 모듈의 이벤트를 사용자 공간 프로세스로 전달합니다.

이것은 작은 문제가 아닙니다. 그 외에도 큰 보안 허점이 생기지 않도록 매우 주의해야 합니다. "야, 이건 다시 작성할 수 있어 /etc/shadow!"

답변2

기본 Solaris 기능이 호출 모니터링을 허용하는지 확실하지 않지만 open()쓰기 액세스를 모니터링하는 것은 가능합니다.

예를 들어 매뉴얼 페이지를 확인 port_create()하고 를 참조하십시오 /usr/include/port.h.

tail -f이벤트 기반 구현을 위해 Illumos에서 usr/src/cmd/tail을 확인하는 것도 흥미로울 수 있습니다.

관련 정보