Mon problème: j'ai un programme Python, et l'utilisateur le lance en utilisant sudo
. Parfois, je dois rentrer chez l'utilisateur, et je ne peux le faire qu'en connaissant son nom:
import pwd
pwd.getpwnam(username)
Alors: comment puis-je obtenir le nom de l'utilisateur qui a lancé le programme?
sudo
laisse laHOME
variable d'environnement intacte (elle peut être remplacée lors de la compilation ou de l'exécution). Mais vous pouvez ou non être en mesure d'utiliser la variable d'environnement, selon ce que vous voulez faire si l'utilisateur spécifie une valeur différente pourHOME
(que faire si bob s'exécuteHOME=/home/joe sudo your_script
?). Vous devriez probablement définir votre euid sur l'utilisateur appelant (donné parSUDO_UID
) avant de faire un accès au système de fichiers (en dehors de ce qui nécessite réellement l'autorisation root dans votre script).euid
àSUDO_UID
.Réponses:
Lorsque vous lancez quelque chose avec
sudo
un couple de variables d'environnement définies, je pense que vous recherchez spécifiquementSUDO_UID
. Celles-ci devraient être accessibles à tout programme fonctionnant via les canaux habituels d'accès aux variables d'environnement.Vous pouvez voir les autres choses en trichant comme ça depuis un shell:
sudo env | grep SUDO
la source
SUDO_UID
etSUDO_USER
. Merci encore.SUDO_USER
était exactement ce que je cherchais.