기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
안녕하세요.
테스트 소켓 데몬을 android/external/sockdaemon 폴더에 넣고 아래와 같이 init.rc에 서비스로 등록하였습니다.
service sockd /system/bin/sockdaemon
user system
group system net_admin
# socket sockdaemon stream 600
disabled
oneshot
user 를 system 이 아닌 root 로 할경우에는 아래의 소켓함수를 사용하여 생성시 fd가 정상적으로 성공을 하나
system으로 할경우에는 EACCES 인 퍼미션 에러가 발생합니다.
fd = socket( AF_INET, SOCK_DGRAM, 0 );
init.rc에 보면 소켓을 사용하는 다른 데몬을 보면 root로 안되어있는 것도 있는 것으로 보아 root가 아니여도 될것으로 판단되는데 커널이나 다른 부분에 추가 수정을 해야하는것인지 문의드립니다. 참고로 서비스에 socket를 넣어도 동일하게 퍼미션 에러 발생합니다.
아시는 분있으시면 알려주시면 감사하겠습니다.
그럼 수고하세요.
비슷한 케이스가 될지 모르겠지만, 개발하고 있는 데몬과 JNI 서비스를 서로 UDS 소켓통신을 사용해서
동작하도록 구현해 놓고 테스트 하고 있습니다.
이 경우 퍼미션 관련해서 문제가 발생하기 때문에, 데몬을 루트권한으로 동작시키고 데몬이 구동할때
UDS 소켓 퍼미션을 user 도 사용가능하도록 666으로 설정하여 소켓을 만들었습니다.
이후 JNI에서는 해당 소켓을 통해서 통신을 하므로 별다른 문제가 없었습니다.
도움이 되었는지 모르겠네요..