1 votes

Erreur : "Operation not permitted", lors de la tentative de suppression de su binary placé par KingoRoot

J'ai rooté mon P8-Lite ALE-L21 (Android 5.0.1) avec supersu.zip via la récupération TWRP. Après cela, j'ai installé KingoRoot et KingoRoot a remplacé su binaire avec d'autres su qui est obsolète pour ma version d'Android et ne fonctionne pas. J'ai donc modifié supersu.zip et placé su dans un autre répertoire de /data/local . Maintenant mon travail su binaire est en /data/local et cela fonctionne bien avec adb, mais ne fonctionne pas avec SuperSU et d'autres applications qui utilisent le privilège Root.

Pour résoudre ce problème, j'ai essayé de supprimer ces vieux su binaires : /system/bin/su y /system/xbin/su avec les commandes suivantes, sans succès :

$ adb shell
shell@hwALE-H:/ $ /data/local/su
root@hwALE-H:/ # mount -o remount,rw /system
root@hwALE-H:/ # rm /system/xbin/su
rm: /system/xbin/su: Operation not permitted
1|root@hwALE-H:/ # rm -rf /system/xbin/su
rm: /system/xbin/su: Operation not permitted
  • Qu'est-ce que cette erreur ? Opération interdite ?
  • Comment puis-je supprimer ces fichiers su ?

3voto

Firelord Points 23064

Données ce lien à propos de mount il est au moins confirmé que la partition système est montée en mode lecture-écriture, nous pouvons donc l'exclure de la liste des possibilités qui peuvent restreindre l'utilisation de la fonction rm de la suppression. De plus, l'erreur serait également différente.

Comme vous exécutez la commande avec les privilèges du superutilisateur, le propriétaire du fichier ou le propriétaire du groupe de ce fichier est différent. su Le dossier ne devrait pas être la cause de cette situation. Il s'agit probablement d'un problème lié aux attributs du fichier.

Pour vérifier les attributs d'un fichier, nous avons besoin de lsattr l'outil. Android n'est pas livré avec cet outil, vous n'avez donc pas d'autre choix que d'installer busybox ou toybox. Étant donné que votre Root standard est bâclé, vous ne pouvez pas installer le binaire busybox à l'aide d'une application. Cela échouerait. Dans ce cas, téléchargez le binaire de boîte à outils ou coffre à jouets approprié pour votre appareil, renommez le binaire en busybox ou toybox, poussez-le dans le répertoire /data/local/tmp/ et définir l'autorisation d'exécution sur ce fichier. L'autorisation peut être définie à l'aide de chmod . Faire :

adb shell /data/local/su -c chmod 755 /data/local/tmp/<FILE>  # replace <FILE> with toybox or busybox

Tester le binaire en utilisant

adb shell /data/local/tmp/<FILE>   # replace <FILE> with toybox or busybox

Si cela fonctionne, exécutez

adb shell /data/local/tmp/<FILE> lsattr /system/xbin/su       

Selon la sortie en chat les attributs du fichier sont

-----a-A----- /system/xbin/su

Selon le manuel de chattr ,

Lorsqu'un fichier ayant le jeu d'attributs "A" est consulté, son enregistrement d'heure n'est pas modifié. Cela permet d'éviter un certain nombre d'entrées/sorties sur disque pour les systèmes portables.

Un fichier dont l'attribut "a" est défini ne peut être ouvert en écriture qu'en mode "append". Seul le superutilisateur ou un processus possédant la capacité CAP_LINUX_IMMUTABLE peut définir ou effacer cet attribut.

Heure du dernier accès.

Un fichier avec l'attribut 'a' ne peut pas être renommé, supprimé ou écrasé, mais peut seulement être ajouté. C'est la raison pour laquelle rm produisait l'erreur suivante operation not permitted . (Je suis surpris que KingoRoot n'ait pas placé i attribut.)

Quoi qu'il en soit, nous devons d'abord supprimer cet attribut. Faire :

adb shell /data/local/su -c /data/local/tmp/<FILE> chattr -a /system/xbin/su

Il se peut qu'il ne produise aucun résultat à moins qu'une erreur ne se produise. Maintenant, vérifiez à nouveau les attributs du fichier en utilisant lsattr :

adb shell /data/local/tmp/<FILE> lsattr /system/xbin/su

En devrait maintenant être

-------A----- /system/xbin/su 

Cet attribut a été supprimé et vous êtes libre de renommer, de supprimer et d'écraser ce fichier. Pour supprimer le fichier, il suffit de faire

adb shell /data/local/su -c rm -f /system/xbin/su    

Suivez la procédure pour tout autre fichier, s'il ne peut pas être supprimé par rm immédiatement. Si lsattr rapports i également, puis le retirer à l'aide de -i en chattr .

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