어느 시점에서 파일을 수정하는 것처럼 보이는 (복잡한) 스크립트를 실행하고 있습니다. 스크립트/프로그램이 쓰기, chmod, chown 또는 내가 동의하지 않는 다른 작업을 시도할 때 경고를 받고 싶습니다. 프로그램이 파일 시스템의 나머지 부분에 정상적으로 액세스할 수 있기를 바랍니다.
액세스를 거부하는 것이 해결책이지만 스크립트를 루트로 실행해야 하기 때문에 작동하지 않습니다. 이 스크립트는 모든 액세스 제어 설정을 재정의할 수 있습니다. 루트가 아닌 사용자로 스크립트를 실행할 수 있더라도 액세스가 실패하면 스크립트는 다른 분기를 사용하기로 결정할 수 있습니다. 그렇기 때문에 액세스 거부 대신 액세스 경고를 선호합니다. 솔루션(예: SE Linux)이 있습니까?
답변1
이를 수행하는 방법에는 여러 가지가 있습니다.
심사
다음 명령을 사용하여 파일의 auditd 모니터링을 활성화합니다( auditd
서비스가 실행 중인지 확인한 후).
auditctl -a 종료, 항상 -F 경로=/경로/to/파일
/var/log/audit/audit.log
그런 다음 무슨 일이 일어나고 있는지 확인하십시오 .
완료되면 다음 명령을 사용하여 규칙을 삭제합니다.
auditctl -d 종료, 항상 -F 경로=/경로/to/파일
팬 알림
fanotify는 바이러스 스캐너를 위해 특별히 설계된 시스템입니다. 이를 통해 다른 프로그램이 파일을 열 때 한 프로그램이 이벤트 알림을 받을 수 있습니다. 그런 다음 모니터링 프로그램은 파일에 대한 액세스를 거부하거나 단순히 파일을 기록하는 등의 작업을 수행할 수 있습니다. 이곳의 장점은워치독은 아무런 작업도 수행하지 않고 단순히 이벤트를 기다릴 수 있으므로 파일을 열려고 하는 프로그램이 지연될 뿐입니다.. Watchdog이 계속하도록 허용할 때까지 실패하거나 성공하지 않습니다.
하지만 이 경로의 문제점은 fanotify가 새로운 것이며 이에 액세스하는 데 사용할 수 있는 간단한 명령줄 유틸리티가 없다는 것입니다. 자신만의 스크립트(스크립트 라이브러리에 인터페이스가 있는 경우)나 프로그램을 작성해야 합니다.
답변2
Linux의 경우 chattr +i the-file
파일 수정 작업도 방지됩니다 root
(다른 작업 제외 chattr
).
답변3
시스템이 dtrace(Solaris 및 그 파생 제품, FreeBSD, Oracle Linux, Mac OS X)를 지원하는 경우 dtrace 스크립트는 모든 사용자(루트 포함)가 원하는 파일에 대해 위 작업을 수행하는 것을 기록하거나 방지할 수도 있습니다.
dtrace를 사용하면 유죄 프로세스를 동결하여 이를 재개하거나 종료할 수 있습니다.
답변4
세분화된 파일 시스템 액세스가 필요한 소규모 스크립팅 작업의 경우 복잡한 감사 도구를 사용하지 않으려는 경우 젠투의 "샌드박스" 유틸리티가 유용합니다. 특히 선택한 파일에 대한 쓰기 액세스를 대화형으로 활성화 및 비활성화하는 쉬운 방법을 제공합니다(테스트 및 배포 시나리오용).
Gentoo에서는 기본적으로 사용할 수 있지만 다른 배포판에 설치하는 것은 그리 어렵지 않습니다.
http://git.overlays.gentoo.org/gitweb/?p=proj/sandbox.git;a=summary
내부적으로는 파일 시스템 호출을 가로채고 필터링하는 "libsandbox.so" 라이브러리에 의해 도입된 LD_PRELOAD 메커니즘 위에 구현됩니다. 또한 깔끔한 대화형 쉘 래퍼가 함께 제공되므로 보호된 쉘에 들어가려면 "sandbox"를 입력하기만 하면 됩니다.
OP에서 특별히 요청한 기능(가짜 쓰기)을 지원합니다. http://devmanual.gentoo.org/function-reference/sandbox-functions/index.html