Impersonate another user temporarily (Unix and Windows)

Tim Golden mail at timgolden.me.uk
Thu Aug 23 04:38:13 EDT 2007


billiejoex wrote:
> Hi there. I'm writing a modification for a FTP server library I'm
> maintaining.
> Depending on the system I'd want to temporarily impersonate the logged
> user to perform actions on filesystem.
> Something like:
> 
> try:
>     change_user('user', 'password')
>     os.rmdir('dir')
> except:
>     print "some error"
> finally:
>     change_user('old_user', 'password')
> 
> On Unix I took at look at os.seteuid() and os.setegid() functions and
> I noticed they could be useful for my purpose.
> On Windows I have no idea about how could I emulate a similar
> behaviour.
> Could someone please point me in the right direction?

(Warning: not tried, but at least gives you the things to Google for!)

You need the win32security module from the pywin32 extensions. [1]
In particular, you want to look at the LogonUser and
ImpersonateLoggedOnUser functions.

TJG

[1] http://pywin32.sf.net



More information about the Python-list mailing list