SElinux 소스 컨텍스트와 대상 컨텍스트 간의 매핑은 어디에 있습니까?

SElinux 소스 컨텍스트와 대상 컨텍스트 간의 매핑은 어디에 있습니까?

SELinux를 배우고 있는데 질문이 있습니다.

소스 필드와 대상 필드 사이에는 직접적인 상관 관계가 없는 것 같습니다. 예를 들어 Apache는 Type으로 실행될 수 있으며 httpd_t/var/www/html/ 아래의 파일에는 type 태그가 로 설정되어 있을 수 있습니다 httpd_sys_content_t. 내가 틀리지 않는 한 이러한 "태그"는 사람이 읽을 수 있는 문자열인 것처럼 보입니다.

그럼 매핑은 어디에 있나요? 특정 소스 컨텍스트가 있는 프로세스가 액세스할 수 있는 대상 컨텍스트가 무엇인지 시스템이 어떻게 알 수 있습니까?

semanage fcontext -a사용자 정의 파일 컨텍스트 정책이 설정되어 일치하는 파일에 추가될 수 있지만 restorecon어떤 유형을 사용해야 하는지 알려주지는 않습니다.

사용자, 역할 및 수준 필드의 "목적"은 무엇입니까? 작업을 허용하려면 어떤 필드가 일치해야 합니까?

관련 참고 사항: 특정 소스 컨텍스트로 프로세스에 태그를 지정하는 방법은 무엇입니까?

답변1

해당 필드에 대한 설명은 여기에서 확인할 수 있습니다.문맥

하지만 사용하지 않는 일반 사용자의 경우MLS우리 대부분은 유형 강제( )에만 관심이 있습니다 httpd_t.

SELinux 컨텍스트에는 사용자, 역할, 유형 및 보안 수준과 같은 여러 필드가 있습니다. SELinux 유형 정보는 SELinux 정책과 관련하여 아마도 가장 중요할 것입니다. 프로세스와 시스템 리소스 간에 허용되는 상호 작용을 정의하는 가장 일반적인 정책 규칙은 전체 SELinux 컨텍스트가 아닌 SELinux 유형을 사용하기 때문입니다. SELinux 유형은 _t로 끝납니다. 예를 들어, 웹 서버의 유형 이름은 httpd_t입니다. 일반적으로 /var/www/html/에 있는 파일 및 디렉터리의 유형 컨텍스트는 httpd_sys_content_t입니다. 일반적으로 /tmp 및 /var/tmp/에 있는 파일 및 디렉터리의 유형 컨텍스트는 tmp_t입니다. 웹 서버 포트의 유형 컨텍스트는 http_port_t입니다.

고려할 수 있는 httpd_sys_content_t서브파일 컨텍스트 유형은 httpd_t다음에 정의되어 있습니다.파일 컨텍스트.

일반적으로 빠른 찾기로 코드를 검색하는 것이 좋습니다.참조 정책 환매 계약내장 유형을 정의하는 방법에 대한 정보입니다. 제 생각에는 이것이 답변을 얻는 가장 빠른 방법 중 하나입니다.

다음 사용

seinfo --all|grep httpd_sys_content_t

또는

sesearch -t httpd_t -A

또는

sesearch -s httpd_t -A

또는

semanage fcontext -l | grep httpd_sys_content_t

더 나은 방법은 배포 정책에 대한 소스 코드를 얻고 해당 유형의 소스 트리를 grep하여 배포 정책에 적용되는 개정에 대한 보다 정확한 정보를 얻는 것입니다.

매크로는 참조 정책 소스에 나타날 때 약간 위협적일 수 있지만 해당 정의를 검색할 수도 있습니다.

관련 정보