gpt4 book ai didi

python - 使用 "subprocess.call()"时真实有效用户发生变化

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

先决条件:

  • python2.6
  • GNU Linux

我对“subprocess.call”行为和保护 http 服务器有一些疑问。

以下代码示例在不使用/使用 shell 方面有所不同:

1

sudo python -c "from subprocess import call; from os import setreuid, setregid; setreuid(1000,0); setregid(1000,0); call(['touch','./aaa'])"

生成一个由“root”拥有的文件。

2

sudo python -c "from subprocess import call; from os import setreuid, setregid; setreuid(1000,0); setregid(1000,0); call('touch ./aaa', shell=True)"

生成用户 1000 拥有的文件。

问题:

在第一种情况下生成有效用户拥有的文件而在第二种情况下生成真实用户拥有的文件的原因是什么?

python2.6(无“setresuid”)中是否有一种方法可以在 python 代码中临时(安全地)更改用户?

使用特权有效用户进行临时真实用户更改以提高/降低权限是否安全?

最佳答案

当您的 /bin/shbash 时,可能会发生这种情况,因为 bash 将有效用户 ID 设置为真实用户 ID,除非 -p 选项在启动时给出。

这在 documentation 中有描述。 :

If Bash is started with the effective user (group) id not equal to the real user (group) id, and the -p option is not supplied, no startup files are read, shell functions are not inherited from the environment, the SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE variables, if they appear in the environment, are ignored, and the effective user id is set to the real user id. If the -p option is supplied at invocation, the startup behavior is the same, but the effective user id is not reset.

关于python - 使用 "subprocess.call()"时真实有效用户发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32572603/

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