¿Dónde se recuperan las capacidades durante el arranque?

¿Dónde se recuperan las capacidades durante el arranque?

Quiero que una aplicación de nodo tenga la capacidad de vincularse a un número bajo de puertos (443 para ser precisos, ya que es un servidor http2).

hago esto consudo setcap cap_net_bind_service=+ep /path/to/node

Esto aparentemente se recuerda sobre una bota. Estoy usando nvm para permitirme tener diferentes versiones de node instaladas, acabo de actualizar la versión y, por supuesto, ya no me vinculo.

Es bastante fácil agregar la capacidad nuevamente, pero presumiblemente en algún lugar estoy acumulando permisos que debería desactivar en versiones anteriores de node.

Pero no puedo averiguar en qué parte de la secuencia de inicio sucede esto. ¿Alguien puede decirme dónde (estoy ejecutando Debian).

EDITAR

Creo que la información debería almacenarse dentro de los atributos adicionales del ejecutable. Sin embargo, no puedo encontrar ningún atributo adicional en los archivos que configuré de esta manera.

Respuesta1

Las capacidades se almacenan con la entrada del archivo en el directorio (más precisamente, están en la carpeta del archivo).inodo, como otros tipos de permisos). No sucede nada especial durante el arranque.

A partir de GNU coreutils 8.23, el lscomando no conoce las capacidades de Linux, por lo que no encontrará nada en su salida que le indique que un programa tiene capacidades configuradas. Utilice el getcapcomando para enumerar las capacidades.

Para borrar todas las capacidades de un archivo, utilice setcap -r /path/to/file. Sin embargo, no tiene nada que limpiar: las capacidades se almacenan con el archivo, no hay nada que hacer más allá de eliminar el archivo.

Respuesta2

Ver setcap(8), las capacidades están configuradas.para el archivo ejecutable. Esto funciona de manera similar (pero con una granularidad más fina) que SUID o SGID. En ninguna parte del "proceso de arranque" se maneja esto; Siempre que el archivo se ejecuta como programa, el proceso resultante obtiene las capacidades.

Sí, dejar versiones antiguas del archivo con privilegios elevados es un riesgo de seguridad grave; es mejor eliminar las versiones antiguas cada vez que se instale una nueva.

información relacionada