gpt4 book ai didi

python - subprocess.check_output 忽略 euid

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:20 26 4
gpt4 key购买 nike

我有以下 bash 脚本:

echo "$(id -u)"
mkdir test

我自己的用户id是1000。现在,当我在没有root权限的情况下运行python3.5并通过subprocess.check_output调用脚本时该脚本按预期工作并创建一个属于我的文件夹。但是,当我使用 sudo 启动 python 然后使用 os.setegid(1000); os.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 脚本中的 root 权限(即不设置“真实”uid?)

最佳答案

setegid 仅设置current process的有效组ID 。与 seteuid 相同.

check_output 生成一个新进程,该进程显然仍以 root 身份运行。如果您尝试创建文件夹using python,您可能会更幸运。而不是花钱去做这件事,但我想这是一个简化的例子,所以可能不合适。是否可以以预期用户的身份运行 python 脚本?如果没有,你可能需要做这样的事情;

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

关于python - subprocess.check_output 忽略 euid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47067013/

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