Как изменить идентификатор группы файла на корневом устройстве Android?

Я пытаюсь предоставить доступ к файлу, который я написал в одном приложении, в другое приложение. chgrp недоступен в оболочке adb (command 'chgrp' not found) Я установил BusyBox, но для доступа к chgrp.

Например, я использую команду chown app_79 file.txt, и она работает. Но когда я пытаюсь chgrp app_79 file.txt, он всегда возвращает что-то вроде chgrp: unknown group app_79

I Googled the bunch и обнаружил, что большинство Linux-систем имеют файл /etc/group, который хранит информацию о группе для этой системы, но ее нет в Android.

Ответ 1

Используя встроенные инструменты, а не busybox, это будет

chown uid.gid filename

Возможно, этот идентификатор должен быть числовым, как указал Мэтт.

Ответ 2

Используйте busybox chown uid.gid file.txt и укажите UID и GID как числа вместо имен. app_79 Вероятно соответствует ID 10079 (чтобы убедиться, что вы можете перепроверить его с помощью busybox ls -l -n /data/data):

busybox chown 10079.10079 file.txt

Ответ 3

Нашел некоторую информацию здесь о том, как некоторые идентификаторы групп жестко запрограммированы. Я также знал, что /data/system/packages.list и /data/system/packages.xml содержат UID приложений, которые все вроде 10000 + x. Теперь я знаю, что x - это число, которое появляется после "app_", когда вы ls -l.

Итак, странно, что вы можете chgrp 10079 file.txt, но вы не можете chgrp app_79 file.txt.

Надеюсь, это поможет кому-то.