2 votos

¿Cómo (re)montar una partición FUSE y establecer (o cambiar) sus opciones, especialmente en cuanto a permisos?

Nota: Si no te importa leer todo esto, salta a la sección "Las Preguntas".

El Problema Real

Tengo problemas de permisos de escritura tanto con mis almacenamientos externos (es decir, tarjeta SD externa) como internos en mi caja de Android con root (es decir, es ROM ViperOS, si eso ayuda) (montado en /storage), especialmente el externo. El comportamiento en la terminal y la GUI es, extrañamente, diferente.

(Problema de almacenamiento externo solamente) Usando tanto Termux como la aplicación Terminal interna, cuando intento hacer operaciones de escritura desde un usuario no root (por ejemplo, crear un directorio, eliminar un archivo), obtengo el error "Permiso denegado" (Sin embargo, desde un usuario no root de ADB, nunca obtengo errores). El permiso de almacenamiento no es un problema aquí, ya que está concedido.

Usando la GUI, la única operación problemática es la eliminación de directorios (ya sea vacíos o no), y como resultado, también mover directorios (es decir, en realidad, se copian, pero la fuente no se elimina). Incluso renombrar directorios es posible. Todas las operaciones de archivo también son posibles.

Sin embargo, hay una diferencia en donde se realiza la operación problemática: desde el portátil con el teléfono conectado a él, la operación falla; pero desde una aplicación (por ejemplo, la aplicación de Archivos predeterminada) dentro del teléfono (sin ningún permiso de root), se realiza, pero ¡muestra que falló!

Lo Que He Intentado

Estos son todos problemas de permisos (¡oh, en serio?!). Para hacer las cosas más fáciles, me enfocaré solamente en el almacenamiento externo (es decir, la tarjeta SD externa). Está ubicado (es decir, montado) en /storage/9B6C-CF9F/.

Nota: Dado que los resultados de ADB y la terminal interna son de alguna manera diferentes, y parece que los resultados de la interna son más confiables, los publicaré en su lugar. Además, ten en cuenta que, # significa que el comando se está ejecutando como root. Cosas no relacionadas son reemplazadas con ....

Inicialmente, ejecuté stat:

# stat /storage/9B6C-CF9F/
  File: `/storage/9B6C-CF9F/'
  Size: 8192     Blocks: 16  IO Blocks: 512 directory
Device: 19h/25d  Inode: 0    Links: 4
Access: (755/drwxr-xr-x)    Uid: (    0/    root)   Gid: ( 9997/everybody)
...

Y de inmediato me di cuenta de que solamente root tiene permisos de escritura en /storage/9B6C-CF9F/ (es decir, mi almacenamiento externo). Intenté chmod. Sin errores. ¿Funcionó? No. stat es igual que antes, lo que significa que no se cambiaron los permisos. ¿Por qué?! Intenté descifrarlo:

# mount | grep /storage/9B6C-CF9F
/dev/fuse on /storage/9B6C-CF9F type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)

El problema está aquí: El punto de montaje es del tipo FUSE, y sé poco al respecto. Entonces:

Las Preguntas

  1. ¿Cómo (montar o) remontar una partición FUSE, posiblemente con una o más opciones especificadas, especialmente opciones relacionadas con permisos (como rootmode), utilizando el comando mount (en Android)?

  2. ¿Cómo encontrar la ubicación del dispositivo real detrás de ese sistema de archivos FUSE, en el directorio /dev/ (¿Existe algún dispositivo subyacente en absoluto)?

Otras preguntas:

  1. (Si has leído las dos secciones anteriores,) ¿Existe una forma alternativa de solucionar el problema de permisos mencionado?

  2. Si root solamente tiene permisos de escritura en mi almacenamiento externo, entonces ¿cómo las aplicaciones escriben datos en él?

Notas

  • Mientras estaba leyendo la página del manual de fuse en Fedora, encontré que hay algunas opciones de montaje de FUSE relacionadas con permisos, como rootmode y umask. Sin embargo, el problema es que no sé cómo montarlo con estas opciones, y cómo /dev/fuse sabe dónde encontrar mi almacenamiento externo (o incluso interno).

  • Hay una discusión sobre dónde se encuentra el archivo fstab de Android. Lo encontré en mi dispositivo, sin embargo, no hay ninguna línea que apunte al tipo fuse. Las únicas líneas relacionadas que pude encontrar son:

    # cat /fstab.sc8830
    ...
    # VOLD : fstab_dt_otg.sc8830
    /devices/sdio_sd/mmc_host/mmc1*           auto         auto defaults                            voldmanaged=sdcard1:auto,encryptable=userdata
    /devices/20200000.usb/usb*            auto         auto defaults                            voldmanaged=usb:auto
    ...

    ¿Qué significan estos? ¿Están relacionados o no? Realmente no sé. Además, no hay ningún archivo llamado fstab_dt_otg.sc8830 allí (es decir, en /).

0voto

jackyli0420 Puntos 1

¿Qué tal si intentas cambiar la configuración de la máscara?

mount -t vfat -o umask=0000 /dev/block/mmcblk1p1 /storage/9B6C-CF9F

Recuerda cambiar la referencia de bloque de dispositivo a tu tarjeta SD externa

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