2012-07-11 15 views
11

Próbuję dać dostęp do pliku, który napisałem w jednej aplikacji do innej aplikacji. chgrp nie jest dostępny w powłoce adb (command 'chgrp' not found) Zainstalowałem BusyBox, ale w celu uzyskania dostępu do chgrp.Jak zmienić identyfikator grupy pliku na zrootowanym urządzeniu z Androidem?

Na przykład używam polecenia chown app_79 file.txt i to działa. Ale gdy próbuję chgrp app_79 file.txt zawsze zwraca coś chgrp: unknown group app_79

I Googled pęczek i okazało się, że większość systemów Linux posiada plik /etc/group który przechowuje informacje o grupie dla tego systemu, ale to nie jest obecna w Androidzie.

Odpowiedz

21

Korzystanie z wbudowanych narzędzi, zamiast Busybox, byłoby

chown uid.gid filename 

Prawdopodobnie z tych identyfikatorów mających na być numeryczne, jak zauważył Matt.

+0

Identyfikatory NIE MUSZĄ być numeryczne. 'root.root' i' root.system' działały na przykład na moim urządzeniu. – BuvinJ

+0

Zauważ, że w Linuksie 'chown owner: group filepath' ogólnie działa w stosunku do tej składni okresu. – BuvinJ

3

Znaleziono niektóre informacje here o tym, jak niektóre identyfikatory grup są zakodowane na stałe. Wcześniej miałem również świadomość, że /data/system/packages.list i /data/system/packages.xml zawierały UID aplikacji, które mają około 10000 + x. Teraz wiem, że x to liczba, która pojawia się po "app_", gdy ls -l.

Dziwne jest, że możesz chgrp 10079 file.txt, ale nie możesz chgrp app_79 file.txt.

Mam nadzieję, że to komuś pomaga.

6

Użyj busybox chown uid.gid file.txt i podaj UID i GID jako liczby zamiast nazw. app_79 prawdopodobne corresponds do ID 10079 (być pewien, można ponownie sprawdzić go z busybox ls -l -n /data/data):

busybox chown 10079.10079 file.txt 
Powiązane problemy