Esto no responde la pregunta directamente, pero no creo que se haga la pregunta correcta aquí. Me parece que el autor de la pregunta quiere un programa que presumiblemente actuará de manera diferente si tiene ciertos permisos o no, sin embargo, diría que buscar sudo no es la forma de hacerlo. En primer lugar, muchos sistemas pueden no implementar un "sudo", de ninguna manera se requiere en Linux o en muchos Unix.
Por ejemplo, un usuario puede haber iniciado sesión como root ya, lo que hace que el sudo sea absurdo o tal vez el sistema tenga usuarios no root que aún tengan capacidades para realizar la tarea administrativa que el programa desee realizar. Finalmente, tal vez el sistema no tiene root o sudo en absoluto y en su lugar utiliza un sistema de control de acceso obligatorio con diferentes capacidades y no atrapa a todos los superusuarios en los que sudo. O el usuario podría suudirse, pero en una cuenta que tiene permisos sin su propia cuenta por razones de seguridad (a menudo ejecuto código no confiable con un usuario temporal sin privilegios que solo puede escribir en ramdisks para cancelar, no aumentar mis permisos ) En general, es una mala idea asumir un modelo de permisos específico como sudo o la existencia de root o asumir que un usuario sudoed tiene privilegios particulares.
Si desea averiguar si tiene permisos para realizar una operación, la mejor manera es simplemente intentarlo y luego verificar si no hay problemas de permisos si falla o si se trata de una operación de varias etapas que debe fallar o tener éxito. puede verificar si una operación funcionará con funciones como la función de acceso POSIX (tenga cuidado con las posibles condiciones de carrera aquí si los permisos se cambian activamente)
Si además necesita conocer al usuario real detrás del sudo, puede usar la función getlogin que debería funcionar para cualquier sesión interactiva con un terminal subyacente y le permitiría, por ejemplo, encontrar quién está 'realmente' ejecutando el comando para auditar o encontrar el directorio de inicio del usuario real para guardar registros.
Finalmente, si lo que realmente quiere es averiguar si un usuario tiene acceso de root (sigue siendo una mala idea pero menos específica de implementación) puede usar getuid para verificar un uid de 0 y, por lo tanto, root.