Dado este enlace sobre mount
al menos se confirma que la partición del sistema está montada en modo de lectura-escritura, por lo que podemos excluirla de la lista de posibilidades que pueden estar restringiendo rm
de la eliminación. Además, el error también sería diferente.
Como estás ejecutando el comando con privilegio de superusuario, el propietario del archivo o el propietario del grupo de ese su
archivo no debería ser la causa aquí. Lo más probable es que tenga algo que ver con los atributos del archivo.
Para comprobar los atributos de los archivos necesitamos lsattr
herramienta. Android no viene con esa herramienta, así que no te queda más remedio que instalar busybox o toybox. Dado que tu Root estándar está estropeado, no puedes instalar el binario busybox usando una aplicación. Fallaría. En ese caso, descarga el binario de busybox o caja de juguetes apropiado para su dispositivo, cambie el nombre del binario a busybox o toybox, póngalo en /data/local/tmp/
y establecer el permiso de ejecución en ese archivo. El permiso puede establecerse utilizando chmod
. Hazlo:
adb shell /data/local/su -c chmod 755 /data/local/tmp/<FILE> # replace <FILE> with toybox or busybox
Pruebe el binario utilizando
adb shell /data/local/tmp/<FILE> # replace <FILE> with toybox or busybox
Si funciona, ejecute
adb shell /data/local/tmp/<FILE> lsattr /system/xbin/su
Según la salida en el chat los atributos del archivo son
-----a-A----- /system/xbin/su
Según manual de chattr
,
Cuando se accede a un archivo con el atributo "A" establecido, su registro atime no se modifica. Esto evita una cierta cantidad de E/S de disco para los sistemas portátiles.
Un archivo con el atributo 'a' establecido sólo puede ser abierto en modo append para escribir. Sólo el superusuario o un proceso que posea la capacidad CAP_LINUX_IMMUTABLE puede establecer o borrar este atributo.
a hora de último acceso.
Un archivo con el atributo 'a' no puede ser renombrado, borrado o sobrescrito, sino que sólo puede ser añadido. Así que esa es la razón rm
arrojaba el error operation not permitted
. (Me sorprende que KingoRoot no haya colocado i
atributo).
En cualquier caso, primero debemos eliminar ese atributo. Hazlo:
adb shell /data/local/su -c /data/local/tmp/<FILE> chattr -a /system/xbin/su
Es posible que no dé ninguna salida a menos que se produzca un error. Ahora, compruebe de nuevo los atributos del archivo utilizando lsattr
:
adb shell /data/local/tmp/<FILE> lsattr /system/xbin/su
Es debe ahora sea
-------A----- /system/xbin/su
Ese atributo ha sido eliminado y eres libre de renombrar, borrar y sobrescribir ese archivo. Para eliminar el archivo, basta con hacer
adb shell /data/local/su -c rm -f /system/xbin/su
Siga el proceso para cualquier otro archivo, si no puede ser eliminado por rm
a la vez. Si lsattr
informa i
también, y luego quitarlo usando -i
en chattr
.