안녕하세요. 앤디라이언입니다.
금일은 작업 중 property를 추가하여 기능을 업데이트하였습니다.
그런데 동작을 테스트하는 중에 다음과 같은 에러 메세지가 발생하며 동작이 진행되지 않는 문제를 확인했습니다.
W libc : Unable to set property "vendor.test.version.property" to "0": connection failed; errno=13 (Permission denied)
이 이슈는 Android selinux policy에 대해 알아야만 해결할 수 있습니다.
https://andylion.tistory.com/82
Validating SELinux
안녕하세요. 앤디라이언입니다. 오늘은 안드로이드 SELinux에 대해 이야기해보고자 합니다. Android는 OEM에서 자체 구현한 SELinux를 철저히 테스트할 것을 적극 권장합니다. Android Platform을 이용하는
andylion.tistory.com
SELinux 이슈인지 검토를 위해서는 먼저 enforcing모드에서 permissive모드로 변경 후 동작 확인시 동작이 확인된다면 SELinux 이슈일 확률이 높습니다.
$getenforce
Enforcing
$ setenforce 0
$ getenforce
permissive
Enforcing에서 동작이 되지 않는 상황에서 Permissive로 변경 후 동작을 확인합니다.
Permissive 상태에서도 동작이 되지 않는다면 avc: denied 이슈가 아닐 확률이 높습니다. 내 경우에는 Permissive로 변경 후 동작이 되는 것을 확인하였습니다.
이 이슈의 해결을 위해 다음과 같은 내용이 포함됩니다.
sepolicy/property_contexts
sepolicy/hal_vendor_default.te
오류 메시지에서 볼 수 있듯이 모든 속성은 고유한 컨텍스트를 가질 수 있습니다.
프로퍼티와 SELinux 컨텍스트의 매핑은 system/sepolicy/private/property_contexts와 같은
property_contexts 파일에 정의되어 있습니다.
프로세스가 실행되는 컨텍스트(hal_vendor_default)에서 기본값_프로퍼티의 속성을 변경할 수 있는지 확인해야 합니다.
.te 파일 중 하나에서 이에 대한 허용 정책을 정의해야 합니다.
vi propery_contexts
hal_vendor_default u:object_r:vendor_disp_prop:s0
vi hal_vendor_default.te
set_prop(hal_vendor_default, vendor_disp_prop)
위 내용을 적용하고 테스트해본 결과 이슈가 해결된 것을 확인할 수 있었습니다.
'개발 이야기' 카테고리의 다른 글
Android kernel gki skip option (0) | 2023.07.04 |
---|---|
Validating SELinux (0) | 2023.02.23 |
adb devices no permissions issue (0) | 2023.02.10 |
AGI (Android GPU Inspector) (0) | 2023.02.08 |
Android CTS (Compatibility Test Suite) (0) | 2023.01.30 |