Comme on ne peut plus faire confiance à ES Explorer, il me fallait une autre solution pour accéder facilement à mes partages réseau SMB/CIFS. Le montage d'un partage réseau SMB/CIFS dans Android-x86 (version 9 R2) s'est avéré beaucoup plus facile que toutes les solutions que j'ai trouvées sur StackExchange. Je n'ai pas eu besoin d'installer de logiciel ou d'application, mount -t cifs
fonctionne dès sa sortie de la boîte.
Le problème est que je ne peux pas rendre ce montage visible pour un utilisateur normal. Seul Root ou superuser, quel que soit son nom dans Android, voit et peut utiliser le système de fichiers monté, alors que l'utilisateur normal continue à voir le point de montage comme un répertoire du propre système de fichiers d'Android.
Pour clarifier, jetez un coup d'œil à cette session de terminal. Dans cet exemple, Android est exécuté dans une VM Virtual Box, l'adresse IP est celle de l'hôte lui-même. Je crée un sous-répertoire dans /sdcard/Download/ pour le monter, avec l'intention de déplacer facilement les fichiers de Download vers le partage monté sur ce sous-répertoire. Je monte le partage en tant que super-utilisateur, avec les options appropriées, puis, à la fois en tant qu'utilisateur normal et en tant que super-utilisateur, je liste le contenu du sous-répertoire et j'affiche le sous-répertoire :
$ 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)
...
Vous voyez la différence entre un utilisateur normal et un super utilisateur : ls
montre des contenus de répertoire différents parce que stat
dit qu'ils voient le sous-répertoire sur un autre appareil. Une explication possible pourrait être que l'utilisateur normal a le descripteur de fichier pour le répertoire ouvert, et continue à utiliser ce descripteur de fichier et le contenu vers lequel il pointe, même après qu'un autre système de fichiers soit monté dessus. Mais cela n'expliquerait probablement pas pourquoi exactement la même chose se produit si je mets la balise mkdir
dans la commande su pour le mount
.
Pour l'instant, je ne peux accéder au partage samba monté de l'hôte VM qu'à partir du terminal, en tant que super utilisateur, pour copier des fichiers entre le partage et le dossier de téléchargement. J'ai mis le mkdir
y mount
dans un script, et a ajouté les commandes touch
pour monter le répertoire sous le point de montage comme "pas le partage réseau".
Ma question est la suivante Comment rendre le partage monté visible pour l'utilisateur normal, de sorte que je puisse utiliser les applications Android comme "Files" et d'autres gestionnaires de fichiers pour y accéder dans une interface graphique.
0 votes
En rapport : Android.stackexchange.com/a/201191/218526
0 votes
Merci pour le lien. Je dois faire quelques études pour le comprendre, mais c'est pour cela que nous sommes ici.
0 votes
En ce qui concerne le montage invisible, je suppose qu'il est causé par les espaces de noms de montage isolés (qui peuvent être désactivés en fonction de la solution Root).