Thursday, November 18, 2010

seteuid

# ps axjf|grep -v grep|grep ftp
    1 13871 13871 13871 ?           -1 Ss       0   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
13871 14146 14146 14146 ?           -1 Ss      99   0:00  \_ /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
14146 14148 14146 14146 ?           -1 S      509   0:00      \_ /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf


id是99进程可以产生id为509的进程, 原来fork后, 子进程还是可以调用seteuid切到其它uid的, 这之前还不知道。 如下测试代码:

#!/usr/bin/python
#coding:utf-8

import os
import time

# 同一进程可以从0转成其它的
os.seteuid(99)
os.seteuid(0)

os.seteuid(99)
pid = os.fork()
# child
if pid == 0:
    # 子进程还是可以使用seteuid回到0的
    os.seteuid(0)
    time.sleep(10)
else:
    print pid
    time.sleep(10)

运行结果:

[jessinio@niowork tmp]$ ps axuf|grep root.py
nobody   28559  0.0  0.0  74192  2912 pts/11   T    13:56   0:00  |   \_ python root.py
root     28560  0.0  0.0  74188  1756 pts/11   T    13:56   0:00  |   |        \_ python root.py


No comments:

Post a Comment

Note: Only a member of this blog may post a comment.