gpt4 book ai didi

python - 在 python 脚本中以不同的用户身份执行 'ls' 命令

转载 作者:行者123 更新时间:2023-11-28 22:05:10 24 4
gpt4 key购买 nike

亲们,这是我正在尝试做的事情:我的脚本将以 root 身份运行,我希望以不同的用户身份执行各种命令(比如 ls、rm、touch 等)。

我遇到的问题是,使用 preexec_fn=os.setuid(userid)) 也会设置父进程的用户 ID。请提出建议? preexec_fn 是实现此目的的错误方法吗?还要注意的是,这需要以扭曲的方式进行(我可能不是)。 getProcessOutputAndValue 是要走的路吗?如果是这样,如何做这样的事情?

print 'uid is %s' % os.getuid()
cmdstr = ['ls']
process = subprocess.Popen(cmdstr,stdout=subprocess.PIPE, stderr=subprocess.STDOUT, preexec_fn=os.setuid(10033))
print 'uid of parent after child startup is %s' % os.getuid()
process.wait()
print 'uid of parent after child finished is %s' % os.getuid()

输出:

uid is 0
uid of parent after child startup is 10033
uid of parent after child finished is 10033

最佳答案

您的问题是,当您只是试图将回调传递给 Popen 时,您不小心调用了 preexec_fn。

试试这个:

def my_preexec_fn():
os.setuid(10033)
process = subprocess.Popen(cmdstr,stdout=subprocess.PIPE, stderr=subprocess.STDOUT, preexec_fn=my_preexec_fn)

关于python - 在 python 脚本中以不同的用户身份执行 'ls' 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5602199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com