중국시가넷 - 개인 서명 - SELinux 용 태그

SELinux 용 태그

SELinux 를 지원하는 시스템의 모든 프로세스에는 SELinux 라는 레이블이 있습니다. 프로세스의 레이블을 보면 다음과 같은 명령을 사용할 수 있습니다.

다음은 안드로이드 8.1. 시뮬레이터에서 이 명령을 실행한 결과입니다 (커널, init 등 개발 중 거의 없음) 주요 프로세스에는 < P > 와 /data/data 디렉토리에서 파일/디렉토리의 SELinux 레이블을 보는 몇 가지 유형이 있습니다. < P > 는 기본적으로 두 가지 종류이며, 일부 특수 디렉토리에는 특수 레이블이 있습니다. (다른 디렉토리의 레이블은 많습니다. 이 디렉토리 아래의 레이블은 주로 app 디렉토리에 c512,c768 이 다른 디렉토리와는 다른 레이블 세그먼트가 있습니다.) < P > 이러한 레이블은 다음 파일에 있는 SELinux 보안 컨텍스트 파일에 의해 정의됩니다. 관련 파일, 장치, 서비스 (이름) 등 비프로세스 클래스를 정의하는 개체 태그

Java 표준 프로세스를 정의하는 SELinux 태그는 seapp_contexts 파일에 의해 정의되며 zygote 는 Java 프로세스 시작에 대한 정보를 기준으로 합니다. Seapp_contexts 의 조건과 함께 Java 프로세스에 대한 SELinux TAG

라는 파일은 안드로이드 기본 app 보안 컨텍스트에 대한 레이블 설정 정책을 정의합니다.

이러한 구성은 Zygote fork 가 app 프로세스를 나갈 때 selinux _ 를 호출합니다 =26 인 헬로 월드 apk 가 설치돼 시동을 걸었는데, 분명히 user=_app seinfo! =platform (서명으로 결정), 컴파일 app TargetSdkVersion 에 따라 > 여부 =26 (minTargetSdkVersion=26 이 없으면 minTargetSdkVersion=) 이 마지막으로 일치됩니다.

그러면 프로세스가 보안 컨텍스트 레이블을 u: r: untrusted \ C768 이 필드는 levelFrom=user 에 따라 호출)

구체적인 각 필드 의미는 seapp_contexts 앞의 주석

을 자세히 읽을 수 있습니다. 일부 구성 항목에는 seinfo=platform 과 같은 프로세스가 포함되어 있습니다.

위에서 언급한 기타 native 프로세스 (예: logd, servicemanager, native services Hal service, Android 기타 native services 프로세스 (예: surfaceflinger mediaserver) 의 레이블, 주로 두 가지 방법으로 설정됩니다.

또 다른 surfaceflinger 프로세스를 예로 들 수 있습니다. 해당 정책 파일:

는 다음과 같이 정의됩니다.

매크로 정의에 따라

를 확장합니다. 따라서 컴파일된 init _ daemon _ domain (surfaceflinger)

첫 번째 배치는 다음과 같습니다 Init.rc 에서 seclable 명령에 의해 레이블이 지정되거나 규칙 init_daemon_domain () 매크로에 의해 해당. te 파일에서 선언되어 init 프로세스 도메인에서 init _ daemon \