Running Python script as root (with sudo) - what is the username of the effective user?

后端 未结 3 442
再見小時候
再見小時候 2020-12-29 09:00

I\'ve recently began using ConfigParser() for my python scripts to add some functionality to them for config files. I know how to use it but I have a problem. My script need

3条回答
  •  梦谈多话
    2020-12-29 09:41

    If you run your script with sudo (sudo myscript.py) then the environment variable $USER will be root and the environment variable $SUDO_USER will be the name of the user who executed the command sudo myscript.py. This following is simply a clarification of the previous post by Cédric Julien. Consider the following scenario:

    A linux user bob is logged into the system and possesses sudo privileges. He writes the following python script named myscript.py:

        #!/usr/bin/python
        import os
        print os.getenv("USER")
        print os.getenv("SUDO_USER")
    

    He then makes the script executable with chmod +x myscript.py and then executes his script with sudo privileges with the command:

    sudo ./myscript.py

    The output of that program will be (using python 2.x.x):

        root
        bob
    

    If bob runs the program sans sudo privileges with

    ./myscript.py

    he will get the following output:

        bob
        None
    

提交回复
热议问题