1 votes

Monter EncFS sur Android KitKat 4.4

Sur les anciennes versions d'Android (enracinées), Cryptonite était une excellente solution pour monter des dossiers cryptés EncFS, mais sur mon nouveau téléphone Android KitKat avec un stockage émulé, cela échoue.

Je peux monter avec succès le dossier crypté en /storage/emulated/legacy sur un autre dossier dans /storage/emulated/legacy mais les fichiers décryptés ne sont pas visibles pour les autres applications. Comment monter un dossier EncFS de la bonne manière ?

2voto

JanKanis Points 131

Le problème se révèle être une nouvelle fonctionnalité de sécurité dans KitKat. Par défaut, les applications ont leur propre espace de nom de montage, ce qui signifie que les montages créés par une application ne sont pas visibles par une autre application.

Deuxièmement, les téléphones Android sans véritable carte SD utilisent une émulation pour la fausse carte SD, ce qui m'a posé quelques problèmes.

SuperSU de Chainfire a une option pour accéder à l'espace de nom Root mount qui permet à un programme de monter des systèmes de fichiers et de les rendre visibles à tous les autres programmes. Malheureusement, Cryptonite ne connaît pas cette option. Une solution est d'intercaler un script avant le programme encfs binaire que Cryptonite utilise.

Vous aurez besoin d'un shell Root pour exécuter ces commandes, probablement à partir d'un ordinateur utilisant la fonction adb pour vous connecter à votre téléphone via usb. (Mais l'utilisation d'une application de terminal pourrait également fonctionner).

Des pas :

Déplacez-vous vers le répertoire de données de la cryptonite :

cd /data/data/csh.cryptonite

Notez l'identifiant de l'utilisateur de Cryptonite :

ll -d -n .

Cela donnera un résultat similaire à drwxr-x--x 11 10133 10133 4096 Feb 14 23:51 . Le 10133 est l'identifiant de l'utilisateur de Cryptonite (la deuxième copie est l'identifiant du groupe Cryptonite, mais cela devrait être le même).

Créez un dossier pour stocker le binaire original encfs, et donnez-lui le bon propriétaire.

mkdir original
chown 10133:10133 original

(remplacez le 10133 par l'identifiant d'utilisateur que cryptonite a sur votre téléphone)

Déplacez les encfs d'origine

mv encfs original/

Créez un script nommé encfs pour s'interposer pour les vrais encfs. Je préfère utiliser le nano pour cela, mais vous pouvez aussi créer le fichier d'une manière différente et le déplacer en utilisant la commande cp /path/to/encfs/replacement/file/here /data/data/csh.cryptonite/encfs

nano encfs

Mettez le contenu suivant dans le script encfs de remplacement

#!/system/bin/sh

cmd=/data/data/csh.cryptonite/original/encfs

for param in "$@"
do
    replaced=`echo "$param" | sed 's:^/storage/emulated/:/data/media/:'`
    cmd="$cmd $replaced"
done

su -mm -c $cmd

Sauvegarder le fichier avec ctrl-x (volume bas + x sur certaines applications émulatrices de terminal), répondre y à sauver.

Rendre le script de remplacement exécutable

chmod +x encfs

Définir le bon propriétaire

chown 10133:10133 encfs

(Encore une fois, remplacez le 10133 par le nom d'utilisateur que Cryptoite a sur votre téléphone).

Ça devrait être ça. Monter un dossier encfs à partir de /storage/emulated/0/ dans un autre dossier dans /storage/emulated/0 devrait fonctionner maintenant.

Ce qu'il fait

Le script de remplacement fait deux choses : remplacer les chemins d'accès aux dossiers à partir de /storage/emulated/something à l'endroit réel où les données de la carte SD émulée sont stockées, et appeler le vrai encfs dans l'espace de nom de montage Root afin que le dossier encfs monté soit visible par toutes les applications.

Le changement des chemins de dossiers est nécessaire car pour une raison quelconque, le montage sur la carte SD émulée ne fonctionne pas (du moins pour moi). La carte SD émulée stocke en fait ses données dans le dossier /data/media/0 . En montant sur l'emplacement de stockage réel, la couche d'émulation de la carte SD n'a pas besoin de savoir qu'il s'agit d'un système de fichiers différent.

Montage direct d'un fichier sur /data/media/0 de Cryptonite ne fonctionne pas parce que l'application Cryptonite n'a pas accès à ce dossier, donc le script de remplacement change les chemins du point de montage et du dossier crypté pour pointer vers le stockage sous-jacent de la carte SD.

-1voto

Piotr Points 3808

Je n'ai aucun problème pour monter des conteneurs avec EDS L'application fonctionne correctement avec toutes les versions d'Android

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X