Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

425
Vistas
¿Cómo saber qué capacidades de Linux requiere un proceso para funcionar?

Estoy en una situación difícil en la que no sé qué capacidades de Linux requiere un proceso para funcionar. ¿Cuál es la mejor manera, o cualquier forma de averiguar qué límite se requiere?

Lo único que se me ocurre en este momento es usar capsh y quitar todas las mayúsculas en un proceso. Luego, el proceso falla y empiezo a agregar mayúsculas (eliminando --drop=CAP_XZY) hasta que funcione.

¿Alguna sugerencia mejor?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Basado en la actualización reciente de libcap2

1: (opción corta): getpcaps

Descripción:

Desde aquí :

getpcaps muestra las capacidades de los procesos indicados por los valores pid proporcionados en la línea de comando.

Ejemplo:

 $ getpcaps <PID> PID: = cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap+i

2: (Opción un poco más larga): /proc status y capsh

Descripción:

proc es un pseudo-sistema de archivos de información de procesos o, en otras palabras, un directorio donde puede ver información sobre todos los procesos.

Acerca de capsh :

El soporte y el uso de la capacidad de Linux se pueden explorar y restringir con esta herramienta. Esta herramienta proporciona un contenedor útil para ciertos tipos de pruebas de capacidad y creación de entornos.
También proporciona algunas funciones de depuración útiles para resumir el estado de la capacidad.

Ejemplo:

 $ cat /proc/<PID>/status | grep Cap

Y obtendrá (en la mayoría de los sistemas):

 CapInh: 00000000a80425fb (Inherited capabilities) CapPrm: 0000000000000000 (Permitted capabilities) CapEff: 0000000000000000 (Effective capabilities) CapBnd: 00000000a80425fb (Bounding set) CapAmb: 000000000000000 (Ambient capabilities set)

Use la utilidad capsh para decodificar números hexadecimales en el nombre de capacidades:

 capsh --decode=00000000a80425fb 0x00000000a80425fb=cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap

(*) Puede descargar capsh con: sudo apt-get install git libpcap-dev .

over 4 years ago · Santiago Trujillo Denunciar

0

Resulta que es más fácil de lo esperado. Instale libcap-ng ( https://people.redhat.com/sgrubb/libcap-ng/ ) y use pscap .

En Ubuntu 16.04, se puede instalar con:

 sudo apt-get install libcap-ng-utils

Ejemplo de extracto de salida:

 ppid pid name command capabilities 1 468 root systemd-journal chown, dac_override, dac_read_search, fowner, setgid, setuid, sys_ptrace, sys_admin, audit_control, mac_override, syslog, audit_read 1 480 root lvmetad full 1 492 root systemd-udevd full 1 1040 root rpc.idmapd full 1 1062 root rpc.gssd full 1 1184 messagebus dbus-daemon audit_write + 1 1209 root NetworkManager dac_override, kill, setgid, setuid, net_bind_service, net_admin, net_raw, sys_module, sys_chroot, audit_write
over 4 years ago · Santiago Trujillo Denunciar

0

Otro método, con el que me encontré hace un tiempo en esta publicación de blog de Brendan Gregg , es usar el rastreador de capacidades - capaz .

A continuación se muestra una salida de muestra:

 $ sudo /usr/share/bcc/tools/capable TIME UID PID COMM CAP NAME AUDIT 11:31:54 0 2467 capable 21 CAP_SYS_ADMIN 1 11:31:54 0 2467 capable 21 CAP_SYS_ADMIN 1 11:31:59 1000 2468 ls 1 CAP_DAC_OVERRIDE 1 11:31:59 1000 2468 ls 2 CAP_DAC_READ_SEARCH 1 11:32:02 0 1421 timesync 25 CAP_SYS_TIME 1 11:32:05 1000 2469 sudo 7 CAP_SETUID 1 11:32:05 0 2469 sudo 6 CAP_SETGID 1

Tiene la ventaja significativa de registrar las comprobaciones de capacidad realizadas por el núcleo para un proceso determinado. Esto permite perfilar la aplicación frente a las capacidades que realmente requiere, por ejemplo, reducir los privilegios y ejecutarla como un usuario sin privilegios.

Si bien pscap permite enumerar las capacidades efectivas de todos los procesos en ejecución, no ofrece un método confiable para verificar qué capacidades requiere el proceso, porque:

  • Un proceso puede tener la capacidad X en su conjunto permitido y solo elevarla al conjunto efectivo por un corto tiempo para realizar una operación privilegiada.
  • Un proceso podría haber comenzado con un conjunto más amplio de capacidades, realizar la inicialización que requiere privilegios elevados y descartar algunas (o todas) capacidades (por ejemplo, hacer ping para abrir un socket sin procesar ).
  • Funciona solo para procesos que ya se están ejecutando de manera basada en capacidades. ¿Qué pasaría si tuviera que determinar el conjunto de capacidades mínimo requerido para su aplicación recién desarrollada?
  • No permite correlacionar las verificaciones de privilegios realizadas para la aplicación con las operaciones que realiza, con la capacidad de obtener marcas de tiempo para una sola verificación.

Las fuentes de capacidad están disponibles en github . Las instrucciones de instalación para BCC (incluidas las compatibles ) están disponibles aquí . Para una descripción más detallada, consulte la publicación del blog mencionada al principio, también tenga en cuenta que la capacidad requiere kernel 4.4+, una alternativa para kernels más antiguos también está disponible en la publicación del blog.

Nota: no soy el autor ni estoy afiliado a los desarrolladores de la herramienta de ninguna manera. Solo quería llevarlo a una audiencia más amplia, ya que personalmente lo he usado para desarrollar un perfil de capacidades para una aplicación de monitoreo compleja que anteriormente requería privilegios de root completos para ejecutarse, y encontré que este rastreador es de gran ayuda.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda