2 votes

La propriété de la racine est-elle héritée dans les scripts shell ? (rsync via ssh permission denied)

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.

0voto

harlandski Points 184

Je vais tenter de répondre moi-même à cette question, bien qu'il s'agisse d'une situation de type "défi du cadre / problème XY".

Je n'ai jamais trouvé quel était exactement le problème avec la configuration que j'avais, cependant J'ai pu obtenir ce que je voulais c'est-à-dire une ligne de commande entièrement intégrée pour les scripts ssh / rsync / bash, etc. en installant CyanogenMod 11 sur mon Samsung Galaxy S3 GT-I9300, car ces outils en ligne de commande et d'autres sont fournis en standard et sont manifestement bien configurés pour éviter les problèmes que j'ai rencontrés dans ma configuration précédente.

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