No hay realmente una respuesta correcta a esta pregunta. Es un intercambio entre seguridad y usabilidad.
ejecutar el comando con pkexec cada vez (lo que quiero evitar para la experiencia del usuario);
Si la audiencia deseada no tiene "CLIphobia", sudo
podría ser realmente genial aquí si "cada vez" esté dentro de los 15 minutos.
Pero desde un punto de vista de seguridad, recomendaría pkexec. Supongo que se puede confiar ya que viene preinstalado con la distro, a diferencia de algunos envoltorios o demonios setuid rápidamente pirateados.
ya que el indicador está en python, podría tener un binario con el conjunto de bits setuid escrito en C. Sin embargo, me han dicho que este enfoque está mal visto;
El único problema que he escuchado de los envoltorios setuid es que pueden sobrescribirse con un troyano si lo explotan, pero esto no es relevante para setuid-to- / root / binaries como cualquier vulnerabilidad. en un proceso que se ejecuta como root significa que estás jodido de todos modos.
El único problema que he experimentado tampoco se aplica a setuid-to- / root / binaries, fue así que no entendí todas las ID de usuario de Unix y olvidé configurar el usuario real. ID, ID de usuario guardada y sus equivalentes de ID de grupo, esto significa que un programa que / drops / privileges aún puede recuperarlos.
Podría haber otras razones por las que los envoltorios de setuid están mal vistos, pero no he oído hablar de ninguno. Si nadie más puede encontrar razones por las que los envoltorios de setuid son mal vistos, un envoltorio de setuid será una muy buena elección.
inicie un "proxy" que se ejecutará como root y solo realizará esa tarea específica, y el indicador se comunicará con ese "proxy"
Si crea un demonio para realizar la tarea, manténgalo tan simple como sea posible y asegúrese de que los usuarios no autorizados no puedan comunicarse con él.
Puedo pensar en dos opciones: (1) usar una contraseña que un cliente autorizado sabría, el demonio sabe y un cliente no autorizado no sabe. La contraseña debería almacenarse en un archivo con código 400 y propiedad de root.
(2) use los permisos de Unix en el socket para evitar que cualquier otro usuario local intente (ab) usar el demonio.
enlace
La opción dos puede considerarse menos segura y más inconsistente en UX. Es posible que el usuario no entienda por qué no funcionará cuando haya iniciado sesión como un usuario diferente, lo que es realmente malo cuando sucede.