Search code examples
pythonpygtk

authentication in python script to run as root


I am doing a project in Linux at system level in Python. So that, I want to know that if i am running my code as a normal user and if i am accessing system files then it should have root permissions for it, then how can i prompt for root password and run further code as superuser. I want to know that, how to run python script as superuser with password prompt for it..

Any help will be appreciated. Thank you in advance..


Solution

  • The other thing you can do is have your script automatically invoke sudo if it wasn't executed as root:

    import os
    import sys
    
    euid = os.geteuid()
    if euid != 0:
        print "Script not started as root. Running sudo.."
        args = ['sudo', sys.executable] + sys.argv + [os.environ]
        # the next line replaces the currently-running process with the sudo
        os.execlpe('sudo', *args)
    
    print 'Running. Your euid is', euid
    

    Output:

    Script not started as root. Running sudo..
    [sudo] password for bob:
    Running. Your euid is 0
    

    Use sudo -k for testing, to clear your sudo timestamp so the next time the script is run it will require the password again.