subprocess.Popen需要什么权限?
下面的代码: - 可能需要什么subprocess.Popen需要什么权限?
gb = self.request.form['groupby']
typ = self.request.form['type']
tbl = self.request.form['table']
primary = self.request.form.get('primary', None)
if primary is not None:
create = False
else:
create = True
mdb = tempfile.NamedTemporaryFile()
mdb.write(self.request.form['mdb'].read())
mdb.seek(0)
csv = tempfile.TemporaryFile()
conversion = subprocess.Popen(("/Users/jondoe/development/mdb-export", mdb.name, tbl,),stdout=csv)
在OS X打电话时的最后一行,即“转换=”
Traceback (innermost last):
Module ZPublisher.Publish, line 119, in publish
Module ZPublisher.mapply, line 88, in mapply
Module ZPublisher.Publish, line 42, in call_object
Module circulartriangle.mdbtoat.mdb, line 62, in __call__
Module subprocess, line 543, in __init__
Module subprocess, line 975, in _execute_child
OSError: [Errno 13] Permission denied
我已经试过chmod 777 /Users/jondoe/development/mdb-export
导致这个错误?
似乎'权限被拒绝的错误'最初来自Popen试图从错误的位置执行mdb-export(并以错误的权限复合事物)。
如果安装mdbtools,下面的工作正常,并继承了正确的权限,而不需要使用sudo等
subprocess.Popen(("mdb-export", mdb.name, tbl,),stdout=csv)
(值得注意的是,我让自己陷入到了一段混乱,已经忘记了POPEN是在文件夹中打开可执行文件,没有文件夹或非exectable文件)
感谢您的回复,他们都有趣的阅读使无论:)
您还需要确保在链上的目录 -/Users,/ Users/jondoe和/ Users/jondoe/development上运行该代码的用户的读取和执行权限。
你可以提供“sudo”到子进程吗?看到这个SO thread。
@乔恩哈德利,从解释:
>>> import subprocess
>>> p = subprocess.call(['sudo','/usr/bin/env'])
PASSWORD:
[snip]
USER=root
USERNAME=root
SUDO_COMMAND=/usr/bin/env
SUDO_USER=telliott99
SUDO_UID=501
SUDO_GID=20
从在OS X上的终端,我要做的须藤当我运行该脚本:
$ sudo python test.py
那么这(在test.py )给出与以前相同的输出:
import subprocess
p = subprocess.Popen('/usr/bin/env')
获取子进程直接处理脚本的身份验证是probabl你不是一个好主意,因为它隐藏了特权升级。但你可以看看pexpect和这个SO answer。
试一试。有没有办法查看我的Python进程正在运行的用户? – 2010-01-18 16:49:35
@Jon Hadley >>> import os >>> os.getenv('USER') 'telliott99' – telliott99 2010-01-18 17:49:42
假设在父文件夹的权限是正确的(即所有父文件夹应该有+ X许可),试着加入:
shell=True
到POPEN命令,例如:
subprocess.Popen(("/Users/jondoe/development/mdb-export", mdb.name, tbl,), stdout=csv, shell=True)
它适用于subprocess.check_output,谢谢! – jedema 2015-09-04 10:01:09
这是我的问题,谢谢! – Anentropic 2016-02-15 10:44:51
我做了根另一个文件夹/ MDB出口(没”花哨的设置chmod 777 on/Users)并chmod'ed到777.同样的错误仍然存在。 – 2010-01-15 07:28:42