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
syscall(SYS_capget,&header,&data); data.effective |= CAP_TO_MASK(CAP_NET_BIND_SERVICE); data.permitted |= CAP_TO_MASK(CAP_NET_BIND_SERVICE); data.inheritable = 0; syscall(SYS_capset,&header,&data);
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!