繁体   English   中英

从浏览器中的Python子进程调用Shell脚本时,权限被拒绝

[英]Permission Denied when Calling Shell Script from a Python Subprocess in Browser

我正在通过ajax调用来调用python脚本

$.ajax({
        url: "http://localhost/username/test.py",
        type: "post",
        data: JSON.stringify({'param':{"hello":"world"}}),
        dataType: "json",
        success: function(response) {
        console.log(response);
        },
        error: function(error) {
        console.log(error);
        }
    });

python脚本开始(已经设置了conf文件并运行了apache服务器),但是随后python脚本应该遍历一堆调用各种shell文件的子进程调用。 像这样:

for line in reader:
    var=line["A"]
    var2=var[:-4]
    var3=line["B"]
    print(var2)
    subprocess.call(["sh","dummy.sh",var,var2,var3])

相同的python脚本在终端中可以正常工作。 但是,当我通过Web浏览器运行时,在浏览器中获得了500错误的权限。 进入apache日志,向我显示其遇到权限错误

[2015年7月23日星期四18:13:55.958161] [cgi:error] [pid 19878] [客户端:: 1:54132] AH01215:dummy.sh:第37行:inputFile.xml:权限被拒绝,引用者: http://本地主机/用户名/

如何传递权限? 还是我在这里做错了什么?

我假设当您在终端上运行python脚本时,它会以您的用户ID作为进程运行。 如果您可以这样做打开输入文件,则很可能是权限问题。

apache进程只是没有足够的权限来打开文件。

我建议:

  • 检查文件的所有者和权限-确保Apache进程userID可读。 这要求文件至少具有读取权限,即。 -rw-r--r--(chmod 644)。

  • 另外,请不要忘记目录路径的权限和/或所有权。 例如。 如果文件位于/home/foo/bar/inputFile.xml中,则需要检查Apache用户可以访问整个路径/ home / foo / bar。 这至少需要目录上的drwx--x--x(chmod 711)。

感谢Maelstrom,Revolt和rici。 inputFile.xml实际上是在dummy.sh中创建的,然后dummy.sh中的其他步骤在inputFile.xml上进行。 我还期望,由于我已经赋予了文件夹755访问权限中的其他文件,因此限制了这些新形成的xml文件。 如何确保由dummy.sh创建的所有文件都具有可以执行的足够权限? 非常感谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM