Título: Cambiar los "capabilities" de un proceso... Publicado por: >FedeX< en 25 Enero 2011, 03:09 am Hola comunidad
Estaba programando un app para android, cuando descubro que no se pueden usar los puertos 0-1023 como puerto local. Entonces, busqué el modo de solucionarlo y me encontré con el modo de ejecutar un programa compilado en C++ como Superusuario... Muy feliz, creo un simple programa que nada mas hace: Código
Ejecutando SYS_capget despues del SYS_capset descubro que los capabilities siguen siendo 0. No hubo efecto alguno :S Googleando me encuentro con un patch que supuestamente impedirá que un proceso cambie los capabilities de otro... Supongo que esa es la razón... porque los syscalls devuelven 0 (no error)... La pregunta es, ¿existe algún otro método que permita cambiar los capabilities de otro proceso en linux?. Gracias! Título: Re: Cambiar los "capabilities" de un proceso... Publicado por: madpitbull_99 en 25 Enero 2011, 09:20 am Esto encaja mejor en Java o Programación.
Has probado pidiendo permiso de root para ejecutar la aplicación? Algo como en el ejemplo de abajo: Código
Si todo sale bien debería salirte un mensaje pidiéndote permiso de root, como este: (http://www.stealthcopter.com/blog/wp-content/uploads/2010/01/android_root_access.png) El código lo saqué de aquí (http://www.stealthcopter.com/blog/2010/01/android-requesting-root-access-in-your-app/), pero hace unas semanas vi un articulo mas o menos sobre lo mismo, si lo encuentro modifico la respuesta y dejo el enlace. PD: Encontré otro muy parecido pero no es el que dije: Android Root Source Code: Looking at the C-Skills (http://intrepidusgroup.com/insight/2010/09/android-root-source-code-looking-at-the-c-skills/) Título: Re: Cambiar los "capabilities" de un proceso... Publicado por: >FedeX< en 25 Enero 2011, 17:21 pm Gracias por la atención
Ese código no eleva los privilegios del proceso actual (osea de mi app). Solo, crea otro proceso con privilegios root. No puedo ejecutar mis apps-java con esto y no me pareceria practico... Solo programas compilados o binarios... Entonces la idea era crear un programa que otorgue los privilegios que necesito al proceso donde corre mi app-java, para que pueda abrir los benditos puertos celestiales... Acabo de descubrir que mi programa compilado, aun corriendo como "root", no tiene el capability CAP_SETPCAP que me permite hacer lo que quiero hacer, dar privilegios a otro proceso... Tiene todos los capabilities excepto esa (0xFFFFFEFF)... No sé que hacer, aún siendo root no puedo!!! :S ¿Es que hay otro super-superusuario en linux?.. No entiendo para qué crean tanta seguridad inútil y molesta... Gracias por la atención Salu2 |