2011-12-15 4 views
2

안녕 안드로이드에 대한 안돼서 사이에 공통의 폴더를 공유하는 것은 ... (다음 문제 .. 내가 리눅스 응용 프로그램에 의해 생성 된 파일이안드로이드 : 리눅스 응용 프로그램 및 안드로이드 응용 프로그램

에 대한 몇 가지 빛을 던져주십시오 C에서 작성된) S_IRWXU | S_IRWXG 권한으로 파일은 루트 사용자 및 루트 그룹에 속합니다.

이제이 파일을 Android 애플리케이션으로 다른 사용자 (예 : app_41)로 읽고 쓰고 싶습니다. 그것은 파일에 대한 권한이 없기 때문에 안드로이드 응용 프로그램에 대해 불가능합니다.

파일/폴더에 대한 "다른 사용자"권한을 허용하지 않고 이것을 구현하는 가장 좋은 방법은 무엇입니까?

그 이유는 다른 프로세스에서 사용할 명명 된 파이프를 만들고 관리하는 데몬으로 C를 작성했기 때문입니다. 안드로이드 응용 프로그램 (네이티브 코드 사용)에서 명명 된 파이프에 쓰려고하는데 제대로 할 권한이 없습니다.

나는 누군가가 말한다면 ... "어이가 .. 이렇게 매우 간단합니다 ...", 놀라지 않을 것이다 당신의 도움에 대한

감사합니다!

+0

파일/폴더를 어디에 저장 하시겠습니까? –

+0

/tmp에 파일 저장 – user1099859

답변

0

나는 해결책을 생각하며, 우리가 할 필요가 ... 사람이 더 나은 솔루션을 가지고 있으면 알려 루트 프로세스에 의해 owened 파일을 공유 할 수있는 안드로이드 응용 프로그램

을 주시기 바랍니다 ... 작동

  1. 안드로이드 응용 프로그램을 만들기 다음은 "시스템"사용자가 (파일을 소유하는) 다른 플랫폼 과정을 보자

    android:sharedUserId="android.uid.system" 
    
  2. 를 사용 속해하기 위해 남아 그룹 "시스템"에 추가하십시오.

  3. 이제 "시스템"그룹에 프로세스를 추가하는 방법이 있습니다. 우리 마음에 오는 한 가지 빠른 방법은 init.rc에 프로세스를 추가하고 "그룹"키워드를 사용하고 시작하는 것입니다. . 하지만 안드로이드는 그것을 허용하지 않습니다.

  4. "system"그룹에 프로세스를 추가하려면 프로세스 내부에서 groupid를 요청해야합니다. 즉, 프로세스 내부에서 setgid (1000) 시스템 호출을 사용하여 "시스템"그룹에 추가하십시오.

그리고 매우 효과적입니다!

+0

안드로이드 장치 하나에 대해 이야기하고 있습니까? 리눅스 컴퓨터에 연결 되었습니까? 에뮬레이터? – trusktr