Android 의 selinux 권한 문 제 를 빠르게 해결 합 니 다.
3123 단어 ANDROID
안 드 로 이 드 개발 과정 에서 selinux 와 관련 된 것 을 만 났 는데 그 때 는 단번에 알 아 보지 못 했 는데 지금 은 실마리 가 잡 힌 것 같다.
예 를 들 어 커 널 에서 이 힌트 를 인쇄 합 니 다.
type=1400 audit(32.939:25): avc: denied { open } for pid=2592 comm="chmod" path="/dev/block/mmcblk0p25" dev="tmpfs" ino=6494 scontext=u:r:init_shell:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=1
우 리 는 이 방법 에 따라 처음부터 관건 적 인 대상 을 찾 은 다음 순 서 를 조정 하여 하나의 문 구 를 만 들 고 마지막 으로 이 문 구 를 'te 파일' (external / sepolicy / *. te) 에 기입 하면 된다.
denied { open } u:r:init_shell:s0 u:object_r:block_device:s0 tclass=blk_file
A B C D B C D A
allow init_shell block_device:blk_file open;
이 문 구 는 init 를 허용 합 니 다.셸 필드 의 Blockdevice 프로 세 스 block 열기device 형식의 블록 장치 파일 입 니 다.
이 규칙 을 컴 파일 하 는 데 실패 할 때 가 있 습 니 다. 이것 은 neverallow 문구 가 이상 한 것 일 수도 있 습 니 다.
neverallow 는 보안 정책 파일 에 이 규칙 을 위반 하 는 allow 문 구 를 검사 하 는 데 사 용 됩 니 다.
예 를 들 어 external / sepolicy / netd. te 파일 에서 문장
neverallow netd dev_type:blk_file { read write };
netd 필드 의 프로 세 스 읽 기와 쓰기 dev 를 영원히 허용 하지 않 음 을 표시 합 니 다.type 형식의 블록 장치 파일 입 니 다. 이 문 구 를 차단 하면 됩 니 다.
물론 디 버 깅 단계 에 서 는 터미널 에서 다음 명령 을 실행 하여 SELinux 의 상 태 를 가 져 오고 SELinux 를 임시 닫 을 수 있 습 니 다.
setenforce 0 ##SELinux 를 permissive 모드 로 설정 합 니 다 (SELinux 가 열 리 지만 selinux 규칙 을 위반 하 는 행 위 는 기록 만 하고 막 지 않 습 니 다)
setenforce 1 ##SELinux 를 enforcing 모드 로 설정 (SELinux 오픈)
getenforce ##SELinux 상태 가 져 오기 (허가, 적용, 비활성화)
물론 안전 계수 에 대한 요구 가 높 지 않 은 제품 은 cmdline 에 androidboot. selinux = 0 을 추가 하여 selinux 를 닫 을 수 있 습 니 다.
또는 Android 소스 코드 의 루트 디 렉 터 리 에서 시스템 / core / init / init. c 파일 을 직접 수정 합 니 다.
static void selinux_initialize(void)
{
if (selinux_is_disabled()) {
return;
}
INFO("loading selinux policy
");
if (selinux_android_load_policy() < 0) {
ERROR("SELinux: Failed to load policy; rebooting into recovery mode
");
android_reboot(ANDROID_RB_RESTART2, 0, "recovery");
while (1) { pause(); } // never reached
}
selinux_init_all_handles();
bool is_enforcing = selinux_is_enforcing();
INFO("SELinux: security_setenforce(%d)
", is_enforcing);
security_setenforce(is_enforcing);
}
수정 isenforcing 의 값 은 0 입 니 다.
물론 가장 좋 은 수정 방법 은 참고 할 수 있다.http://blog.csdn.net/u013983194/article/details/50462694
수정 후 mmmsystem / sepolicy - j30 을 컴 파일 합 니 다. devices 의 selinux 파일 을 포함 하고 생 성 된 파일 은 system / etc / selinux / 또는 vendor / etc / selinux / 에서 grep 로 문자열 을 검색 하여 수정 이 성공 적 으로 이 루어 졌 는 지 확인 하고 마지막 으로 해당 파일 push 를 기계 에 검증 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 의 selinux 권한 문 제 를 빠르게 해결 합 니 다.이 문 구 는 init 를 허용 합 니 다.셸 필드 의 Blockdevice 프로 세 스 block 열기device 형식의 블록 장치 파일 입 니 다. neverallow 는 보안 정책 파일 에 이 규칙 을 위반 하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.