Sichern Sie Ihre Daten, bevor Sie die folgenden Schritte durchführen, da die Wahrscheinlichkeit groß ist, dass Sie Ihr Telefon ruinieren werden.
Dies ist keine vollständige Antwort, aber kurz gesagt neigen einige Anwendungen dazu, ihre Benutzerinformationen als durch Leerzeichen getrennte Werte in /data/system/packages.list
während bei anderen Anwendungen die Benutzerinformationen in der Regel im XML-Format in /data/system/packages.xml
. Darüber hinaus sehen die Besitzverhältnisse in einem Terminal etwas anders aus als in diesen Dateien. Auf meinem Telefon ist Whatsapp zum Beispiel der Unix-Benutzer u0_a70, während der XML-Eintrag ihn als userId="10070" ausweist.
Es ist daher etwas schwierig, die Benutzerberechtigungen "einfach zu korrigieren", da man zwei verschiedene Skripte benötigt, die auf zwei völlig unterschiedliche Datensätze zugreifen, und Android-Linux wird nicht gerade mit XML-Parsern ausgeliefert. Die erforderliche Konvertierung der Benutzer-ID ist auch nicht hilfreich, da sie nicht immer anwendbar ist.
Wenn Sie sich der Herausforderung stellen wollen, können Sie mit BusyBox-Bins wie folgt beginnen:
# Generate a permissions fixer from /data/system/packages.list:
cat /data/system/packages.list | awk '{print "chown u0_a" $2-10000 ":u0_a" $2-10000 " /data/data/"$1" -R"}' > /data/media/fix_perms.sh
chmod +x /data/media/fix_perms.sh
Dadurch wird eine Liste von Zeilen erzeugt, die wie folgt aussieht:
chown u0_a17:u0_a17 /data/data/com.google.android.gsf -R
chown u0_a6:u0_a6 /data/data/com.android.keyguard -R
chown u0_a52:u0_a52 /data/data/com.google.android.calendar -R
chown u0_a48:u0_a48 /data/data/com.android.chrome -R
chown u0_a55:u0_a55 /data/data/jackpal.androidterm -R
was vielversprechend ist. Allerdings funktioniert dies nicht für Benutzer wie "bluetooth", "radio" und "system", und Zeilen mit diesen Benutzern erzeugen stattdessen Müll wie:
chown -8998:-8998 /data/data/com.android.bluetooth -R
Sie müssen also alles auf seine Richtigkeit überprüfen, bevor Sie das Skript ausführen. Ein naiver Weg, dies zu beheben, könnte darin bestehen, die obige cat..awk in | egrep -v '[0-9][0-9][0-9][0-9]:-[0-9][0-9][0-9][0-9]'
aber das ist eine Notlösung, die nicht in allen Fällen funktioniert. Wenn dies für Sie akzeptabel ist, können Sie die obigen Anweisungen in einer einzigen Zeile kombinieren, die zu /data/media/fix_perms.sh
.
Damit wird nichts repariert, was nur in /data/system/packages.xml
und jedes reguläre Skript ist fast garantiert geräteübergreifend fehlerhaft, daher werde ich das nicht behandeln. Wenn Sie eine mögliche Lösung wünschen, hinterlassen Sie einen Kommentar, und ich werde auch ein Mock-Skript für die XML-Datei schreiben.
2 Stimmen
Werksreset? Ich bin nicht sicher, welche Änderung Sie vorgenommen haben, aber auf den meisten nicht verwurzelten Telefonen oder Dev-Telefonen sollte dieser Ordner eingeschränkte Berechtigungen haben.
1 Stimmen
Sie kennen chmod 755 dirName , etc? (Das könnte funktionieren, aber ich kenne mich mit Android nicht aus ;-). ... Viel Glück!