Comment puis-je accéder à plusieurs espaces utilisateur depuis adb?

9

J'utilise KitKat sur une tablette avec deux utilisateurs: principal (propriétaire) et secondaire. J'ai besoin d'accéder à un fichier généré par une application de l'utilisateur secondaire.

Lorsque je branche la tablette sur mon bureau (Ubuntu) via USB, elle se monte en tant que périphérique multimédia (MTP) et m'affiche le dossier de base de l'utilisateur actuellement actif. [1] Mais le fichier que je veux est ailleurs sur le système, donc je me suis connecté depuis la ligne de commande via adb shell.

La connexion via ADB me donne accès à des dossiers plus profonds ( /mnt /procetc.) mais je n'ai pas pu trouver le fichier là où je m'y attendais [2], j'ai donc cherché de /sdcardtoute façon. À ma grande surprise, j'ai reconnu le contenu comme dossier de base du compte propriétaire, même si l'utilisateur actuellement actif est l'utilisateur secondaire.

Cela me dit également que, si jamais j'en ai besoin, je ne pourrai pas accéder au dossier de base de l'utilisateur secondaire via adb shell.

Comment puis-je accéder à la tablette en adb shelltant qu'utilisateur secondaire plutôt qu'en tant qu'utilisateur principal (propriétaire)? (La possibilité d'accéder aux fichiers de l'utilisateur secondaire est suffisante.)

[1] Je ne sais pas quel est le terme approprié ici. Je veux dire le dossier avec Android, Téléchargement et Images, spécifique à un utilisateur particulier.

[2] FWIW J'exporte un fichier OPML depuis Flym . Flym signale que l'exportation OPML est générée à /storage/emulated/10/Flym_123456789.opmlmais je ne peux aller que jusqu'à /storage/emulated- il n'y a pas de sous-dossier appelé 10, seulement legacyqui est le même que /sdcard(le dossier de base du propriétaire / propriétaire, pas le dossier de base de l'utilisateur secondaire).

david.libremone
la source
Pour ceux qui se retrouvent à ce poste avec un problème identique ou similaire, voir Comment puis-je accéder à la carte SD émulée pour un autre utilisateur sur un nexus enraciné 10
Firelord

Réponses:

3

Les legacy/emplacements pointent toujours vers les données de l'utilisateur actuellement actif. Permettez-moi d'abord de mentionner quelques questions / réponses connexes traitant explicitement de ces problèmes de stockage multi-utilisateurs pour certains antécédents:

Donc pour retrouver les fichiers de l'utilisateur secondaire:

  • lister les sous-répertoires de /data/mediaet/storage/emulated
  • restreignez votre recherche aux sous-répertoires dont les noms sont simplement des "nombres"
  • les 0candidats appartiennent au propriétaire, un plus grand nombre d'utilisateurs secondaires
  • le stockage externe est quelque chose de différent: /sdcard/0pointe vers la carte SD interne, tandis que /sdcard/1devrait être l'externe (si disponible). De même pour le stockage attaché via OTG

N'oubliez pas que vous devrez peut-être être root pour accéder aux données d'un utilisateur autre que celui actuellement actif sur l'appareil.

Regarde aussi:

Izzy
la source
cela m'aide à comprendre ce que je dois voir, mais ce que je vois est juste / storage / emulated / legacy (pas de dossiers numériques) et je n'ai pas accès à / data / media (permission refusée) - je vais essayer redémarrer et ne jamais se connecter en tant que propriétaire
david.libremone
Comme je l'ai écrit: "vous devrez peut-être être root" (ce qui explique la "permission refusée"). Votre appareil est-il enraciné?
Izzy
ce n'est pas (un peu effrayé, il semble qu'il n'y ait pas de processus fiable?)
david.libremone
mais je peux le confirmer: redémarrez l'appareil, ne vous connectez pas en tant que propriétaire, connectez-vous en tant que secondaire, connectez USB, accédez via MTP: pouvez voir le dossier utilisateur secondaire, accédez via le shell adb: pouvez voir / stockage / émulé / hérité comme utilisateur propriétaire (pas utilisateur secondaire) - aucun autre dossier n'apparaît sous / stockage / émulé
david.libremone
Une fois connecté avec l'utilisateur secondaire, il emulated/doit pointer vers les données de l'utilisateur secondaire. Aucun moyen d'accéder à tous sans root. Et correct, il n'y a pas de processus officiel pour rooter votre appareil; vous voudrez peut-être consulter notre wiki racine et notre index d'enracinement pour vérifier les généraux et votre appareil. S'il ne figure pas dans la liste, n'hésitez pas à poser une nouvelle question à ce sujet.
Izzy