En el sistema Linux, un usuario no privilegiado inicia un programa. El proceso creado tiene las capacidades CAP_NET_RAW,CAP_NET_ADMIN
con modo como effective,permitted,inheritable
. Este proceso crea un proceso secundario llamando al fork
y execv
para invocar a otro programa udhcpc, pero el proceso hijo no hereda las capacidades CAP_NET_RAW,CAP_NET_ADMIN
como se esperaba. Aunque antes de configurar las capacidades que he llamado prctl(PR_SET_KEEPCAPS, 1)
.fork y execve para heredar las capacidades del proceso padre sin privilegios
Cualquier sugerencia sobre qué hacer para heredar las capacidades del proceso principal sin privilegios al fork
seguido de execve
?
que parece ser imposible en el momento de preservar las capacidades después de execve, sin establecer capacidades de archivo. Ver [\ [RFC \] Las capacidades aún no pueden ser heredadas por los programas normales] (http://www.gossamer-threads.com/lists/linux/kernel/1641892) – Lekensteyn
Fork puede pasarlos, el ejecutivo no puede (excepto con ambiente). Exec puede pasar heredado, pero el archivo que se ejecuta también necesita este conjunto heredado. –