Permiso denegado al instalar una aplicación del sistema con SSH

Tengo el archivo APK de una aplicación que quiero instalar como aplicación del sistema a través de SSH en tabletas Android rooteadas. Puedo instalar esta aplicación a través de ADB con un script, pero la instalación falla cuando lo hago a través de SSH. La aplicación SSH instalada se llama QuickSSHd e inicio sesión como root. Con ADB estoy conectado con la cuenta shell que levanto como root con el sucomando.

Aquí está el script de instalación:

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 amel comando no funciona.

Después de registrar 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 sucomando en 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!

Respuestas (1)

Encontré donde viene el problema. Cuando quiero cambiar los derechos sobre el archivo, la instalación ya ha comenzado. No sé exactamente lo que sucede durante la instalación. Así que descargué el APK en el sistema de archivos raíz, cambio los permisos y copio el APK /system/appcon el -pargumento del cpcomando para mantener los permisos del archivo en el destino.

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 !"