Como ya no se puede confiar en ES Explorer, necesitaba otra solución para acceder fácilmente a mis recursos compartidos de red SMB/CIFS. Montar un recurso compartido de red SMB/CIFS en Android-x86 (versión 9 R2) resultó ser mucho más fácil que cualquiera de las soluciones que encontré en StackExchange. No necesité instalar ningún software o aplicación, mount -t cifs
funciona nada más sacarlo de la caja.
El problema es que no puedo hacer visible este montaje para el usuario normal. Sólo Root o superusuario, como se llame en Android, ve y puede utilizar el sistema de archivos montado, mientras que el usuario normal sigue viendo el punto de montaje como un directorio del propio sistema de archivos de Android.
Para aclararlo, echa un vistazo a esta sesión de terminal. En este ejemplo, Android se ejecuta en una VM de Virtual Box, la dirección IP es la del propio host. Hago un subdirectorio en /sdcard/Download/ para montarlo, con la intención de mover fácilmente los archivos de Download al recurso compartido montado en ese subdirectorio. Monto el recurso compartido como superusuario, con las opciones apropiadas, y luego, tanto como normal y como superusuario, lista el contenido del subdirectorio y estatus el subdirectorio :
$ cd "/$EXTERNAL_STORAGE"/Download/ # i.e. /sdcard/Download/
$ mkdir SERVER_SHARE
$ touch SERVER_SHARE/"NOT THE MOUNTED SHARE" # a marker for the base directory
$ su -c "mount -v -o username=guest,rw,noperm,iocharset=utf8 -t cifs //192.168.1.10/SHARE $PWD/SERVER_SHARE"
$ ls SERVER_SHARE/
'NOT THE MOUNTED SHARE'
$ su -c "ls SERVER_SHARE"
... lists all the files on the share ...
$ stat SERVER_SHARE
Size: 4096 Blocks: 0 IO Block: 512 directory
Device: 1dh/29d Inode: 409629 Links: 2
Access: (0770/drwxrwx---) Uid: ( 0/ root) Gid: ( 9997/everybody)
...
$ su -c "stat SERVER_SHARE"
Size: 0 Blocks: 0 IO Block: 512 directory
Device: 1eh/30d Inode: 217 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
...
Se ve la diferencia entre el usuario normal y el superusuario: ls
muestra un contenido de directorio diferente porque stat
dice que ven el subdirectorio en un dispositivo diferente. Una posible explicación podría ser que el usuario normal tiene el descriptor de archivo para el directorio abierto, y sigue utilizando ese descriptor de archivo y el contenido al que apunta, incluso después de que algún otro sistema de archivos se monte sobre él. Pero eso probablemente no explicaría por qué ocurre exactamente lo mismo si pongo el mkdir
dentro del comando su para el mount
.
Por el momento, sólo puedo acceder al recurso compartido samba montado del host de la VM desde el terminal, como superusuario, para copiar archivos entre el recurso compartido y la carpeta Download. He puesto el mkdir
y mount
en un script, y añadimos los comandos touch
para montar el directorio bajo el punto de montaje como "no el recurso compartido de red".
Mi pregunta es la siguiente Cómo puedo hacer que el recurso compartido montado sea visible para el usuario normal, de modo que pueda utilizar las aplicaciones de Android como "Archivos" y otros gestores de archivos para acceder a él en una interfaz gráfica de usuario.
0 votos
Relacionado: Android.stackexchange.com/a/201191/218526
0 votos
Gracias por el enlace. Tengo que estudiar un poco para entenderlo, pero para eso estamos.
0 votos
Con respecto al montaje invisible supongo que es causado por los espacios de nombres de montaje aislados (se puede desactivar dependiendo de la solución Root)