netlink 명령을 사용하여 네트워크 인터페이스 (이 경우 socketcan 인터페이스)를 구성하는 JNI 라이브러리를 사용하는 Android 활동이 있습니다. 활동을 실행하면 네트워크 인터페이스 구성이 RTNETLINK의 EPERM 오류로 실패합니다. 실패한 명령은 성공적으로 완료하려면 CAP_NET_ADMIN 기능이 필요합니다. 루트와 같은 코드를 실행하면 루트로 실행되고 루트로 실행 한 다음 CAP_NET_ADMINcapset을 사용하여 기능을 제한합니다. ,CAP_NET_ADMIN 기능으로 실행중인 Android 프로세스를 얻는 방법
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NET_ADMIN" />
이것은 INET 및 net_admin 그룹의 과정을 넣어 :
나는 나에게 내 프로세스가 NET_ADMIN 기능을 부여 할 것이다 인상을 준 매니페스트 응용 프로그램에 다음과 같은 권한을 추가 그러나 프로세스가 CAP_NET_ADMIN 기능을받지 못하여 netlink 명령이 EPERM에 실패했습니다.
이 주제에 대한 다양한 검색에서 필자는 기능을 적용해야한다는 힌트를 발견했습니다. 예를 들면, 불행하게도 http://elinux.org/Android_Security
#define GID Capability
AID_NET_BT_ADMIN 3001 Can create an RFCOMM, SCO, or L2CAPP Bluetooth socket
AID_NET_BT 3002 Can create a Bluetooth socket
AID_INET 3003 Can create IPv4 or IPv6 socket
AID_NET_RAW 3004 Can create certain kinds of IPv4 sockets??
AID_NET_ADMIN* 3005 Allow CAP_NET_ADMIN permissions for process
에서이 내 시스템에 적용하지 않는 것 같습니다.
참고 : 시스템 및 커널을 칩셋 공급 업체가 수정하여 실행 중이므로 작동을 멈추게하는 것이 수정되었을 수 있습니다. 이 단지를 작동해야하는 경우
사람이
- 을 알고 있나요?
- 프로세스에 기능을 추가하는 데 필요한 다른 단계는 무엇입니까?
- 여부도 가능합니까?
어떻게 응용 프로그램에 NET_ADMIN 권한을 할당 했습니까? 펌웨어에 사용 된 것과 동일한 키로 서명 되었습니까? Android 4.3 기기에 APK를 설치하는 동안 권한이 삭제되었습니다. java.lang.SecurityException : Permission android.permission.NET_ADMIN은 변경 가능한 권한 타입이 아니다. * 명령은'pm grant android.permission.NET_ADMIN' (루트로서) 에러를 출력한다. –
Lekensteyn
내 자신의 질문에 대답하기 위해 새로 작성한 키를 사용하여'/ data'를 닦지 않고 펌웨어를 다시 설치했습니다. 그 결과 여전히 오래된 인증서 ('/ data/system/packages.xml')가 사용되었습니다. 복구 및 재부팅시 4 개의 인증서 (플랫폼, 미디어, 공유, 테스트 키)를 교체 한 후 플랫폼 키를 사용하여 APK에 서명 할 때 권한이 부여되었습니다. – Lekensteyn