0 votes

Les commandes racine sur l'émulateur de terminal ne fonctionnent pas dans tout le système

Je veux exécuter la commande suivante en tant que Root dans l'Android Emulateur de terminal .

mount -o bind /storage/extSdCard /data/media

Je l'ai testé sur un Samsung Galaxy S3 exécutant CyanogenMod 11 et il fonctionne comme prévu. Lorsque j'entre /data/media en utilisant une autre application comme ES File Explorer j'accède au contenu de la carte SD externe au lieu de la mémoire interne.

Le problème est que cela ne fonctionne pas sur un autre S3 que j'ai, celui-ci fonctionnant sous la ROM TouchWiz version 4.3 et enraciné avec CF-Auto-Root . J'ai également essayé d'utiliser Adam Noyau personnalisé et ça ne marche pas non plus.

Lorsque je lance la commande dans le terminal et que je tape ensuite ls /data/media en tant que Root, il affiche le contenu de la carte SD externe, mais si je lance un autre terminal en tant qu'utilisateur normal (non Root) et tape la même commande, j'obtiens le contenu de la mémoire interne. La même chose se produit si j'essaie d'accéder à /data/media en utilisant ES File Explorer gestionnaire de fichiers

Il semble donc que les commandes Root n'ont d'effet que pour l'utilisateur Root, et non pour les autres utilisateurs du système. Quelle pourrait être la cause de ce comportement ?

UPDATE : OK, ma faute, je ne me suis pas exprimé correctement. Il est vrai qu'un utilisateur normal ne peut pas accéder à /data/media . Mais /data/media est l'emplacement réel des fichiers dans la mémoire interne. Il existe de nombreux chemins par lesquels Android met cette mémoire à la disposition des utilisateurs normaux, par exemple /sdcard o /storage/sdcard0 qui indiquent tous deux /data/media/0 par le biais d'un système de fichiers FUSE.

Ce que je veux dire, c'est que si je crée un dossier nommé 0 sur le disque dur externe et ensuite lier /storage/extSdCard a /data/media lorsque le système essaie d'accéder /sdcard o /storage/sdcard0 il récupérera le contenu de /storage/extSdCard/0 comme /data/media ne pointe plus vers la mémoire interne, mais vers le disque dur externe.

Cela fonctionne comme prévu sur CM11 lorsque je fonctionne en tant que Root.

mount -o bind /storage/extSdCard /data/media

Alors si j'accède à /sdcard sur le terminal, que ce soit en tant que Root ou en tant qu'utilisateur normal, j'arrive au contenu du fichier /storage/extSdCard/0 . La même chose se produit si j'utilise ES File Explorer en mode normal ou Root.

Mais quand je fais la même chose sur le firmware stock 4.3 rooté, cela ne fonctionne pas. Seul Root sur le terminal peut voir les changements, l'utilisateur normal sur le terminal et l'utilisateur normal et Root sur l'explorateur de fichiers ES ne verront aucun changement.

1voto

Guillermo Gomez Points 423

Dans mon cas, je suppose que c'est la même raison pour vous.

Allez dans votre application de gestion des super utilisateurs, je suppose que c'est SuperSU.

Allez dans les paramètres, cherchez "Mount Namespace Separation" et vérifiez si c'est coché. Décochez l'option et redémarrez.

SuperSU a fourni cette option pour rendre votre système plus sûr en cachant l'espace de nom de montage d'une application de celui des autres, ainsi si vous montez ou démontez quelque chose, il n'est visible que pour l'application (UID) que vous utilisez et rien d'autre.

Alternativement, en exécutant su vous pouvez ajouter une option -m pour que votre shell ait le contrôle de l'espace de nom du master mount. Ainsi, vos montages fonctionneront globalement.

0voto

Apparemment, il s'agit maintenant d'une fonctionnalité de sécurité SELinux d'Android : les montages initiés par la plupart des processus ne sont pas visibles par les autres processus. Voir cette réponse .

Un rapport Fil de développement du noyau d'Android suggère de remplacer un service système non utilisé (par ex. /system/bin/debuggerd ) avec un script shell qui exécute la commande de montage souhaitée. Vous pouvez lancer cette commande avec start debuggerd .

更新しました。 Cela a fonctionné pour moi, après un redémarrage.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X