Me inspiré para comenzar a jugar con las capacidades de Linux nuevamente, mi proyecto favorito es reemplazar el setuid en muchos de los archivos binarios y brindar acceso a utilidades privilegiadas adicionales a usuarios que no son root. Hacer esto agregando las capacidades relevantes ( +ei
, el problema es discutible +ep
) a través de setcap
y configurar mi cuenta de usuario personal ( jdavis4
) para tener esas capacidades asignadas a su sesión al iniciar sesión a través de pam_cap.so
y ha ido de maravilla. Puedo dar a usuarios individuales acceso a "ping" y "kill" a través de capacit.conf
Sin embargo, el problema que tengo es que se me ocurrió que si este fuera un sistema de producción, un administrador probablemente querría asignar capacidades mediante algún tipo de unidad agregada para no tener que hacer esto para cada usuario individual. cada vez que hacen uno. De esta manera, se puede agregar un usuario al grupo "filesystemAdmin" y obtener cosas como CAP_DAC_OVERRIDE
"ProcessManagement" o agregarlas a "ProcessManagement" y obtener cosas como CAP_SYS_NICE
y CAP_SYS_KILL
.
¿Es esto posible actualmente?
Respuesta1
Agregamos @group
sintaxis para admitir pam_cap.so
s capability.conf
en libcap-2.29
. Al momento de escribir este artículo,libcap
está en la versión 2.49.
También hay alguna documentación parapam_cap.so
aquí.
Respuesta2
Lo que quieres hacer no es posible. No solo pam_cap
manipula las capacidades heredables (por lo que en realidad no otorga ninguna capacidad permitida/efectiva), sino que también solo trata con usuarios y no con grupos (ni siquiera con grupos primarios).
Respuesta3
No puedo encontrar ninguna documentación que indique que capacitity.conf se pueda asignar directamente a un grupo.
Esto parece ser producto de la necesidad de pam_cap de "quitar" los privilegios del proceso de autenticación, que probablemente tiene "toda" la capacidad, o la suficiente para convertirse en tal. Esto crea una propensión a que parezca imprudente tener asignaciones aditivas acumulativas, ya que podría convertirse rápidamente en una "estructura incontrolable". Por tanto, las asignaciones realizadas a través de capacidad.conf no son acumulativas. Si aciertas una cerilla, eso es lo que obtienes. Ni mas ni menos.
Con eso dicho:
es posible configurar pam_cap para cargar capacidades desde un archivo arbitrario en el formato /etc/security/capability.conf
es posible utilizar scripts dentro de una configuración pam. Sería razonablemente trivial generar un archivo capacitity.conf por usuario para el usuario que se autentica, en función de su membresía en el grupo y enviarlo al módulo pam_cap.
No es "elegante" ni "ideal", pero para una gran base de usuarios tipo ldap probablemente sea más comprobable que la "sincronización a través de Jellyware de capa 8" entre usuarios válidos y una entrada de texto completo por usuario en un solo /etc. /security/capability.conf.