Mi problema: tengo un programa Python y el usuario lo inicia usando sudo
. A veces tengo que acceder a la casa del usuario, y puedo hacerlo solo sabiendo su nombre:
import pwd
pwd.getpwnam(username)
Entonces: ¿cómo puedo obtener el nombre del usuario que lanzó el programa?
sudo
deja laHOME
variable de entorno intacta (esto puede anularse en tiempo de compilación o ejecución). Pero puede o no puede usar la variable de entorno, dependiendo de lo que quiera que suceda si el usuario especifica un valor diferente paraHOME
(¿qué pasa si se ejecuta bobHOME=/home/joe sudo your_script
?). Probablemente debería configurar su euid para el usuario llamante (dado porSUDO_UID
) antes de hacer cualquier acceso al sistema de archivos (aparte de lo que realmente requiere permiso de root en su script).euid
aSUDO_UID
.Respuestas:
Cuando disparas algo con
sudo
un par de variables de entorno configuradas, específicamente creo que estás buscandoSUDO_UID
. Estos deben ser accesibles para cualquier programa que se ejecute a través de los canales habituales de acceso a las variables de entorno.Puedes ver las otras cosas establecidas haciendo trampas como esta desde un shell:
sudo env | grep SUDO
fuente
SUDO_UID
ySUDO_USER
. Gracias de nuevo.SUDO_USER
era exactamente lo que estaba buscando.