4 votos

¿Cómo remontar sdcardfs para permitir establecer permisos/propietarios de archivos?

Tengo un OnePlus One con root que ejecuta LineageOS 15.1 (Oreo 8.1). Estoy intentando ajustar algunos permisos/propietarios de archivos en la partición de la tarjeta sd emulada.
La partición parece estar montada como un sdcardfs:

A0001:/ # mount | grep /storage/emulated                                                                                                                                                           
/data/media en /storage/emulated tipo sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid)

No estoy seguro de lo que eso significa. Algunas personas sugieren que Android solía usar mount luego cambió a fuse y ahora con Oreo usa sdcardfs. No estoy seguro de si tiene sentido, pero estoy un poco asustado de que algo como mount -o remount, rw /mnt/sdcard/ (que aparentemente era lo que tenías que hacer en el pasado para poder establecer permisos de archivos en la partición de la tarjeta sd emulada).

Breve demostración que muestra que los permisos de archivos no se aplicarán:

A0001:/ $ su
A0001:/ # ls -la /storage/emulated                                                                                                                                                                 
total 12
drwx--x--x  4 root sdcard_rw 4096 2018-07-24 17:44 .
drwxr-xr-x  4 root root        80 2018-07-24 17:21 ..
drwxrwx--x 14 root sdcard_rw 4096 2018-07-24 17:20 0
drwxrwx--x  2 root sdcard_rw 4096 1970-01-01 01:12 obb
A0001:/ # touch /storage/emulated/a
A0001:/ # ls -la /storage/emulated/a
-rw------- 1 root sdcard_rw 0 2018-07-24 17:44 /storage/emulated/a
A0001:/ # chmod 777 /storage/emulated/a
A0001:/ # ls -la /storage/emulated/a                                                                                                                                                               
-rw------- 1 root sdcard_rw 0 2018-07-24 17:44 /storage/emulated/a

(Nota: lo mismo sucede si uso /storage/emulated/0 en lugar de /storage/emulated)

Mi pregunta es: ¿Qué debo ejecutar para poder cambiar los permisos de archivo y la propiedad de archivo en esta extraña partición sdcardfs?

4voto

Jack Wade Puntos 231

No puedes cambiar los permisos y propietarios de los archivos en sdcardfs.

En todos los sistemas operativos basados en el kernel de Linux - como lo es Android - es posible establecer permisos en archivos (incluyendo directorios) siempre y cuando el sistema de archivos admita permisos UNIX (uid, gid, modo). Ejemplos comunes de tales sistemas de archivos son ext4 y f2fs.

Sin embargo, el almacenamiento interno de Android (confusamente llamado externo) al que tienen acceso las aplicaciones instaladas en /sdcard, no es un sistema de archivos real sino virtual / emulado que expone /data/media (que es un sistema de archivos real) a través de sdcardfs. sdcardfs y su predecesor FUSE exponen el sistema de archivos emulado con un conjunto fijo de uid, gid y máscara (modo). Por lo tanto, los comandos chmod y chown no tienen ningún efecto, ya sea ejecutados a través de CLI (adb shell o emulador de terminal) o GUI (explorador de archivos).

Es posible cambiar los bits de permiso del archivo en el sistema de archivos real subyacente, pero acceder a /data/media requiere acceso root porque solo el UID/GID 1023 (aid_media_rw) tiene acceso de lectura al directorio. Y aun así, los permisos seguirán siendo los mismos cuando se vean desde la vista emulada /sdcard.

Lecturas adicionales:

Relacionado:

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