0 votes

Permission refusée lors du travail avec/sans "su -c" dans /cache

J'essaie de lancer cette commande

adb shell "su -c echo 'boot-recovery' > /cache/recovery/command"
//OR//
adb shell "echo 'boot-recovery' > /cache/recovery/command"

les sorties sont les mêmes : /system/bin/sh: can't create /cache/recovery/command: Permission denied

J'ai accordé la permission Root pour adb et je peux exécuter d'autres commandes avec Root normalement comme touch par exemple

J'ai essayé la commande dans les deux sens lorsque le fichier existait et n'existait pas.

J'ai essayé de vérifier l'existence du fichier :

adb shell "if [ -f /cache/recovery/command ]; then echo "file found"; else echo "error"; fi"

il est revenu error même si le fichier existe bel et bien

L'objectif est pour ajouter quelques lignes à la file d'attente de récupération afin qu'elles soient exécutées la prochaine fois que le périphérique démarre en récupération

Corrigez-moi, je ne suis pas très doué pour la ligne de commande d'Android. Dois-je utiliser une autre commande pour atteindre cet objectif ?

Plus d'informations : Android 8.1 (RR oreo) ... Magisk SU ... TWRP 3.2 (Mais il faut que cela soit compatible avec le plus grand nombre de versions d'Android, de restaurations et de binaires su possible ..... J'espère lol )

0 votes

Il est préférable de poser votre question sur superutilisateur communauté .

1voto

Pour moi, ça a marché :

adb shell "su -c 'boot-recovery > /cache/recovery/command'"

Vous commencez par un guillemet double avant su -c . Puis un guillemet simple pour la commande, un guillemet simple après la commande et fermer avec un guillemet double.

0voto

Firelord Points 23064
adb shell 'su -c "echo \"boot-recovery\" > /cache/recovery/command"'
adb shell 'su -c "'"echo "boot-recovery" > /cache/recovery/command"'"' #Alternative
adb shell "su -c \"echo 'boot-recovery' > /cache/recovery/command\"" #Another alternative
adb shell 'su -c "'"echo "'"boot-recovery"'" > /cache/recovery/command"'"' #yet another alternative

Ça devrait marcher. Je ne sais pas pourquoi. Cette réponse de codeforester pourrait vous aider si vous cherchez une raison.

Mon avis est que, dans :

adb shell "su -c echo 'boot-recovery' > /cache/recovery/command"

L'interpréteur de commandes adb lance un interpréteur de commandes non interactif, les guillemets doubles sont étendus, ce qui laisse l'interpréteur de commandes adb en position ouverte.

su -c echo 'boot-recovery' > /cache/recovery/command

Cependant, dans ce cas, seul l'écho 'boot-recovery' doit être exécuté avec le privilège Root et la sortie résultante revient à l'utilisateur du shell (id=2000) qui n'a pas le privilège d'écrire dans le répertoire cache, d'où l'erreur.

Citer tout ce qui suit -c passe tout entier echo 'boot-recovery' > /cache/recovery/command instruction à su exécutable, et donc, ça marche.

0 votes

Merci pour l'info ... comment éviter de le mettre entre les mains de l'utilisateur et le garder en mode Root.... Les 4 commandes que vous avez écrites sont-elles une solution ? parce qu'elles produisent le même résultat. Permission denied

0 votes

Je ne sais pas pourquoi l'autorisation de sortie a été refusée dans votre cas. Il fonctionne ici. Est-ce que le shell/adb a la permission de passer à l'utilisateur Root dans votre application superutilisateur ?

0 votes

Dans magisk su il laisse les apps et adb avoir un accès Root... Je vais essayer de jouer avec une autre option liée à l'accès propriétaire/utilisateur/quelque chose à la racine.

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