J'exécute la ROM personnalisée Android Revolution HD 52.0 (Android 4.3) avec le superuser 1.0.3.0 de Koush sur un Samsung Galaxy S3 GT-I9300.
Dans l'espoir d'utiliser quelques applications shell natives sur mon téléphone dans le but de le sauvegarder et de le synchroniser avec mes ordinateurs GNU/Linux, j'ai installé opkg depuis ici : http://dan.drown.org/Android/ et a continué à installer openssh et rsync. Tous les nouveaux binaires sont dans /data/local/bin, et mes propres scripts sont également dans /data/local.
En utilisant le terminal Android de Jack Palevich, je suis en mesure d'utiliser rsync via ssh pour transférer des fichiers sur mes ordinateurs depuis mon téléphone, mais uniquement lorsque no connecté en tant que Root (c'est-à-dire lorsque je n'ai pas utilisé la commande 'su').
Lorsque je lance les scripts en tant que Root (après avoir exécuté su dans l'émulateur de terminal), j'obtiens l'erreur suivante :
rsync : échec de l'exécution de ssh : Permission refusée (13)
J'obtiens le même message d'erreur en utilisant adb shell + su.
La ligne pertinente du script est :
/data/local/bin/rsync --itemize-changes --verbose --human-readable \
--log-file=$local_path/log/nbbak-$(date +%F-%H-%M-%S).log \
--recursive --update --times --modify-window=1 \
--rsh="/data/local/bin/ssh -i $keyfile -p $port" \
$local_path/ $remote_path/
local_path est actuellement /storage/extSdCard. Je l'ai ajouté ici pour plus de lisibilité.
Comme je l'ai dit, cette opération (rsync put) fonctionne en utilisant le script du Terminal de Palevich sans su.
Mes questions sont les suivantes :
Quel est le problème ? S'agit-il de la façon dont Android attribue les userids aux processus ? (D'après ce que j'ai compris, les nouveaux processus s'exécutent tous avec leur propre userid. Est-ce ce qui se passe ici - rsync ne s'exécute pas réellement en tant que Root, il n'est donc pas en mesure de lancer le processus ssh en tant que Root non plus). Ou bien quelque chose d'autre se passe-t-il ? Comment puis-je résoudre ce problème ? J'ai essayé de lancer logcat, mais je ne sais pas ce que je cherche.
Quelle pourrait être la solution avec ma configuration actuelle ?
Je voudrais exécuter rysnc via ssh en tant que Root, car bien qu'il fonctionne dans l'émulateur de terminal sans su, je ne peux que pousser et non tirer des fichiers de cette façon, alors que j'espérais en tant que Root pouvoir tirer des fichiers également.