gpt4 book ai didi

python - 特权子进程在错误的工作目录中启动

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:01 24 4
gpt4 key购买 nike

我正在尝试使用 subprocess.Popen 从另一个非特权脚本启动一些 python 脚本。在大多数情况下工作良好,但需要 root 权限的那些不起作用,我已将问题缩小到 pkexec,即不停留在工作目录也不接受它作为参数,那是因为这:

subprocess.Popen(['kdesudo','pwd'],cwd=sys.path[0])
#also works with sudo

有效地打印 cwd,而:

subprocess.Popen(['pkexec','pwd'],cwd=sys.path[0])

始终位于/root。 (也尝试传递 env=os.environ 无济于事)我需要用 gui 提示用户,以及 pkexec 通过 kdesudo/gksu 提供的可移植性。有什么想法吗?

编辑:由于无法更改 pkexec 的工作目录,以下内容可用于提示用户跨 gtk 和 kde 环境输入 root 密码:

try:
check_call('which gksu',shell=True)
sudo = 'gksu'
except:
print "gksu frontend not found, using kdesudo instead"
sudo = 'kdesudo'
prompt = Popen([sudo, '<privileged command/script to run>'])

最佳答案

没有办法让 pkexec 在调用它的命令时保留旧目录,因为它 always changes to the target user's home directory .

它更改为 pw->pw_dir,这是目标用户的主目录,对此没有覆盖。

我看不到这方面的书面原因,但这可能只是试图确保执行该程序的用户可以访问其当前工作目录的简单问题。它自 pkexec 创建以来就一直存在,我没有看到与此行为相关的任何错误。

关于python - 特权子进程在错误的工作目录中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35972599/

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