By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,995 Members | 1,086 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,995 IT Pros & Developers. It's quick & easy.

Setting up a new user and environment from within a python script

P: n/a
Hello,

I have written a script that uses environment variables set during
a particular users login in ".bash_profile" and ".profile".

I have changed to that users uid and gid in my python script using:

import os
os.setegid
os.setgid
os.seteuid
os.setuid

but I still am not picking up the needed environment. When I run:
os.environ I can see that I still have the environment of the user
that owns the python script.

I would like to maintain the original script owner but somehow pick up
the
correct environment for the targeted user. Several options looked to
create
an environment in a sub-process which I don't think is the correct
solution.

I could of course cut and paste the values from ".bash_profile" &
".profile"
but figured there is probably a better, cleaner way to do the same.

Searched this forum with no luck and checked several python
references.

What is the best practice to achieve this goal?

Thanks, Henry Hollenberg
Feb 7 '08 #1
Share this Question
Share on Google+
2 Replies


P: n/a
On Feb 7, 11:15 am, Henry Hollenberg <h...@rcwm.comwrote:
Hello,

I have written a script that uses environment variables set during
a particular users login in ".bash_profile" and ".profile".

I have changed to that users uid and gid in my python script using:

import os
os.setegid
os.setgid
os.seteuid
os.setuid

but I still am not picking up the needed environment. When I run:
os.environ I can see that I still have the environment of the user
that owns the python script.

I would like to maintain the original script owner but somehow pick up
the
correct environment for the targeted user. Several options looked to
create
an environment in a sub-process which I don't think is the correct
solution.

I could of course cut and paste the values from ".bash_profile" &
".profile"
but figured there is probably a better, cleaner way to do the same.

Searched this forum with no luck and checked several python
references.

What is the best practice to achieve this goal?

Thanks, Henry Hollenberg
Since you're running the python script as root (the only we seteuid
would work) you could call the script using "su" and rely on it to set
the user's environment:

su - otherusername /path/to/your/script

Other than that, the alternatives are to parse the user's dot files
and set the appropriate env variables from within your script, but
that approach is fraught with problems.

Hope that helps a little.

e.
Feb 7 '08 #2

P: n/a
On Feb 7, 3:30 pm, ericbrun...@gmail.com wrote:
On Feb 7, 11:15 am, Henry Hollenberg <h...@rcwm.comwrote:
Hello,
I have written a script that uses environment variables set during
a particular users login in ".bash_profile" and ".profile".
I have changed to that users uid and gid in my python script using:
import os
os.setegid
os.setgid
os.seteuid
os.setuid
but I still am not picking up the needed environment. When I run:
os.environ I can see that I still have the environment of the user
that owns the python script.
I would like to maintain the original script owner but somehow pick up
the
correct environment for the targeted user. Several options looked to
create
an environment in a sub-process which I don't think is the correct
solution.
I could of course cut and paste the values from ".bash_profile" &
".profile"
but figured there is probably a better, cleaner way to do the same.
Searched this forum with no luck and checked several python
references.
What is the best practice to achieve this goal?
Thanks, Henry Hollenberg

Since you're running the python script as root (the only we seteuid
would work) you could call the script using "su" and rely on it to set
the user's environment:

su - otherusername /path/to/your/script

Other than that, the alternatives are to parse the user's dot files
and set the appropriate env variables from within your script, but
that approach is fraught with problems.

Hope that helps a little.

e.
Right you are. Running it as a cron job. I'll try that trick in
our cron.daily script. Just figured since you can change to another
user from inside python their would be a way to change to another
user's environment as well....ie something comparable to:
source .profile in bash

Thanks hgh.
Feb 7 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.