1 votos

Permiso denegado mientras se instala una aplicación de sistema con SSH

Tengo el archivo APK de una aplicación que quiero instalar como una aplicación de sistema vía SSH en tabletas Android enraizadas. Puedo instalar esta aplicación vía ADB con un script pero la instalación falla cuando lo hago por SSH. La aplicación SSH instalada se llama QuickSSHd y yo inicio sesión como root. Con ADB me conecto con la cuenta de shell que levanto como Root con el su comando.

Aquí está la instalación script:

if [[ $EUID -ne 0 ]]; then
   echo ">> This script must be run as root."
   exit 1
fi

echo ">> Remounting /system in write mode..."
mount -o rw,remount /system

echo ">> Installing Manager..."
wget -P /system/app http://update.esmart.net/apk/Manager.apk
chmod 777 /system/app/Manager.apk
chown system:system /system/app/Manager.apk

echo ">> Removing smanager..."
rm /system/app/smanager*

echo ">> Remounting /system in read mode..."
mount -o ro,remount /system

echo ">> Starting Manager..."
sleep 2
am start -W -n ch.esmart.managerapp/.MainActivity

echo ">> Finished !"

El icono de la aplicación no se muestra y am El comando no funciona.

Después de registrar a Logcat:

$ logcat | grep Manager
W/zipro   ( 3308): Unable to open zip '/system/app/Manager.apk': Permission denied
D/asset   ( 3308): failed to open Zip archive '/system/app/Manager.apk'
W/PackageParser( 3308): Unable to read AndroidManifest.xml of /system/app/Manager.apk

También probé el su en el comando SSH pero no cambia nada.

Los permisos se ven bien:

$ stat /system/app/Manager.apk
  File: "/system/app/Manager.apk"
  Size: 370990      Blocks: 728        IO Block: 4096   regular file
Device: 13h/19d Inode: 1448        Links: 1    
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/  system)   Gid: ( 1000/  system)
Access: 2014-10-24 12:10:05.000000000
Modify: 2014-10-24 12:10:05.000000000
Change: 2014-10-24 12:10:05.000000000

¿Qué significa este error? ¡Muchas gracias!

1voto

didile Puntos 6

Encontré donde viene el problema. Cuando quiero cambiar los derechos del archivo, la instalación ya ha comenzado. No sé exactamente qué sucede durante la instalación. Así que descargué el APK al sistema de archivos root, cambio los permisos y copio el APK en /system/app con el -p argumento a la cp para mantener los permisos de archivo en el objetivo.

if [[ $EUID -ne 0 ]]; then
   echo ">> This script must be run as root."
   exit 1
fi

echo ">> Remounting /system in write mode..."
mount -o rw,remount /system

echo ">> Installing Manager..."
wget -P / http://update.esmart.net/apk/Manager.apk
chmod 777 /Manager.apk
chown system:system /Manager.apk
cp -p -f /Manager.apk /system/app

echo ">> Removing smanager..."
rm /system/app/smanager*

echo ">> Remounting /system in read mode..."
mount -o ro,remount /system

echo ">> Starting Manager..."
sleep 2
am start -W -n ch.esmart.managerapp/.MainActivity

echo ">> Finished !"

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X