How do I add users using Python scripts on a Linux machine

Sebastian 'lunar' Wiesner basti.wiesner at gmx.net
Tue Jan 2 11:17:37 EST 2007


Ravi Teja <webraviteja at gmail.com> typed

> 
> Ivan Voras wrote:
>> Ramdas wrote:
>> > Well,
>> >
>> > I need to add users from a web interface for a web server, which
>> > runs only Python. I need to add users, set quotas and in future
>> > even look at managing ip tables to limit bandwidth.
>> >
>> > I know os.system(), but this has to be done through a form entry
>> > through a web interface.
>> >
>> > Anyways thanks, do advise if there more pythonic solutions
>>
>> What you're looking for is actually a pretty complex thing. You
>> *could* in theory manage /etc/passwd (and its "shadow" file) - you
>> can find crypto primitives like MD5 and DES on the 'net, but note
>> that you must run your script under the 'root' account in order to
>> write (and even read!) the passwd database. The same goes for using
>> os.system and the built-in OS utility. Be aware of security
>> implications if you're running your web server under the root
>> account.
> 
> How about invoking scripts with SUID root set?

Linux seems to ignore SUID bit on scripts:

[lunar at nargond]-[17:03:23] >> ~/test
--> cat uidtest.py
#!/usr/bin/python
import os

print 'uid:', os.getuid()
print 'effective uid:', os.geteuid()
os.system('whoami')

[lunar at nargond]-[17:03:28] >> ~/test
--> ls -l uidtest.py
-rwsr-xr-x 1 root root 112 2007-01-02 17:03 uidtest.py

[lunar at nargond]-[17:03:46] >> ~/test
--> /home/lunar/test/uidtest.py
uid: 1000
effective uid: 1000
lunar

Anyway, you should definitely think about security issues. Not all
people out there are friendly...

-- 
Freedom is always the freedom of dissenters.
                                      (Rosa Luxemburg)



More information about the Python-list mailing list