RPM .spec에서 SELinux 컨텍스트를 설정하는 올바른 방법은 무엇입니까? (2018년 RHEL7)

RPM .spec에서 SELinux 컨텍스트를 설정하는 올바른 방법은 무엇입니까? (2018년 RHEL7)

RHEL7에서 제공하는 tomcat 패키지는 디렉터리와 심볼릭 링크를 생성하여 여러 인스턴스를 지원합니다. 이러한 여러 인스턴스가 생성되어 RPM으로 패키지되면 selinux 오류로 인해 추가 인스턴스가 시작되지 않습니다.

해결책은 RPM 패키지에서 selinux를 적절하게 구성하는 것이지만 이를 수행하는 방법에 대한 표준 설명을 찾는 데 어려움을 겪고 있습니다.

RHEL7에 tomcat을 설치할 때 selinux 구성은 어디에서 나오나요?

편집 : 문제는RPM .spec에서 SELinux 컨텍스트를 설정하는 올바른 방법은 무엇입니까?, 실제로 읽어보고 싶은 사람이 있으면 RHEL4 및 RHEL5 배포판이 구식이며 7년이 되었다고 언급합니다. 이 질문에 명확하게 나와 있듯이 이는 2018년의 RHEL7을 의미합니다. 7년 전의 질문에 대한 답변과 이 질문에 대한 답변은 매우 다릅니다.

답변1

selinux-policy-targetedSELinux 구성은 Tomcat의 SELinux 구성을 포함하여 배포판의 기본 정책 구성이 포함된 패키지에서 제공됩니다 .

RPM 패키징의 SELinux 구성을 설명하는 두 개의 오래된 Fedora 패키징 초안을 찾을 수 있었습니다.

패키징 초안/SELinux와 를 별도로 실행하고 나중에 /를 실행하여 spec 파일의 %post과 섹션 에 파일 태그 구성을 포함시키는 것이 좋습니다.%postunsemanage fcontext -asemanage fcontext -drestoreconfixfiles

지적한 바와 같이 주목할 가치가 있습니다.그레이엄 레게트, 사양 semanage또는 %pre섹션을 사용하면 전체 Python 스택과 설치 시간 종속성이 추가됩니다. 를 사용하면 add 가 설치 시간 종속성으로 , 및 가 도입됩니다.%postpolicycoreutils-pythonrestoreconpolicycoreutilssedgawkgrep

필요한 파일 레이블 지정 규칙을 제공하는 더 좋은 방법은 SELinux 정책 모듈을 이용하는 것입니다. 정책 모듈은 모듈식 정책을 관리하기 위한 보다 깔끔한 인터페이스를 제공합니다(태그 규칙은 완성을 사용한 로컬 수정 사항과 혼합되지 않음 semanage).

파일 레이블 규칙이 있는 정책 모듈의 경우 유형 적용 파일과 파일 컨텍스트 레이블 파일을 제공해야 합니다. 정책에 수정 사항을 추가하지 않는 경우에도 유형 적용 파일이 필요합니다. 가상 유형 강제 파일 예 mymodule.te:

policy_module(mymodule, 1.0)

파일 태그 규칙은 다음과 같습니다 mymodule.fc.

/path/to/file   --  gen_context(system_u:object_r:type_t,s0)

사용하려면 [참고 1]을selinux-policy-devel 사용하여 모듈 패키지를 컴파일할 수 있습니다.

make -f /usr/share/selinux/devel/Makefile

포장 정책 모듈과 관련하여,SELinux 정책 모듈 패키징 초안 마찬가지로 사양 파일의 and 섹션을 활용한 %postand/설치 정책을 사용하는 것이 좋습니다 . %postun샘플 사양 파일도 제공됩니다.semodulerestoreconfixfiles


[참고 1]selinux-policy-devel 샘플 전략 모듈은 checkmodule사용하지 않고 직접 생성 할 수 있습니다 semodule_package. 이를 위해서는 매크로 없이 정책 파일을 작성해야 합니다.

관련 정보