2 votos

¿Cómo puedo hacer que cualquier usuario pueda hacer chmod en mi /sdcard con formato ext4 montado en fuse?

Tengo un ASUS Transformer Pad TF101. Por fin he podido rootearlo ahora mismo.

Es importante: /sdcard es no FAT32. Es un sistema de archivos fusible basado en ext4. Así que es capaz de utilizar chmod .

Para poder trabajar en él de forma óptima, me gustaría poder colocar los ejecutables en /mnt/sdcard . (Tenga en cuenta que aunque se llama sdcard no es, en realidad, una tarjeta SD; es almacenamiento interno). También me gustaría chmod en general para tener éxito, ya que causa problemas con ciertas cosas en Mercurial cuando falla (incluso cuando he parcheado las cosas en la base de código principal para que funcione en absoluto, algunas cosas en las llamadas de la biblioteca estándar de Python todavía se rompen).

Supongo que el problema tiene que ver con las banderas de montaje, pero no sé qué, así que aquí están:

$ 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)
...

No estoy seguro de lo que ocurre con las cosas de FUSE, pero sé que /sdcard se almacenan en /data/media .

Aquí, entonces, está lo desconcertante de todo esto:

  • Como 10126 (terminal) en /sdcard, I no puede chmod.
  • Como 1023 en /sdcard, yo no puede chmod.
  • Como 0 en /sdcard, I puede chmod.
  • Como 10126 en /data/media, I no puede chmod.
  • Como 1023 en /data/media, yo puede chmod.
  • Como 0 en /data/media, I puede chmod.

Habiendo aplicado chmod a+w /data/media El 10126 puede entonces chmod los archivos apropiados en /data/media, pero todavía ni el 10126 ni el 1023 pueden chmod en /mnt/sdcard, que es lo que idealmente quiero. (Porque ordena todo el resto de los permisos para no terminar con la propiedad de los archivos fragmentada).

Además, si creo archivos en /sdcard, serán propiedad de UID/GID 0/1015 (siendo 1015 sdcard_rw ), mientras que si los creo en /data/media, serán propiedad del UID/GID del usuario (0/0) en lugar de 1023/1023 en /data/media (seguirán siendo propiedad de 0/1015 en /sdcard-no lo entiendo pero no me preocupa drásticamente).

Entonces, mi pregunta es: ¿cómo puedo hacer para que cualquier cuenta pueda chmod en /mnt/sdcard, en lugar de sólo Root?

He estado usando /mnt/sdcard y /sdcard indistintamente en esta pregunta; /sdcard está enlazado simbólicamente a /mnt/sdcard.

3voto

ce4 Puntos 11180

Chmod nunca será soportado. Eso es a propósito según los comentarios en el código fuente.

Aquí hay un referencia a la implementación de FUSE en Github señalando un comentario que dice esto.

Y la cabeza original en Googlesource (un poco más difícil de navegar que Github).

Ni siquiera Root puede evitarlo:

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

Tenga en cuenta que la propiedad está codificada en media_rw:media_rw (debajo de /data/media). PS: /data/media es otra historia, todos los permisos regulares se aplican aquí, es ext4 y Root puede hacer lo que quiera.

1voto

Locutus Puntos 161

Lo has entendido mal. El sistema de archivos FUSE está diseñado específicamente para eliminar los permisos y la sensibilidad a las mayúsculas y minúsculas. No puedes hacer chmod en los puntos de montaje /storage/*. También debes saber que si cambias los permisos en el punto de montaje de la tarjeta SD /mnt/fuse o en los directorios de almacenamiento interno /data/media romperás el sistema FUSE y por lo tanto los puntos de montaje /storage/* también.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X