Berechtigung verweigert, wenn mit/ohne "su -c" in /cache gearbeitet wird

Ich versuche, diesen Befehl auszugeben

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

gibt das gleiche aus:/system/bin/sh: can't create /cache/recovery/command: Permission denied

Ich habe Root-Berechtigung für adb erteilt und kann andere Befehle wie touchzum Beispiel normal mit Root ausführen

Ich habe den Befehl in beide Richtungen ausprobiert, als die Datei existierte und nicht existierte.

Ich habe versucht, die Existenz der Datei zu überprüfen:

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

es wurde zurückgegeben error, obwohl die Datei tatsächlich existiert

Das Ziel besteht darin, der Wiederherstellungswarteschlange einige Zeilen hinzuzufügen, damit sie beim nächsten Start des Geräts in die Wiederherstellung ausgeführt werden

Bitte korrigieren Sie mich, ich bin nicht so gut in der Android-Befehlszeile, muss ich einen anderen Befehl verwenden, um dieses Ziel zu erreichen?

Weitere Informationen: Android 8.1 (RR oreo) ... Magisk SU ... TWRP 3.2 (muss aber mit so vielen Android-Versionen, Wiederherstellungen und Sub-Binärdateien wie möglich kompatibel sein .... Ich hoffe, lol )

Antworten (2)

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

Das sollte funktionieren. Ich bin mir nicht sicher warum. Diese Antwort von Codeforester könnte Ihnen helfen, wenn Sie nach einem Grund suchen.

Meine Meinung ist, in:

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

adb Shell startet eine nicht interaktive Shell, die doppelten Anführungszeichen werden erweitert und verlassen

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

Dabei 'boot-recovery'wird jedoch nur echo mit Root-Rechten ausgeführt und die resultierende Ausgabe fällt auf den Shell-Benutzer (id=2000) zurück, der nicht das Recht hat, in das Cache-Verzeichnis zu schreiben, daher der Fehler.

Wenn Sie alles zitieren, nachdem -cdie gesamte echo 'boot-recovery' > /cache/recovery/commandAnweisung an sudie ausführbare Datei übergeben wurde, funktioniert das.

Danke für die Info . weil sie das gleiche ausgebenPermission denied
Ich weiß nicht, warum in Ihrem Fall die Erlaubnis verweigert ausgegeben wird. Hier funktioniert es. Hat die Shell/adb die Berechtigung, in Ihrer Superuser-App zum Root-Benutzer zu wechseln?
In magisk su können Apps und adb Root-Zugriff haben ... Ich werde versuchen, mit einer anderen Option zu spielen, die sich auf den Root-Zugriff von Eigentümern / Benutzern / etwas bezieht
omg .. Der 2. Ihrer Befehle funktionierte, nachdem ich den Multi-User-Modus von Device Owner Onlyauf geändert hatte User Independent... und jetzt habe ich die commandDatei geöffnet, sie enthält "Boot-Recovery" (Erfolg) ..... Es hat sogar funktioniert Obwohl Powershell es nicht mag (es färbt es wild)
Entschuldigung für die vielen Kommentare. Jetzt habe ich es getestet, es schreibt, commandaber beim Booten in die Wiederherstellung passiert nichts, sodass das Hauptziel nicht erreicht wird
@NHKomaiha, es ist eine ganz andere Frage, also stellen Sie bitte eine neue Frage. Danke. :-)
Obwohl es mein Hauptziel war, die Warteschlange zu erledigen, aber ok ... zumindest habe ich hier etwas Nützliches gelernt, danke für die Hilfe

Bei mir hat das funktioniert:

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

Sie beginnen mit einem doppelten Anführungszeichen davor su -c. Dann einfaches Anführungszeichen für den Befehl, ein einfaches Anführungszeichen nach dem Befehl und mit einem doppelten Anführungszeichen schließen.