기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요.

 

테스트 소켓 데몬을 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를 넣어도 동일하게 퍼미션 에러 발생합니다.

 

아시는 분있으시면 알려주시면 감사하겠습니다.

 

그럼 수고하세요.

 


장병남

2013.02.17 09:59:19
*.177.152.88

비슷한 케이스가 될지 모르겠지만, 개발하고 있는 데몬과 JNI 서비스를 서로 UDS 소켓통신을 사용해서 

동작하도록 구현해 놓고 테스트 하고 있습니다.


이 경우 퍼미션 관련해서 문제가 발생하기 때문에, 데몬을 루트권한으로 동작시키고 데몬이 구동할때

UDS 소켓 퍼미션을 user 도 사용가능하도록 666으로 설정하여 소켓을 만들었습니다.

이후 JNI에서는 해당 소켓을 통해서 통신을 하므로 별다른 문제가 없었습니다.


도움이 되었는지 모르겠네요.. 




 

사당

2013.02.18 19:40:53
*.45.183.151

답변 감사합니다. 원래 질문의도는 

소켓 데몬 자체가 루트로 권한을 안줘도 될꺼같은데 root로 해야한 동작한다는 것입니다.

소켓 데몬 자체를 루트로만 동작이 가능한것인지 그렇다면 그 이유는(?)

시스템 권한으로도 동작할수 있다면 어느부분을 추가 수정해야하는지 궁금합니다.

 

그럼 수고하세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인