sudo
proporciona algunas variables de entorno para ayudarle con exactamente este caso:
SUDO_UID Set to the user ID of the user who invoked
sudo
SUDO_USER Set to the login of the user who invoked sudo
steveayre ha señalado en los comentarios que el usuario puede establecer estas variables de entorno en algunos casos; sudo(8)
la página de manual incluye en parte:
The sudoers policy subjects variables
passed on the command line to the same restrictions as normal
environment variables with one important exception. If the
setenv option is set in sudoers, the command to be run has the
SETENV tag set or the command matched is ALL, the user may set
variables that would otherwise be forbidden. See sudoers(5)
for more information.
así que asegúrese de que no otorga ALL
comandos para los usuarios cuando es necesario confiar en esta función.
Realmente odio usar variables de entorno, ¿hay alguna otra manera? (la razón principal por la que odio usarlos es porque no son confiables: desde un POV de seguridad o un POV de compatibilidad) – chacham15
Las variables de entorno deben ser confiables: debes confiar completamente en 'sudo' para usarlo de esta manera.Cualquier ataque contra 'sudo' que permita a los usuarios de poca confianza ejecutar programas con variables de entorno modificadas va a atraer la atención de docenas de equipos de seguridad de todo el mundo para corregir el error (o eliminar la característica si no puede solucionarse). En cuanto a la compatibilidad, es más portátil que la otra opción en la que acabo de pensar, respondida por separado para sus propios comentarios. Y esto es probablemente más seguro que escribir su propio programa raíz de setuid. – sarnold
El problema de seguridad al que me refiero proviene de otros programas que se ejecutan en el sistema o de un código de complemento que puede modificar las variables de entorno. Pero dado que la otra solución no funciona, probablemente termine yendo con esto y almacenando en caché la variable al iniciar el programa (así que espero que nadie lo modifique antes). – chacham15