Без рута почему я могу вытащить конкретный апк через adb, а не все в /data/app. Андроид 4+?

Использование: Droid Bionic 4.04 без Root.

Я могу использовать adb для загрузки определенного файла apk на свой компьютер, например,

     adb pull /data/app/com.google.android.gm-1.apk C:\my-hacks

которые вытягивают apk-файл gmail. Но когда я пытаюсь скопировать весь каталог /data/app с помощью

     adb pull /data/app C:\myhacks

в командной строке написано
pull: список файлов построения... 0 извлеченных файлов. 0 файлов пропущено.

Я не понимаю , почему у меня есть разрешение извлекать определенные файлы из /data/, но не все.

Ответы (2)

Это "разрешение и конфиденциальность". В то время как у каталога .apkнет никаких проблем с конфиденциальностью (и, таким образом, он может дать разрешение на чтение всем), данные есть, и, таким образом, каталог доступен для чтения только владельцу, группе и корневому каталогу (а не «другим», как вы могли бы). need -- "other" имеет только права eXecute).

ls -l / | grep data
drwxrwx--x   25 system   system  4096 Jan 28 17:51 data

Это означает: указав файл напрямую, вы можете извлечь его (поскольку он имеет необходимые права доступа к файлу, а каталог позволяет вам войти cdиз-за установленного бита eXecute). Вместо этого указать каталог не удается, так как для этого потребуется перейти ( cd) в каталог (который работает) и создать список содержащихся файлов, что невозможно из-за отсутствия разрешения на чтение самой записи каталога.

Ответ Иззи хорош и хорошо объяснен. Исходя из этого, если вы являетесь пользователем root, вы можете открыть корневой проводник, перейти к /data/папке приложения и изменить ее разрешения.

Просто нажмите и удерживайте приложение, коснитесь Permissions, а рядом с другим установите соответствующие флажки.