나는 다음과 같은 사용자 정의 selinux 모듈을 작성했습니다.
require {
type my_app_t;
type my_app_file_t;
class file { getattr lock open read write execute execute_no_trans ioctl append setattr };
class dir { write search getattr };
}
allow my_app_t my_app_file_t:file { append setattr write getattr execute read open execute_no_trans lock ioctl};
allow my_app_t my_app_file_t:dir { write search getattr};
이것은 대부분 잘 작동하지만 audit.log에 새로운 거부가 나타날 때마다 새 권한을 추가하는 데 지쳤습니다. 특정 컨텍스트에 대해 파일/디렉터리에 대한 모든 권한만 허용하는 방법이 있습니까? 예를 들어:
require {
type my_app_t;
type my_app_file_t;
class file { * };
class dir { * };
}
allow my_app_t my_app_file_t:file { * };
allow my_app_t my_app_file_t:dir { * };
답변1
참조 전략 매크로 사용을 고려해야 합니다. 참조 정책 매크로를 사용하면 manage_files_pattern
매크로를 사용하여 모든 액세스를 허용할 수 있습니다. 예:
manage_files_pattern(my_app_t, my_app_file_t, my_app_file_t)
게다가매크로기타 일반적으로 사용되는 모드의 경우/policy/support
참조 정책 소스에서.
참조 정책 모듈에서 정의한 경우 my_app_t
액세스를 허용하는 데 사용할 수 있는 인터페이스가 이미 있을 수 있습니다. 인터페이스는 참조 전략 API 문서( selinux-policy-doc
패키지에서 제공)에 문서화되어 있으며 다음을 사용하여 사용할 수도 있습니다.온라인(그러나 약간 구식입니다).
참조 정책 모듈을 구축하는 가장 쉬운 방법은 배포판의 SELinux 정책 개발 패키지(또는 유사한 패키지)의 makefile을 사용하는 것입니다. selinux-policy-devel
예: make -f /usr/share/selinux/devel/Makefile my_app.pp
.