Python subprocess.check_输出忽略euid

Python subprocess.check_输出忽略euid,python,subprocess,python-3.5,setuid,Python,Subprocess,Python 3.5,Setuid,我有以下bash脚本: echo "$(id -u)" mkdir test 我自己的用户id是1000。现在,当我在没有root权限的情况下运行python3.5并通过子流程调用脚本时。检查\u output脚本将按预期工作,并创建一个属于我的文件夹。 然而,当我用sudo启动python,然后使用os.setegid(1000);setuid(1000),脚本输出0,文件夹“test”归root所有。虽然我知道echo“$(id-u)”可能是理想的行为,但我不明白为什么这个文件夹归root

我有以下bash脚本:

echo "$(id -u)"
mkdir test
我自己的用户id是1000。现在,当我在没有root权限的情况下运行python3.5并通过
子流程调用脚本时。检查\u output
脚本将按预期工作,并创建一个属于我的文件夹。 然而,当我用sudo启动python,然后使用
os.setegid(1000);setuid(1000)
,脚本输出0,文件夹“test”归root所有。虽然我知道
echo“$(id-u)”
可能是理想的行为,但我不明白为什么这个文件夹归root所有。
os.seteuid()
函数不应该阻止这种情况吗

我的确切电话是:

>>> os.setegid(1000)
>>> os.seteuid(1000)
>>> subprocess.check_output(["/.script.sh"])

这导致文件夹“test”归root所有。这是否是所需的行为?如果是,我是否可以以普通用户的身份启动脚本,同时仍然能够返回python脚本中的根权限(即,不设置“真实”uid?

setegid
仅设置脚本的有效组id。我也是

check\u output
生成一个新进程,该进程显然仍然以root用户身份运行。 如果您尝试创建文件夹而不是进行剥离,您可能会更幸运,但我认为这是一个简化的示例,因此可能不合适。是否可以以预期用户的身份运行python脚本?如果不是的话,你可能需要这样做

subprocess.check_output(["sudo", "-uexpected_user", "./script.sh"])