2 votes

Comment puis-je faire en sorte que n'importe quel utilisateur puisse faire un chmod dans mon /sdcard monté en fuse et formaté en ext4 ?

J'ai un ASUS Transformer Pad TF101. J'ai finalement réussi à le rooter à l'instant.

Important : /sdcard es pas FAT32. C'est un système de fichiers à fusibles basé sur ext4. Donc il est capable d'utiliser chmod .

Afin de pouvoir travailler dessus de manière optimale, j'aimerais pouvoir placer les exécutables dans /mnt/sdcard . (Notez que, bien qu'il soit appelé sdcard il ne s'agit pas, en fait, d'une carte SD, mais d'un stockage interne). J'aimerais également chmod en général pour réussir, car il cause des problèmes avec certaines choses dans Mercurial quand il échoue (même quand j'ai patché les choses dans la base de code principale pour qu'il fonctionne du tout, quelques choses dans les appels de la bibliothèque standard Python se cassent encore).

Je présume que le problème est lié aux drapeaux de montage, mais je ne sais pas quoi, alors les voici :

$ mount
...
/dev/block/mmcblk0p7 on /data type ext4 (rw,nosuid,nodev,noatime,nodiratime,errors=panic,user_xattr,acl,barrier=1,nodelalloc,data=ordered)
...
/dev/fuse on /mnt/sdcard type fuse (rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other)
...

Je ne suis pas sûr de ce qui se passe avec les trucs de FUSE, mais je sais que /sdcard Le contenu de l'article est stocké dans /data/media .

Voici donc ce qui est déconcertant dans tout ça :

  • En tant que 10126 (terminal) dans /sdcard, j'ai no puede chmod.
  • Comme 1023 dans /sdcard, j'ai no puede chmod.
  • Comme 0 dans /sdcard, je peut chmod.
  • Comme 10126 dans /data/media, je no puede chmod.
  • Comme 1023 dans /data/media, je peut chmod.
  • Comme 0 dans /data/media, je peut chmod.

Ayant appliqué chmod a+w /data/media 10126 peut alors modifier les fichiers appropriés dans /data/media, mais ni 10126 ni 1023 ne peuvent modifier les fichiers dans /mnt/sdcard, ce que je souhaite idéalement. (Parce qu'il trie tout le reste des permissions de sorte que vous ne vous retrouvez pas avec une propriété de fichier fragmentée).

De plus, si je crée des fichiers dans /sdcard, ils appartiendront à UID/GID 0/1015 (1015 étant sdcard_rw ), alors que si je les crée dans /data/media, ils appartiendront à l'UID/GID de l'utilisateur (0/0) plutôt qu'à 1023/1023 dans /data/media (ils appartiendront toujours à 0/1015 dans /sdcard - je ne comprends pas cela mais cela ne m'inquiète pas outre mesure).

Alors, ma question : comment puis-je faire en sorte que n'importe quel compte puisse réussir à chmod dans /mnt/sdcard, plutôt que juste Root ?

J'ai utilisé /mnt/sdcard et /sdcard de manière interchangeable dans cette question ; /sdcard est lié par un lien symbolique à /mnt/sdcard.

3voto

ce4 Points 14264

Chmod ne sera jamais supporté. C'est intentionnel selon les commentaires dans le code source.

Voici un référence à l'implémentation de FUSE sur Github en pointant vers un commentaire qui dit ceci.

Et la tête originale sur Googlesource (un peu plus difficile à naviguer que Github).

Même Root ne peut pas le contourner :

shell@android: # id     
uid=0(root) gid=0(root)    
shell@android: # touch /mnt/sdcard/x; ls -l /data/media/0/x    
-rw-rw-r-- media_rw     media_rw        0 2013-01-05 17:35 x    
shell@android: # chmod 777 /mnt/sdcard/x; ls -l /data/media/0/x    
-rw-rw-r-- media_rw     media_rw        0 2013-01-05 17:35 x    
shell@android: # chmod 000 /mnt/sdcard/x; ls -l /data/media/0/x    
-rw-rw-r-- media_rw     media_rw        0 2013-01-05 17:35 x

Notez que la propriété est codée en dur à media_rw:media_rw (sous /data/media). PS : /data/media est une autre histoire, toutes les permissions habituelles s'appliquent ici, c'est ext4 et Root est autorisé à faire ce qu'il veut.

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